From c9c07f8e6897723c5b642c329e81d761cb6a9f70 Mon Sep 17 00:00:00 2001 From: krasimir Date: Wed, 26 Nov 2008 21:21:23 +0000 Subject: initial Slavic grammar, shared between Bulgarian and Russian --- next-lib/src/russian/CatRus.gf | 6 +----- next-lib/src/russian/DiffRus.gf | 9 +++++++++ next-lib/src/russian/LangRus.gf | 2 +- next-lib/src/russian/NounRus.gf | 9 ++++----- next-lib/src/russian/ParadigmsRus.gf | 4 ++-- next-lib/src/russian/ResRus.gf | 6 +----- 6 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 next-lib/src/russian/DiffRus.gf (limited to 'next-lib/src/russian') diff --git a/next-lib/src/russian/CatRus.gf b/next-lib/src/russian/CatRus.gf index 8b364388e..97c7522ee 100644 --- a/next-lib/src/russian/CatRus.gf +++ b/next-lib/src/russian/CatRus.gf @@ -1,6 +1,6 @@ --# -path=.:../abstract:../common:../../prelude -concrete CatRus of Cat = CommonX ** open ResRus, Prelude in { +concrete CatRus of Cat = CommonX ** CatSlavic with (ResSlavic = ResRus) ** open ResRus, Prelude, (R = ParamX) in { flags optimize=all_subs ; coding=utf8 ; @@ -44,7 +44,6 @@ concrete CatRus of Cat = CommonX ** open ResRus, Prelude in { -- Noun - CN = {s : NForm => Str; g : Gender; anim : Animacy} ; NP = { s : PronForm => Str ; n : Number ; p : Person ; g: PronGen ; anim : Animacy ; pron: Bool} ; Pron = { s : PronForm => Str ; n : Number ; p : Person ; @@ -89,9 +88,6 @@ concrete CatRus of Cat = CommonX ** open ResRus, Prelude in { A2 = A ** Complement ; -- Substantives moreover have an inherent gender. - N = {s : NForm => Str; g : Gender; anim : Animacy} ; - N2 = {s : NForm => Str; g : Gender; anim : Animacy} ** Complement ; - N3 = {s : NForm => Str; g : Gender; anim : Animacy} ** Complement ** {s3 : Str; c2: Case} ; PN = {s : Case => Str ; g : Gender ; anim : Animacy} ; diff --git a/next-lib/src/russian/DiffRus.gf b/next-lib/src/russian/DiffRus.gf new file mode 100644 index 000000000..a29690e86 --- /dev/null +++ b/next-lib/src/russian/DiffRus.gf @@ -0,0 +1,9 @@ +instance DiffRus of DiffSlavic = open CommonSlavic, Prelude in { + + param + PrepKind = PrepOther | PrepVNa; + Case = Nom | Gen | Dat | Acc | Inst | Prepos PrepKind ; + + NForm = NF Number Case ; + +} \ No newline at end of file diff --git a/next-lib/src/russian/LangRus.gf b/next-lib/src/russian/LangRus.gf index c3126dcfe..00a515c58 100644 --- a/next-lib/src/russian/LangRus.gf +++ b/next-lib/src/russian/LangRus.gf @@ -1,4 +1,4 @@ ---# -path=.:../abstract:../common:prelude +--# -path=.:../abstract:../common:../slavic:prelude concrete LangRus of Lang = GrammarRus, diff --git a/next-lib/src/russian/NounRus.gf b/next-lib/src/russian/NounRus.gf index 834f140c1..2e86d33ab 100644 --- a/next-lib/src/russian/NounRus.gf +++ b/next-lib/src/russian/NounRus.gf @@ -166,8 +166,8 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in { ComplN2 f x = { s = \\nf => case x.pron of { True => x.s ! (case nf of {NF n c => mkPronForm c No (Poss (gNum f.g n))}) ++ f.s ! nf ; - False => f.s ! nf ++ f.s2 ++ - x.s ! (case nf of {NF n c => mkPronForm f.c Yes (Poss (gNum f.g n))}) + False => f.s ! nf ++ f.c2.s ++ + x.s ! (case nf of {NF n c => mkPronForm f.c2.c Yes (Poss (gNum f.g n))}) }; g = f.g ; anim = f.anim @@ -177,11 +177,10 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in { -- There application starts by filling the first place. ComplN3 f x = { - s = \\nf => f.s ! nf ++ f.s2 ++ x.s ! (PF f.c Yes NonPoss) ; + s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! (PF f.c2.c Yes NonPoss) ; g = f.g ; anim = f.anim ; - s2 = f.s3 ; - c = f.c2 + c2 = f.c3 ; } ; diff --git a/next-lib/src/russian/ParadigmsRus.gf b/next-lib/src/russian/ParadigmsRus.gf index 677a92639..17171cfdf 100644 --- a/next-lib/src/russian/ParadigmsRus.gf +++ b/next-lib/src/russian/ParadigmsRus.gf @@ -352,11 +352,11 @@ foreign = Foreign; -- +++ MG_UR: added +++ mkN2 : N -> Prep -> N2 = mkFun; } ; - mkFun : N -> Prep -> N2 = \f,p -> (UseN f) ** {s2 = p.s ; c = p.c}** {lock_N2 = <>} ; + mkFun : N -> Prep -> N2 = \f,p -> UseN f ** {c2 = p ; lock_N2 = <>} ; nullPrep : Prep = {s = []; c= Gen; lock_Prep=<>} ; - mkN3 f p r = (UseN f) ** {s2 = p.s ; c=p.c; s3=r.s ; c2=r.c; lock_N3 = <>} ; + mkN3 f p2 p3 = (UseN f) ** {c2 = p2; c3 = p3; lock_N3 = <>} ; mkPN = \ivan, g, anim -> diff --git a/next-lib/src/russian/ResRus.gf b/next-lib/src/russian/ResRus.gf index 9203f0bd7..78e6cb81f 100644 --- a/next-lib/src/russian/ResRus.gf +++ b/next-lib/src/russian/ResRus.gf @@ -7,7 +7,7 @@ -- implement $Test$, it moreover contains regular lexical -- patterns needed for $Lex$. -resource ResRus = ParamX ** open Prelude in { +instance ResRus of ResSlavic = ParamX, DiffRus, CommonSlavic ** open Prelude in { flags coding=utf8 ; optimize=all ; @@ -18,10 +18,6 @@ flags coding=utf8 ; optimize=all ; -- Some parameters, such as $Number$, are inherited from $ParamX$. param - Gender = Masc | Fem | Neut ; - Case = Nom | Gen | Dat | Acc | Inst | Prepos PrepKind ; - PrepKind = PrepOther | PrepVNa; - Animacy = Animate | Inanimate ; Voice = Act | Pass ; Aspect = Imperfective | Perfective ; RusTense = Present | PastRus | Future ; -- cgit v1.2.3