summaryrefslogtreecommitdiff
path: root/next-lib/src/russian
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2009-06-22 15:39:08 +0000
committeraarne <aarne@chalmers.se>2009-06-22 15:39:08 +0000
commite89fdae2fa1626348d8025824a7469252fa85e42 (patch)
treec7d46bbd0494043b4bd6f917a25a7687517d0547 /next-lib/src/russian
parent3049b59b35b25381a7c6787444165c200d66e08b (diff)
next-lib renamed to lib, lib to old-lib
Diffstat (limited to 'next-lib/src/russian')
-rw-r--r--next-lib/src/russian/AdjectiveRus.gf66
-rw-r--r--next-lib/src/russian/AdverbRus.gf24
-rw-r--r--next-lib/src/russian/AllRus.gf6
-rw-r--r--next-lib/src/russian/AllRusAbs.gf6
-rw-r--r--next-lib/src/russian/CatRus.gf99
-rw-r--r--next-lib/src/russian/ConjunctionRus.gf107
-rw-r--r--next-lib/src/russian/ExtraLexRus.gf74
-rw-r--r--next-lib/src/russian/ExtraRus.gf3
-rw-r--r--next-lib/src/russian/ExtraRusAbs.gf3
-rw-r--r--next-lib/src/russian/GrammarRus.gf17
-rw-r--r--next-lib/src/russian/IdiomRus.gf58
-rw-r--r--next-lib/src/russian/IrregRus.gf182
-rw-r--r--next-lib/src/russian/LangRus.gf10
-rw-r--r--next-lib/src/russian/LexiconRus.gf357
-rw-r--r--next-lib/src/russian/MorphoRus.gf1314
-rw-r--r--next-lib/src/russian/NounRus.gf258
-rw-r--r--next-lib/src/russian/NumeralRus.gf143
-rw-r--r--next-lib/src/russian/ParadigmsRus.gf470
-rw-r--r--next-lib/src/russian/PhraseRus.gf27
-rw-r--r--next-lib/src/russian/QuestionRus.gf72
-rw-r--r--next-lib/src/russian/RelativeRus.gf37
-rw-r--r--next-lib/src/russian/ResRus.gf385
-rw-r--r--next-lib/src/russian/SentenceRus.gf138
-rw-r--r--next-lib/src/russian/StructuralRus.gf130
-rw-r--r--next-lib/src/russian/SymbolRus.gf41
-rw-r--r--next-lib/src/russian/VerbRus.gf343
26 files changed, 0 insertions, 4370 deletions
diff --git a/next-lib/src/russian/AdjectiveRus.gf b/next-lib/src/russian/AdjectiveRus.gf
deleted file mode 100644
index 23336bb98..000000000
--- a/next-lib/src/russian/AdjectiveRus.gf
+++ /dev/null
@@ -1,66 +0,0 @@
-
---# -path=.:../abstract:../common:../../prelude
-
-
-concrete AdjectiveRus of Adjective = CatRus ** open ResRus, Prelude in {
-flags coding=utf8 ;
-
- lin
-
- PositA a = { s = a.s!Posit; p = False};
- -- Comparative forms are used with an object of comparison, as
- -- adjectival phrases ("больше тебя").
-
- ComparA bolshoj tu =
- {s = \\af => bolshoj.s ! Compar ! af ++ tu.s ! (mkPronForm Gen Yes NonPoss) ;
- p = True
- } ;
-
- ---- AR 17/12/2008
- UseComparA bolshoj =
- {s = \\af => bolshoj.s ! Compar ! af ;
- p = True
- } ;
-
- ---- AR 17/12/2008
- CAdvAP ad ap np = let adp = ad.s in { ---- should be ad.p
- s = \\af => ad.s ++ ap.s ! af ++ adp ++ np.s ! (mkPronForm Gen Yes NonPoss) ;
- p = True ----?
- } ;
-
- ---- AR 17/12/2008
- AdjOrd a = {
- s = a.s ;
- p = True ---- ?
- } ;
-
--- $SuperlA$ belongs to determiner syntax in $Noun$.
-
- ComplA2 vlublen tu =
- {s = \\af => vlublen.s !Posit! af ++ vlublen.c2.s ++
- tu.s ! (mkPronForm vlublen.c2.c No NonPoss) ;
- p = True
- } ;
-
- ReflA2 vlublen =
- {s = \\af => vlublen.s !Posit! af ++ vlublen.c2.s ++ sam.s ! vlublen.c2.c;
- p = True
- } ;
-
- SentAP vlublen sent=
- {s = \\af => vlublen.s ! af ++ [", "] ++ sent.s;
- p = True
- } ;
-
-
- AdAP ada ap = {
- s = \\af => ada.s ++ ap.s ! af ;
- p = True
- } ;
-
- UseA2 a = {
- s = \\af => a.s ! Posit ! af ;
- p = True
- } ;
-}
-
diff --git a/next-lib/src/russian/AdverbRus.gf b/next-lib/src/russian/AdverbRus.gf
deleted file mode 100644
index 4e283431d..000000000
--- a/next-lib/src/russian/AdverbRus.gf
+++ /dev/null
@@ -1,24 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
-concrete AdverbRus of Adverb = CatRus ** open ResRus, Prelude in {
-flags coding=utf8 ;
-
- lin
- PositAdvAdj a = {s = a.s !Posit! AdvF} ;
- ComparAdvAdj cadv a np = {
- s = cadv.s ++ a.s !Posit! AdvF ++ "чем" ++ np.s ! PF Nom No NonPoss
- } ;
- ComparAdvAdjS cadv a s = {
- s = cadv.s ++ a.s !Posit! AdvF ++ "чем" ++ s.s
- } ;
-
- PrepNP na stol = ss (na.s ++ stol.s ! PF na.c Yes NonPoss) ;
-
- AdAdv = cc2 ;
-
- SubjS = cc2 ;
-
- AdnCAdv cadv = {s = cadv.s ++ "чем"} ;
-
-}
-
diff --git a/next-lib/src/russian/AllRus.gf b/next-lib/src/russian/AllRus.gf
deleted file mode 100644
index 024ce67e1..000000000
--- a/next-lib/src/russian/AllRus.gf
+++ /dev/null
@@ -1,6 +0,0 @@
---# -path=.:../abstract:../common:prelude
-
-concrete AllRus of AllRusAbs =
- LangRus,
- ExtraRus
- ** {flags coding=utf8 ;} ;
diff --git a/next-lib/src/russian/AllRusAbs.gf b/next-lib/src/russian/AllRusAbs.gf
deleted file mode 100644
index eff645337..000000000
--- a/next-lib/src/russian/AllRusAbs.gf
+++ /dev/null
@@ -1,6 +0,0 @@
---# -path=.:../abstract:../common:prelude
-
-abstract AllRusAbs =
- Lang,
- ExtraRusAbs
- ** {} ;
diff --git a/next-lib/src/russian/CatRus.gf b/next-lib/src/russian/CatRus.gf
deleted file mode 100644
index e71eabf69..000000000
--- a/next-lib/src/russian/CatRus.gf
+++ /dev/null
@@ -1,99 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
-concrete CatRus of Cat = CommonX ** open ResRus, Prelude in {
-
- flags optimize=all_subs ; coding=utf8 ;
-
- lincat
-
--- Tensed/Untensed
-
- S = {s : Str} ;
- QS = {s : QForm => Str} ;
- RS = {s : GenNum => Case => Animacy => Str} ;
- SSlash = {s : Str; s2: Str ; c: Case} ;
-
--- Sentence
- -- clause (variable tense) e.g. "John walks"/"John walked"
- Cl ={s : Polarity => ClForm => Str} ;
- ClSlash = {s : Polarity => ClForm => Str; s2: Str; c: Case} ;
- Imp = { s: Polarity => Gender => Number => Str } ;
-
--- Question
-
- QCl = {s :Polarity => ClForm => QForm => Str};
- IP = { s : PronForm => Str ; n : Number ; p : Person ;
- g: PronGen ; anim : Animacy ; pron: Bool} ;
- IComp = {s : Str} ;
- IDet = Adjective ** {n: Number; g: PronGen; c: Case} ;
- IQuant = {s : Number => AdjForm => Str; g: PronGen; c: Case} ; -- AR 16/6/2008
-
--- Relative
-
- RCl = {s : Polarity => ClForm => GenNum => Case => Animacy => Str} ;
- RP = {s : GenNum => Case => Animacy => Str} ;
-
--- Verb
- -- Polarity =>
- Comp, VP = VerbPhrase ;
- VPSlash = VerbPhrase ** {sc : Str ; c : Case} ;
-
--- Adjective
-
- AP = {s : AdjForm => Str; p : IsPostfixAdj} ;
-
--- 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 ;
- g: PronGen ; pron: Bool} ;
-
--- Determiners (only determinative pronouns
--- (or even indefinite numerals: "много" (many)) in Russian) are inflected
--- according to the gender of nouns they determine.
--- extra parameters (Number and Case) are added for the sake of
--- the determinative pronoun "bolshinstvo" ("most");
--- Gender parameter is due to multiple determiners (Numerals in Russian)
--- like "mnogo"
--- The determined noun has the case parameter specific for the determiner
-
- Det = {s : AdjForm => Str; n: Number; g: PronGen; c: Case} ;
- Predet, Quant = {s : AdjForm => Str; g: PronGen; c: Case} ;
-
--- Numeral
-
- Num, Numeral, Card = {s : Case => Gender => Str ; n : Number} ;
- Digits = {s : Str ; n : Number} ; ----
-
--- Structural
--- The conjunction has an inherent number, which is used when conjoining
--- noun phrases: "Иван и Маша поют" vs. "Иван или Маша поет"; in the
--- case of "или", the result is however plural if any of the disjuncts is.
-
- Conj = {s1,s2 : Str ; n : Number} ;
- Subj = {s : Str} ;
- Prep = Complement ;
-
--- Open lexical classes, e.g. Lexicon
-
- V, VS, VV, VQ, VA = Verbum ; -- = {s : VerbForm => Str ; asp : Aspect } ;
- V2, V2A = Verbum ** {c2 : Complement} ;
- V2V, V2S, V2Q = Verbum ** {c2 : Complement} ; --- AR
- V3 = Verbum ** {c2,c3 : Complement} ;
--- VV = {s : VVForm => Str ; isAux : Bool} ;
-
- Ord = {s : AdjForm => Str} ;
- A = {s : Degree => AdjForm => Str} ;
- A2 = A ** {c2 : Complement} ;
-
- -- Substantives moreover have an inherent gender.
- N = {s : NForm => Str; g : Gender; anim : Animacy} ;
- N2 = {s : NForm => Str; g : Gender; anim : Animacy} ** {c2 : Complement} ;
- N3 = {s : NForm => Str; g : Gender; anim : Animacy} ** {c2,c3 : Complement} ;
- PN = {s : Case => Str ; g : Gender ; anim : Animacy} ;
-
-
-}
-
diff --git a/next-lib/src/russian/ConjunctionRus.gf b/next-lib/src/russian/ConjunctionRus.gf
deleted file mode 100644
index 783399ad0..000000000
--- a/next-lib/src/russian/ConjunctionRus.gf
+++ /dev/null
@@ -1,107 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
-concrete ConjunctionRus of Conjunction =
- CatRus ** open ResRus, Coordination, Prelude in {
-
- flags optimize=all_subs ; coding=utf8 ;
-
- lin
-
- ConjS = conjunctDistrSS ;
-
- ConjAdv = conjunctDistrSS ;
-
- ConjNP c xs =
- conjunctDistrTable PronForm c xs ** {n = conjNumber c.n xs.n ;
- p = xs.p ; pron = xs.pron ; anim = xs.anim ;
- g = xs.g } ;
-
-
- ConjAP c xs = conjunctDistrTable AdjForm c xs ** {p = xs.p} ;
-
- ---- AR 17/12/2008
- ConjRS c xs = conjunctDistrTable3 GenNum Case Animacy c xs ** {p = xs.p} ;
-
--- These fun's are generated from the list cat's.
-
- BaseS = twoSS ;
- ConsS = consrSS comma ;
- BaseAdv = twoSS ;
- ConsAdv = consrSS comma ;
-
-
- ConsNP x xs =
- consTable PronForm comma xs x **
- {n = conjNumber xs.n x.n ; g = conjPGender x.g xs.g ;
- anim = conjAnim x.anim xs.anim ;
- p = conjPerson xs.p x.p; pron = conjPron xs.pron x.pron} ;
-
- ConsAP x xs = consTable AdjForm comma xs x ** {p = andB xs.p x.p} ;
-
-
- BaseAP x y = twoTable AdjForm x y ** {p = andB x.p y.p} ;
-
- BaseNP x y = twoTable PronForm x y ** {n = conjNumber x.n y.n ;
- g = conjPGender x.g y.g ; p = conjPerson x.p y.p ;
- pron = conjPron x.pron y.pron ; anim = conjAnim x.anim y.anim } ;
-
- ---- AR 17/12/2008
- BaseRS x y = twoTable3 GenNum Case Animacy x y ** {c = y.c} ;
- ConsRS xs x = consrTable3 GenNum Case Animacy comma xs x ** {c = xs.c} ;
-
-
-
- lincat
- [S] = {s1,s2 : Str} ;
- [Adv] = {s1,s2 : Str} ;
- -- The structure is the same as for sentences. The result is either always plural
- -- or plural if any of the components is, depending on the conjunction.
- [NP] = { s1,s2 : PronForm => Str ; g: PronGen ;
- anim : Animacy ; n : Number ; p : Person ; pron : Bool } ;
- -- The structure is the same as for sentences. The result is a prefix adjective
- -- if and only if all elements are prefix.
- [AP] = {s1,s2 : AdjForm => Str ; p : Bool} ;
-
- ---- AR 17/12/2008
- [RS] = {s1,s2 : GenNum => Case => Animacy => Str} ;
-
-oper
-
--- We have to define a calculus of numbers of persons. For numbers,
--- it is like the conjunction with $Pl$ corresponding to $False$.
---
--- The following are given in $ParamX$.
---
--- conjNumber : Number -> Number -> Number = \m,n -> case <m,n> of {
--- <Sg,Sg> => Sg ;
--- _ => Pl
--- } ;
-
--- For persons, we let the latter argument win ("либо ты, либо я пойду"
--- but "либо я, либо ты пойдешь"). This is not quite clear.
-
--- conjPerson : Person -> Person -> Person = \_,p ->
--- p ;
-
--- For pron, we let the latter argument win - "Маша или моя мама" (Nominative case)
--- but - "моей или Машина мама" (Genetive case) both corresponds to
--- "Masha's or my mother"), which is actually not exactly correct, since
--- different cases should be used - "Машина или моя мама".
-
- conjPron : Bool -> Bool -> Bool = \_,p ->
- p ;
-
--- For gender in a similar manner as for person:
--- Needed for adjective predicates like:
--- "Маша или Оля - красивая", "Антон или Олег - красивый",
--- "Маша или Олег - красивый".
--- The later is not totally correct, but there is no correct way to say that.
-
- conjGender : Gender -> Gender -> Gender = \_,m -> m ;
- conjPGender : PronGen -> PronGen -> PronGen = \_,m -> m ;
-
- conjAnim : Animacy -> Animacy -> Animacy = \_,m -> m ;
-
-
-}
-
diff --git a/next-lib/src/russian/ExtraLexRus.gf b/next-lib/src/russian/ExtraLexRus.gf
deleted file mode 100644
index 9c33235fd..000000000
--- a/next-lib/src/russian/ExtraLexRus.gf
+++ /dev/null
@@ -1,74 +0,0 @@
---# -path=.:abstract:common
-concrete ExtraLexRus of ExtraLexRusAbs = CatRus **
- open ParadigmsRus in {
-flags
- coding=utf8 ;
-lin
---- bridge_N = mkN "мост" ;
---- candle_N = nSvecha "свеч" ; -- +++ MG_UR: added +++
---- citizen_N = nGrazhdanin "господ" ; -- +++ MG_UR: added +++
- daughter_N =
- {s = table {
- NF Sg Nom => "дочь" ;
- NF Sg Gen => "дочери" ;
- NF Sg Dat => "дочери" ;
- NF Sg Acc => "дочь" ;
- NF Sg Inst => "дочерью" ;
- NF Sg (Prepos _) => "дочери" ;
- NF Pl Nom => "дочери" ;
- NF Pl Gen => "дочерей" ;
- NF Pl Dat => "дочерям" ;
- NF Pl Acc => "дочерей" ;
- NF Pl Inst => "дочерьми" ;
- NF Pl (Prepos _) => "дочерях"
- } ;
- g = Fem ; anim = Animate
- } ;
-
---- desk_N = nStol "стол" ;
---- dictionary_N = nSlovar "словар" ;
---- fellow_N = nTovarish "товарищ" ; -- +++ MG_UR: added +++
---- flag_N = nVremja "зна" ;
---- heaven_N = nNebo "неб" ; -- +++ MG_UR: added +++
---- museum_N = nMusej "музе" ; -- +++ MG_UR: added +++
--- name_N = mkN "имя" "имени" "имени" "имя" "именем" "имени" "имени" "имена" "имён" "именам" "имена" "именами" "именах" neuter inanimate ;
---- ocean_N = nMorje "мор" ; -- +++ MG_UR: added +++
- son_N =
- {s = table
- { NF Sg Nom => syn ;
- NF Sg Gen => syn+"а" ;
- NF Sg Dat => syn+"у" ;
- NF Sg Acc => syn +"а";
- NF Sg Inst => syn+"ом" ;
- NF Sg (Prepos _) => syn+"е" ;
- NF Pl Nom => syn+"ья" ;
- NF Pl Gen => syn+"ьев" ;
- NF Pl Dat => syn+"ьям" ;
- NF Pl Acc => syn +"ьев";
- NF Pl Inst => syn+"ьями" ;
- NF Pl (Prepos _) => syn+"ьяах"
- } ;
- g = Masc ; anim = Animate
- } ;
---- time_N = nVremja "вре" ; -- +++ MG_UR: added +++
---- vocationalschool_N = nUchilishe "училищ" ; -- +++ MG_UR: added +++
- way_N =
- {s = table
- { NF Sg Nom => put+"ь" ;
- NF Sg Gen => put+"и" ;
- NF Sg Dat => put+"и" ;
- NF Sg Acc => put+"ь" ;
- NF Sg Inst => put+"ём" ;
- NF Sg (Prepos _) => put+"и" ;
- NF Pl Nom => put+"и" ;
- NF Pl Gen => put+"ей" ;
- NF Pl Dat => put+"ям" ;
- NF Pl Acc => put+"и" ;
- NF Pl Inst => put+"ями" ;
- NF Pl (Prepos _) => put+"ях"
- } ;
- g = Masc ; anim = Inanimate
- } ;
-
---- word_N = nSlovo "слов" ; -- +++ MG_UR: added +++
-} \ No newline at end of file
diff --git a/next-lib/src/russian/ExtraRus.gf b/next-lib/src/russian/ExtraRus.gf
deleted file mode 100644
index d592b6e64..000000000
--- a/next-lib/src/russian/ExtraRus.gf
+++ /dev/null
@@ -1,3 +0,0 @@
-concrete ExtraRus of ExtraRusAbs = CatRus ** {
-flags coding=utf8 ;
-}
diff --git a/next-lib/src/russian/ExtraRusAbs.gf b/next-lib/src/russian/ExtraRusAbs.gf
deleted file mode 100644
index e1a9d8e9d..000000000
--- a/next-lib/src/russian/ExtraRusAbs.gf
+++ /dev/null
@@ -1,3 +0,0 @@
-abstract ExtraRusAbs = {
-
-}
diff --git a/next-lib/src/russian/GrammarRus.gf b/next-lib/src/russian/GrammarRus.gf
deleted file mode 100644
index 052d5204c..000000000
--- a/next-lib/src/russian/GrammarRus.gf
+++ /dev/null
@@ -1,17 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
-concrete GrammarRus of Grammar =
- NounRus,
- VerbRus,
- AdjectiveRus,
- AdverbRus,
- NumeralRus,
- SentenceRus,
- QuestionRus,
- RelativeRus,
- ConjunctionRus,
- PhraseRus,
- TextX,
- StructuralRus,
- IdiomRus
- ** { flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ;} ;
diff --git a/next-lib/src/russian/IdiomRus.gf b/next-lib/src/russian/IdiomRus.gf
deleted file mode 100644
index 1c64ae51d..000000000
--- a/next-lib/src/russian/IdiomRus.gf
+++ /dev/null
@@ -1,58 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
-concrete IdiomRus of Idiom = CatRus ** open Prelude, ResRus, MorphoRus in {
-
- flags optimize=all_subs ; coding=utf8 ;
-
- lin
- ExistNP = \bar ->
- {s =\\b,clf => case b of
- {Pos => verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen bar.g) Sg P3)
- ++ bar.s ! PF Nom No NonPoss;
- Neg => "не" ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen bar.g) Sg P3)
- ++ bar.s ! PF Nom No NonPoss
- }
-} ;
-
- ExistIP Kto =
- let { kto = Kto.s ! (PF Nom No NonPoss) } in
- {s = \\b,clf,_ => case b of
- {Pos => kto ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3) ;
- Neg => kto ++ "не" ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3)
- }
- } ;
-
- CleftAdv adv sen = {s= \\ b, clf => let ne= case b of {Pos =>[]; Neg =>"не"}
- in
- "это" ++ ne ++ adv.s ++ [", "]++ sen.s };
-
- CleftNP np rs = {s= \\ b, clf =>
- let
- ne= case b of {Pos =>[]; Neg =>"не"};
- gn = case np.n of {Pl => GPl; _=> GSg (pgen2gen np.g)}
- in
- "это" ++ ne ++ np.s ! (PF Nom No NonPoss) ++
- rs.s ! gn !Nom!Animate };
-
- ImpPl1 vp = {s= "давайте" ++ vp.s! (ClIndic Future Simul)! GPl ! P1};
-
- ImpersCl vp = {s= \\ b, clf => let ne= case b of {Pos =>[]; Neg =>"не"}
- in
- ne ++ vp.s! clf! (GSg Neut) ! P3 };
-
--- No direct correspondance in Russian. Usually expressed by infinitive:
--- "Если очень захотеть, можно в космос улететь"
--- (If one really wants one can fly into the space).
--- Note that the modal verb "can" is trasferred into adverb
--- "можно" (it is possible) in Russian
--- The closest subject is "ты" (you), which is omitted in the final sentence:
--- "Если очень захочешь, можешь в космос улететь"
-
- GenericCl vp = {s= \\ b, clf => let ne= case b of {Pos =>[]; Neg =>"не"}
- in
- "ты" ++ ne ++ vp.s! clf! (GSg Masc) ! P2 };
-
- ProgrVP vp = vp ;
-
-}
-
diff --git a/next-lib/src/russian/IrregRus.gf b/next-lib/src/russian/IrregRus.gf
deleted file mode 100644
index 37e109b68..000000000
--- a/next-lib/src/russian/IrregRus.gf
+++ /dev/null
@@ -1,182 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
---
-concrete IrregRus of IrregRusAbs = CatRus ** open ParadigmsRus in {
---
-flags optimize=values ; coding=utf8 ;
---
--- lin
--- awake_V = irregV "awake" "awoke" "awoken" ;
--- bear_V = irregV "bear" "bore" "born" ;
--- beat_V = irregV "beat" "beat" "beat" ;
--- become_V = irregV "become" "became" "become" ;
--- begin_V = irregV "begin" "began" "begun" ;
--- bend_V = irregV "bend" "bent" "bent" ;
--- beset_V = irregV "beset" "beset" "beset" ;
--- bet_V = irregDuplV "bet" "bet" "bet" ;
--- bid_V = irregDuplV "bid" (variants {"bid" ; "bade"}) (variants {"bid" ; "bidden"}) ;
--- bind_V = irregV "bind" "bound" "bound" ;
--- bite_V = irregV "bite" "bit" "bitten" ;
--- bleed_V = irregV "bleed" "bled" "bled" ;
--- blow_V = irregV "blow" "blew" "blown" ;
--- break_V = irregV "break" "broke" "broken" ;
--- breed_V = irregV "breed" "bred" "bred" ;
--- bring_V = irregV "bring" "brought" "brought" ;
--- broadcast_V = irregV "broadcast" "broadcast" "broadcast" ;
--- build_V = irregV "build" "built" "built" ;
--- burn_V = irregV "burn" (variants {"burned" ; "burnt"}) (variants {"burned" ; "burnt"}) ;
--- burst_V = irregV "burst" "burst" "burst" ;
--- buy_V = irregV "buy" "bought" "bought" ;
--- cast_V = irregV "cast" "cast" "cast" ;
--- catch_V = irregV "catch" "caught" "caught" ;
--- choose_V = irregV "choose" "chose" "chosen" ;
--- cling_V = irregV "cling" "clung" "clung" ;
--- come_V = irregV "come" "came" "come" ;
--- cost_V = irregV "cost" "cost" "cost" ;
--- creep_V = irregV "creep" "crept" "crept" ;
--- cut_V = irregDuplV "cut" "cut" "cut" ;
--- deal_V = irregV "deal" "dealt" "dealt" ;
--- dig_V = irregDuplV "dig" "dug" "dug" ;
--- dive_V = irregV "dive" (variants {"dived" ; "dove"}) "dived" ;
--- do_V = mkV "do" "does" "did" "done" "doing" ;
--- draw_V = irregV "draw" "drew" "drawn" ;
--- dream_V = irregV "dream" (variants {"dreamed" ; "dreamt"}) (variants {"dreamed" ; "dreamt"}) ;
--- drive_V = irregV "drive" "drove" "driven" ;
--- drink_V = irregV "drink" "drank" "drunk" ;
--- eat_V = irregV "eat" "ate" "eaten" ;
--- fall_V = irregV "fall" "fell" "fallen" ;
--- feed_V = irregV "feed" "fed" "fed" ;
--- feel_V = irregV "feel" "felt" "felt" ;
--- fight_V = irregV "fight" "fought" "fought" ;
--- find_V = irregV "find" "found" "found" ;
--- fit_V = irregDuplV "fit" "fit" "fit" ;
--- flee_V = irregV "flee" "fled" "fled" ;
--- fling_V = irregV "fling" "flung" "flung" ;
--- fly_V = irregV "fly" "flew" "flown" ;
--- forbid_V = irregDuplV "forbid" "forbade" "forbidden" ;
--- forget_V = irregDuplV "forget" "forgot" "forgotten" ;
--- forgive_V = irregV "forgive" "forgave" "forgiven" ;
--- forsake_V = irregV "forsake" "forsook" "forsaken" ;
--- freeze_V = irregV "freeze" "froze" "frozen" ;
--- get_V = irregDuplV "get" "got" "gotten" ;
--- give_V = irregV "give" "gave" "given" ;
--- go_V = irregV "go" "went" "gone" ;
--- grind_V = irregV "grind" "ground" "ground" ;
--- grow_V = irregV "grow" "grew" "grown" ;
--- hang_V = irregV "hang" "hung" "hung" ;
--- have_V = mkV "have" "has" "had" "had" "having" ;
--- hear_V = irregV "hear" "heard" "heard" ;
--- hide_V = irregV "hide" "hid" "hidden" ;
--- hit_V = irregDuplV "hit" "hit" "hit" ;
--- hold_V = irregV "hold" "held" "held" ;
--- hurt_V = irregV "hurt" "hurt" "hurt" ;
--- keep_V = irregV "keep" "kept" "kept" ;
--- kneel_V = irregV "kneel" "knelt" "knelt" ;
--- knit_V = irregDuplV "knit" "knit" "knit" ;
--- know_V = irregV "know" "knew" "know" ;
--- lay_V = irregV "lay" "laid" "laid" ;
--- lead_V = irregV "lead" "led" "led" ;
--- leap_V = irregV "leap" (variants {"leaped" ; "lept"}) (variants {"leaped" ; "lept"}) ;
--- learn_V = irregV "learn" (variants {"learned" ; "learnt"}) (variants {"learned" ; "learnt"}) ;
--- leave_V = irregV "leave" "left" "left" ;
--- lend_V = irregV "lend" "lent" "lent" ;
--- let_V = irregDuplV "let" "let" "let" ;
--- lie_V = irregV "lie" "lay" "lain" ;
--- light_V = irregV "light" (variants {"lighted" ; "lit"}) "lighted" ;
--- lose_V = irregV "lose" "lost" "lost" ;
--- make_V = irregV "make" "made" "made" ;
--- mean_V = irregV "mean" "meant" "meant" ;
--- meet_V = irregV "meet" "met" "met" ;
--- misspell_V = irregV "misspell" (variants {"misspelled" ; "misspelt"}) (variants {"misspelled" ; "misspelt"}) ;
--- mistake_V = irregV "mistake" "mistook" "mistaken" ;
--- mow_V = irregV "mow" "mowed" (variants {"mowed" ; "mown"}) ;
--- overcome_V = irregV "overcome" "overcame" "overcome" ;
--- overdo_V = mkV "overdo" "overdoes" "overdid" "overdone" "overdoing" ;
--- overtake_V = irregV "overtake" "overtook" "overtaken" ;
--- overthrow_V = irregV "overthrow" "overthrew" "overthrown" ;
--- pay_V = irregV "pay" "paid" "paid" ;
--- plead_V = irregV "plead" "pled" "pled" ;
--- prove_V = irregV "prove" "proved" (variants {"proved" ; "proven"}) ;
--- put_V = irregDuplV "put" "put" "put" ;
--- quit_V = irregDuplV "quit" "quit" "quit" ;
--- read_V = irregV "read" "read" "read" ;
--- rid_V = irregDuplV "rid" "rid" "rid" ;
--- ride_V = irregV "ride" "rode" "ridden" ;
--- ring_V = irregV "ring" "rang" "rung" ;
--- rise_V = irregV "rise" "rose" "risen" ;
--- run_V = irregDuplV "run" "ran" "run" ;
--- saw_V = irregV "saw" "sawed" (variants {"sawed" ; "sawn"}) ;
--- say_V = irregV "say" "said" "said" ;
--- see_V = irregV "see" "saw" "seen" ;
--- seek_V = irregV "seek" "sought" "sought" ;
--- sell_V = irregV "sell" "sold" "sold" ;
--- send_V = irregV "send" "sent" "sent" ;
--- set_V = irregDuplV "set" "set" "set" ;
--- sew_V = irregV "sew" "sewed" (variants {"sewed" ; "sewn"}) ;
--- shake_V = irregV "shake" "shook" "shaken" ;
--- shave_V = irregV "shave" "shaved" (variants {"shaved" ; "shaven"}) ;
--- shear_V = irregV "shear" "shore" "shorn" ;
--- shed_V = irregDuplV "shed" "shed" "shed" ;
--- shine_V = irregV "shine" "shone" "shone" ;
--- shoe_V = irregV "shoe" "shoed" (variants {"shoed" ; "shod"}) ;
--- shoot_V = irregV "shoot" "shot" "shot" ;
--- show_V = irregV "show" "showed" (variants {"showed" ; "shown"}) ;
--- shrink_V = irregV "shrink" "shrank" "shrunk" ;
--- shut_V = irregDuplV "shut" "shut" "shut" ;
--- sing_V = irregV "sing" "sang" "sung" ;
--- sink_V = irregV "sink" "sank" "sunk" ;
--- sit_V = irregDuplV "sit" "sat" "sat" ;
--- sleep_V = irregV "sleep" "slept" "slept" ;
--- slay_V = irregV "slay" "slew" "slain" ;
--- slide_V = irregV "slide" "slid" "slid" ;
--- sling_V = irregV "sling" "slung" "slung" ;
--- slit_V = irregDuplV "slit" "slit" "slit" ;
--- smite_V = irregV "smite" "smote" "smitten" ;
--- sow_V = irregV "sow" "sowed" (variants {"sowed" ; "sown"}) ;
--- speak_V = irregV "speak" "spoke" "spoken" ;
--- speed_V = irregV "speed" "sped" "sped" ;
--- spend_V = irregV "spend" "spent" "spent" ;
--- spill_V = irregV "spill" (variants {"spilled" ; "spilt"}) (variants {"spilled" ; "spilt"}) ;
--- spin_V = irregDuplV "spin" "spun" "spun" ;
--- spit_V = irregDuplV "spit" (variants {"spit" ; "spat"}) "spit" ;
--- split_V = irregDuplV "split" "split" "split" ;
--- spread_V = irregV "spread" "spread" "spread" ;
--- spring_V = irregV "spring" (variants {"sprang" ; "sprung"}) "sprung" ;
--- stand_V = irregV "stand" "stood" "stood" ;
--- steal_V = irregV "steal" "stole" "stolen" ;
--- stick_V = irregV "stick" "stuck" "stuck" ;
--- sting_V = irregV "sting" "stung" "stung" ;
--- stink_V = irregV "stink" "stank" "stunk" ;
--- stride_V = irregV "stride" "strod" "stridden" ;
--- strike_V = irregV "strike" "struck" "struck" ;
--- string_V = irregV "string" "strung" "strung" ;
--- strive_V = irregV "strive" "strove" "striven" ;
--- swear_V = irregV "swear" "swore" "sworn" ;
--- sweep_V = irregV "sweep" "swept" "swept" ;
--- swell_V = irregV "swell" "swelled" (variants {"swelled" ; "swollen"}) ;
--- swim_V = irregDuplV "swim" "swam" "swum" ;
--- swing_V = irregV "swing" "swung" "swung" ;
--- take_V = irregV "take" "took" "taken" ;
--- teach_V = irregV "teach" "taught" "taught" ;
--- tear_V = irregV "tear" "tore" "torn" ;
--- tell_V = irregV "tell" "told" "told" ;
--- think_V = irregV "think" "thought" "thought" ;
--- thrive_V = irregV "thrive" (variants {"thrived" ; "throve"}) "thrived" ;
--- throw_V = irregV "throw" "threw" "thrown" ;
--- thrust_V = irregV "thrust" "thrust" "thrust" ;
--- tread_V = irregV "tread" "trod" "trodden" ;
--- understand_V = irregV "understand" "understood" "understood" ;
--- uphold_V = irregV "uphold" "upheld" "upheld" ;
--- upset_V = irregDuplV "upset" "upset" "upset" ;
--- wake_V = irregV "wake" "woke" "woken" ;
--- wear_V = irregV "wear" "wore" "worn" ;
--- weave_V = irregV "weave" (variants {"weaved" ; "wove"}) (variants {"weaved" ; "woven"}) ;
--- wed_V = irregDuplV "wed" "wed" "wed" ;
--- weep_V = irregV "weep" "wept" "wept" ;
--- wind_V = irregV "wind" "wound" "wound" ;
--- win_V = irregDuplV "win" "won" "won" ;
--- withhold_V = irregV "withhold" "withheld" "withheld" ;
--- withstand_V = irregV "withstand" "withstood" "withstood" ;
--- wring_V = irregV "wring" "wrung" "wrung" ;
--- write_V = irregV "write" "wrote" "written" ;
-}
diff --git a/next-lib/src/russian/LangRus.gf b/next-lib/src/russian/LangRus.gf
deleted file mode 100644
index c41981d63..000000000
--- a/next-lib/src/russian/LangRus.gf
+++ /dev/null
@@ -1,10 +0,0 @@
---# -path=.:../abstract:../common:src/prelude
-
-concrete LangRus of Lang =
- GrammarRus,
- LexiconRus
- ** {
-
-flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ;
-
-} ;
diff --git a/next-lib/src/russian/LexiconRus.gf b/next-lib/src/russian/LexiconRus.gf
deleted file mode 100644
index 6cee3846b..000000000
--- a/next-lib/src/russian/LexiconRus.gf
+++ /dev/null
@@ -1,357 +0,0 @@
---# -path=.:abstract:common
-concrete LexiconRus of Lexicon = CatRus **
- open ParadigmsRus, Prelude, StructuralRus, MorphoRus in {
-flags
- optimize=values ;
- coding=utf8 ;
-lin
- add_V3 = mkV3 (regV imperfective first "складыва" "ю" "складывал" "складывай" "складывать" ) "" "в" accusative accusative;
- airplane_N = mkN "самолёт" ;
- already_Adv = mkAdv "уже" ;
- animal_N = mkN "животное" animate;
- answer_V2S = dirV2 (regV imperfective first "отвеча" "ю" "отвечал" "отвечай" "отвечать" );
- apartment_N = mkN "квартира" ;
- apple_N = mkN "яблоко" ;
- art_N = mkN "искусство" ;
- ashes_N = mkN "пепел" ;
- ask_V2Q = dirV2 (regV imperfective first "спрашива" "ю" "спрашивал" "спрашивай" "спрашивать") ;
- baby_N = mkN "малыш" animate;
- back_N = mkN "спина" ;
- bad_A = mkA "плохой" "хуже";
- bank_N = mkN "банк" ;
- bark_N = mkN "кора";
- beautiful_A = mkA "красивый";
- become_VA = regV perfective second "станов" "лю" "стал" "стань" "стать" ;
- beer_N = mkN "пиво" ;
- beg_V2V = dirV2 (mkV imperfective "прошу" "просишь" "просит" "просим" "просите" "просят" "просил" "проси" "просить" );
- belly_N = mkN "живот" ;
- big_A = mkA "большой" "больше" ;
- bike_N = mkN "велосипед" ;
- bird_N = mkN "птица" animate;
- bite_V2 = dirV2 (regV imperfective first "куса" "ю" "кусал" "кусай" "кусать");
- black_A = mkA "чёрный";
- blood_N = mkN "кровь" ;
- blow_V = regV imperfective first "ду" "ю" "дул" "дуй" "дуть" ;
- blue_A = mkA "голубой" ;
- boat_N = mkN "лодка" ;
- bone_N = mkN "кость" ;
- book_N = mkN "книга" ;
- boot_N = mkN "сапог" ;
- boss_N = mkN "начальник" animate;
- boy_N = mkN "мальчик" animate;
- bread_N = mkN "хлеб" ;
- break_V2 = dirV2 (regV imperfective first "прерыва" "ю" "прерывал" "прерывай" "прерывать" );
- breast_N = mkN "грудь" ;
- breathe_V = regV imperfective second "дыш" "у" "дышал" "дыши" "дышать" ;
- broad_A = mkA "широкий" "шире";
- brother_N2 = mkN2 (mkN "брат" animate) ; -- FIXME: special case
- brown_A = mkA "коричневый";
- burn_V = regV imperfective second "гор" "ю" "горел" "гори" "гореть" ;
- butter_N = mkN "масло";
- buy_V2 = dirV2 (regV imperfective first "покупа" "ю" "покупал" "покупай" "покупать" );
- camera_N = mkN "фотоаппарат" ;
- cap_N = mkN "чашка" ; -- vowel change
- car_N = mkN "машина" ;
- carpet_N = mkN "ковёр"; -- vowel change
- cat_N = mkN "кошка" animate ; -- vowel change
- ceiling_N = mkN "потолок" ; -- vowel change
- chair_N = mkN "стул" ; -- irregular
- cheese_N = mkN "сыр" ;
- child_N = mkN "ребёнок" "ребёнка" "ребёнку" "ребёнка" "ребёнком" "ребёнке" "ребёнке" "дети" "детей" "детям" "детей" "детьми" "детях" masculine animate ;
- church_N = mkN "церковь" "церкви" "церкви" "церковь" "церковью" "церкви" "церкви" "церкви" "церквей" "церквям" "церкви" "церквями" "церквях" masculine inanimate ;
- city_N = mkN "город" ;
- clean_A = mkA "чистый" "чище";
- clever_A = mkA "умный";
- close_V2= dirV2 (regV imperfective first "закрыва" "ю" "закрывал" "закрывай" "закрывать" );
- cloud_N = mkN "облако" ; -- irregular
- coat_N = mkIndeclinableNoun "пальто" masculine inanimate ;
- cold_A = mkA "холодный";
- come_V = regV imperfective first "прихо" "жу" "приходил" "приходи" "приходить" ;
- computer_N = mkN "компьютер" ;
- correct_A = mkA "правильный" ;
- count_V2 = dirV2 (regV imperfective first "счита" "ю" "считал" "считай" "считать" ) ;
- country_N = mkN "страна" ;
- cousin_N = mkN "кузен" ; -- FIXME: is this really correct? can't find it in the dictionary
- cow_N = mkN "корова" animate ;
- cut_V2 = dirV2 (regV imperfective first "реж" "у" "резал" "режь" "резать" ) ;
- day_N = mkN "день" "дня" "дню" "день" "днём" "дне" "дне" "дни" "дней" "дням" "дни" "днями" "днях" masculine inanimate ;
- die_V = regV imperfective first "умира" "ю" "умирал" "умирай" "умирать" ;
- dig_V = regV imperfective first "копа" "ю" "копал" "копай" "копать" ;
- dirty_A = mkA "грязный" ;
- distance_N3 = mkN3 (mkN "расстояние") from_Prep to_Prep ;
- do_V2 = dirV2 (regV imperfective first "дела" "ю" "делал" "делай" "делать" );
- doctor_N = mkN "доктор" animate ;
- dog_N = mkN "собака" animate;
- door_N = mkN "дверь" ;
- drink_V2 = dirV2 (regV imperfective firstE "пь" "ю" "пил" "пей" "пить" );
- dry_A = mkA "сухой" "суше";
- dull_A = mkA "скучный" ;
- dust_N = mkN "пыль" ;
- ear_N = mkN "ухо" ;
- earth_N = mkN "земля" ;
- easy_A2V = mkA2 (mkA "лёгкий" "легче") "для" genitive ;
- eat_V2 = dirV2 (regV imperfective first "куша" "ю" "кушал" "кушай" "кушать" );
- egg_N = mkN "яйцо" ;
- empty_A = mkA "пустой" ;
- enemy_N = mkN "враг" animate ;
- eye_N = mkN "глаз" ; -- FIXME: Pl -a
- factory_N = mkN "фабрика" ;
- fall_V = regV imperfective first "пада" "ю" "падал" "падай" "падать" ;
- far_Adv = mkAdv "далеко";
- fat_N = mkN "жир" ;
- father_N2 = mkN2 (mkN "отец" "отца" "отцу" "отца" "отцом" "отце" "отце" "отцы" "отцов" "отцам" "отцов" "отцами" "отцах" masculine animate);
- fear_V2 =dirV2 (regV imperfective first "бо" "ю" "боял" "бой" "боять" );
- fear_VS = regV imperfective second "бо" "ю" "боял" "бой" "боять" ;
- feather_N = mkN "перо" "пера" "перу" "пера" "пером" "пере" "пере" "перья" "перьев" "перьям" "перьев" "перьями" "перьях" neuter inanimate ;
- fight_V2 = dirV2 (regV imperfective firstE "дер" "у" "драл" "дери" "драть" ) ;
- find_V2 = dirV2 (mkV imperfective "нахожу" "находишь" "находит" "находим" "находите" "находят" "находил" "находи" "находить" );
- fingernail_N = mkN "ноготь" "ногтя" "ногтю" "ногтя" "ногтем" "ногте" "ногте" "ногти" "ногтей" "ногтям" "ногтей" "ногтями" "ногтях" masculine inanimate ;
- fire_N = mkN "огонь" "огня" "огню" "огня" "огнём" "огне" "огне" "огни" "огней" "огням" "огней" "огнями" "огнях" masculine inanimate ;
- fish_N = mkN "рыба" animate;
- float_V = regV imperfective firstE "плыв" "у" "плыл" "плыви" "плыть" ;
- floor_N = mkN "пол" ;
- flow_V = regV imperfective firstE "тек" "у" "тёк" "теки" "течь" ;
- flower_N = mkN "цветок";
- fly_V = regV imperfective second "лета" "ю" "летал" "летай" "летать" ;
- fog_N = mkN "туман" ;
- foot_N = mkN "ступня" ;
- forest_N = mkN "лес" ; -- prepos -u
- forget_V2= dirV2 (regV imperfective first "забыва" "ю" "забывал" "забывай" "забывать" );
- freeze_V = regV imperfective first "замерза" "ю" "замерзал" "замерзай" "замерзать" ;
- fridge_N = mkN "холодильник" ;
- friend_N = mkN "друг" "друга" "другу" "друга" "другом" "друге" "друге" "друзья" "друзей" "друзьям" "друзей" "дузьями" "друзьях" masculine animate ;
- fruit_N = mkN "фрукт" ;
- full_A = mkA "полный";
- fun_AV = mkA "весёлый";
- garden_N = mkN "сад" ;
- girl_N = mkN "девочка" animate; -- vowel change
- give_V3 = tvDirDir (regV imperfective firstE "да" "ю" "давал" "давай" "давать" ) ;
- glove_N = mkN "перчатка" ; -- vowel change
- go_V= regV imperfective second "хо" "жу" "ходил" "ходи" "ходить" ;
- gold_N = mkN "золото" ;
- good_A = mkA "хороший" "лучше" ;
- grammar_N = mkN "грамматикa";
- grass_N = mkN "трава";
- green_A = mkA "зелёный" ;
- guts_N = mkN "внутренность" ;
- hair_N = mkN "волос" ; -- FIXME: always plural?
- hand_N = mkN "рука" ;
- harbour_N = mkN "порт" ; -- prepos -u
- hat_N = mkN "шляпа" ;
- hate_V2= dirV2 (regV imperfective second "ненави" "жу" "ненавидел" "ненавидь" "ненавидеть" );
- head_N = mkN "голова" ;
- hear_V2= dirV2 (regV imperfective first "слуша" "ю" "слушал" "слушай" "слушать" );
- heart_N = mkN "сердце" "сердца" "сердцу" "сердца" "сердцем" "сердце" "сердце" "сердца" "сердец" "сердцам" "сердец" "сердцами" "сердцах" neuter inanimate ;
- heavy_A = mkA "тяжёлый" ;
- hill_N = mkN "холм" ;
- hit_V2 = dirV2 (regV imperfective first "ударя" "ю" "ударял" "ударяй" "ударять" );
- hold_V2 = dirV2 (regV imperfective second "держ" "у" "держал" "держи" "держать" );
- hope_VS= regV imperfective first "наде" "ю" "надеял" "надей" "надеять" ;
- horn_N = mkN "рог" ;
- horse_N = mkN "лошадь" animate; -- irregular
- hot_A = mkA "горячий" ;
- house_N = mkN "дом" ;
- hunt_V2 = dirV2 (regV imperfective second "охоч" "у" "охотил" "охоть" "охотить" ) ;
- husband_N = mkN "муж" "мужа" "мужу" "мужа" "мужем" "муже" "муже" "мужья" "мужей" "мужьям" "мужей" "мужьями" "мужьях" masculine animate ;
- ice_N = mkN "лёд" "льда" "льду" "льда" "льдом" "льде" "льде" "льды" "льдов" "льдам" "льдов" "льдами" "льдах" masculine inanimate ;
- important_A = mkA "важный" ;
- industry_N = mkN "промышленность" ;
- iron_N = mkN "железо" ;
- john_PN = mkPN "Иван" Masc Animate ;
- jump_V = regV imperfective first "прыга" "ю" "прыгал" "прыгай" "прыгать" ;
- kill_V2 = dirV2 (regV imperfective first "убива" "ю" "убивал" "убивай" "убивать" ) ;
- king_N = mkN "король" "короля" "королю" "короля" "королем" "короле" "короле" "короли" "королей" "королям" "королей" "королями" "королях" masculine animate ;
- knee_N = mkN "колено" "колена" "колену" "колена" "коленом" "колене" "колене" "колени" "колен" "коленам" "колен" "коленями" "коленях" neuter inanimate ;
- know_V2= dirV2 (regV imperfective first "зна" "ю" "знал" "знай" "знать" );
- lake_N = mkN "озеро" ; -- gen pl "озёр"
- lamp_N = mkN "лампа" ;
- language_N = mkN "язык" ;
- laugh_V = regV imperfective firstE "сме" "ю" "смеял" "смей" "смеять" ;
- leaf_N = mkN "лист" ; -- irregular pl
- learn_V2= dirV2 (regV imperfective second "уч" "у" "учил" "учи" "учить" );
- leather_N = mkN "кожа" ;
- leave_V2= dirV2 (regV imperfective second "ухож" "у" "уходил" "уходи" "уходить" );
- left_Ord = (uy_j_EndDecl "лев" ) ** {lock_A = <>};
- leg_N = mkN "нога" ;
- lie_V = regV imperfective firstE "лг" "у" "лгал" "лги" "лгать" ;
- like_V2= dirV2 (regV imperfective second "нрав" "лю" "нравил" "нравь" "нравить" );
- listen_V2= dirV2 (regV imperfective first "слуша" "ю" "слушал" "слушай" "слушать" );
- live_V= regV imperfective firstE "жив" "у" "жил" "живи" "жить" ;
- liver_N = mkN "печень" ;
- long_A = mkA "длинный" ;
- lose_V2 = dirV2 (regV imperfective first "теря" "ю" "терял" "теряй" "терять" );
- louse_N = mkN "вошь" "вши" "вши" "вошь" "вошью" "вше" "вше" "вши" "вшей" "вшам" "вшей" "вшами" "вшах" feminine animate ;
- love_N = mkN "любовь" ; -- vowel change
- love_V2= dirV2 (regV imperfective second "люб" "лю" "любил" "люби" "любить" );
- man_N = mkN "человек" ; -- null gen pl
- married_A2 = mkA2 (mkA "замужем") "за" instructive ;
- meat_N = mkN "мясо" ;
- milk_N = mkN "молоко" ;
- moon_N = mkN "луна" ;
- mother_N2 = mkN2 (mkN "мать" "матери" "матери" "мать" "матерью" "матери" "матери" "матери" "матерей" "матерям" "матерей" "матерями" "матерях" feminine animate) ;
- mountain_N = mkN "гора" ;
- mouth_N = mkN "рот" "рта" "рту" "рот" "ртом" "рте" "рте" "рты" "ртов" "ртам" "рты" "ртами" "ртах" masculine inanimate ;
- music_N = mkN "музыка" ;
- name_N = mkN "имя" ;
- narrow_A = mkA "узкий" "уже" ;
- near_A = mkA "близкий" "ближе";
- neck_N = mkN "шея" ;
- new_A = mkA "новый" ;
- newspaper_N = mkN "газета" ;
- night_N = mkN "ночь" ;
- nose_N = mkN "нос" ;
- now_Adv = mkAdv "сейчас" ;
- number_N = mkN "число" ; -- gen pl "чисел"
- oil_N = mkN "нефть" ;
- old_A = mkA "старый" "старше" ;
- open_V2= dirV2 (regV imperfective first "открыва" "ю" "открывал" "открывай" "открывать" );
---- organise_V2 = dirV2 (regV imperfective foreign "организу" "ю" "организовал" "организуй" "организовать" ); -- +++ MG_UR: added +++
- paint_V2A = dirV2 (regV imperfective first "рису" "ю" "рисовал" "рисуй" "рисовать" ) ;
---- palace_N = nDvorec "двор" ; -- +++ MG_UR: added +++
- paper_N = mkN "бумага" ;
- paris_PN = mkPN "Париж" Masc Inanimate ;
- peace_N = mkN "мир" ;
- pen_N = mkN "ручка" ;
- person_N = mkN "лицo" animate ; -- irregular
- planet_N = mkN "планета" ;
- plastic_N = mkN "пластмасса" ;
- play_V = regV imperfective first "игра" "ю" "играл" "играй" "играть" ;
- play_V2 = mkV2 (regV imperfective first "игра" "ю" "играл" "играй" "играть" ) "c" instructive;
- policeman_N = mkN "милиционер" animate ;
- priest_N = mkN "священник" animate;
- probable_AS = mkA "возможный" ;
- pull_V2 = dirV2 (regV imperfective first "тян" "у" "тянул" "тяни" "тянуть" ) ;
- push_V2 = dirV2 (regV imperfective first "толка" "ю" "толкал" "толкай" "толкать" );
- put_V2 = dirV2 (regV imperfective firstE "клад" "у" "клал" "клади" "класть" );
- queen_N = mkN "королева" animate ;
- question_N = mkN "вопрос" ;
- radio_N = mkIndeclinableNoun "радио" neuter inanimate;
- rain_N = mkN "дождь" ;
- rain_V0 = idetDozhd verbIdti; -- No such verb in Russian!
- read_V2 = dirV2 (regV imperfective first "чита" "ю" "читал" "читай" "читать" );
--- ready_A = ;
- reason_N = mkN "причина";
- red_A = mkA "красный" ;
- religion_N = mkN "религия" ;
- restaurant_N = mkN "ресторан" ;
- right_Ord = (uy_j_EndDecl "прав") ** {lock_A = <>} ;
- river_N = mkN "рекa" ;
- road_N = mkN "дорогa" ;
- rock_N = mkN "камень" ;
- roof_N = mkN "крыша" ;
- root_N = mkN "корень" ;
- rope_N = mkN "верёвка" ;
- rotten_A = mkA "гнилой";
- round_A = mkA "круглый";
- rub_V2 = dirV2 (regV imperfective firstE "тр" "у" "тёр" "три" "тереть" );
- rubber_N = mkN "резина" ;
- rule_N = mkN "правило" ;
- run_V = regV imperfective first "бега" "ю" "бегал" "бегай" "бегать" ;
- salt_N = mkN "соль" ;
- sand_N = mkN "песок" "песка" "песку" "песок" "песком" "песке" "песке" "пески" "песков" "пескам" "песков" "песками" "песках" masculine inanimate ;
- say_VS = regV imperfective second "говор" "ю" "говорил" "говори" "говорить" ;
- school_N = mkN "школа" ;
- science_N = mkN "наука" ;
- scratch_V2 = dirV2 (regV imperfective first "чеш" "у" "чесал" "чеши" "чесать" ) ;
- sea_N = mkN "море" ;
- see_V2 = dirV2 (regV imperfective second "ви" "жу" "видел" "видь" "видеть" );
- seed_N = mkN "семя";
- seek_V2 = dirV2 (regV imperfective first "ищ" "у" "искал" "ищи" "искать" );
- sell_V3 = tvDirDir (regV imperfective firstE "прода" "ю" "продавал" "продавай" "продавать" );
- send_V3 = tvDirDir (regV imperfective first "посыла" "ю" "посылал" "посылай" "посылать" );
- sew_V = regV imperfective firstE "шь" "ю" "шил" "шей" "шить" ;
- sharp_A = mkA "острый";
- sheep_N = mkN "овца" animate ;
- ship_N = mkN "корабль" ;
- shirt_N = mkN "рубашка" ;
- shoe_N = mkN "туфля" "туфли" "туфле" "туфлю" "туфлей" "туфле" "туфле" "туфли" "туфель" "туфлям" "туфли" "туфлями" "туфлях" masculine inanimate ;
- shop_N = mkN "магазин" ;
- short_A = mkA "короткий" "короче" ;
- silver_N = mkN "серебро" ;
- sing_V = regV imperfective firstE "по" "ю" "пел" "пой" "петь" ;
- sister_N = mkN "сестра" animate ;
- sit_V = mkV imperfective "сижу" "сидишь" "сидит" "сидим" "сидите" "сидят" "сидел" "сиди" "сидеть" ;
- skin_N = mkN "кожа" ;
- sky_N = mkN "небо" "неба" "небу" "небо" "небом" "небе" "небе" "небеса" "небес" "небесам" "небес" "небесами" "небесах" neuter inanimate ;
- sleep_V = regV imperfective second "сп" "лю" "спал" "спи" "спать" ;
- small_A = mkA "маленький" "меньше" ;
- smell_V = regV imperfective first "пахн" "у" "пахнул" "пахни" "пахнуть" ;
- smoke_N = mkN "дым" ;
- smooth_A = mkA "гладкий" "глаже";
- snake_N = mkN "змея" animate ;
- snow_N = mkN "снег" ;
- sock_N = mkN "носок" ;
- song_N = mkN "песня" ;
- speak_V2 = mkV2 (regV imperfective secondA "говор" "ю" "говорил" "говори" "говорить")
- "на" prepositional ;
- spit_V = regV imperfective firstE "плю" "ю" "плевал" "плюй" "плевать" ;
- split_V2 = dirV2 (regV imperfective first "разбива" "ю" "разбивал" "разбей" "разбивать" ) ;
- squeeze_V2 = dirV2 (regV imperfective first "сжима" "ю" "сжимал" "сжимай" "сжимать" ) ;
- stab_V2 = dirV2 (regV imperfective first "кол" "ю" "колол" "коли" "колоть" ) ;
- stand_V = regV imperfective second "сто" "ю" "стоял" "стой" "стоять" ;
- star_N = mkN "звезда" ;
- steel_N = mkN "сталь" ;
- stick_N = mkN "палка" ;
- stone_N = mkN "камень" ;
- stop_V = regV imperfective first "останавлива" "ю" "останавливал" "останавливай" "останавливать";
- stove_N = mkN "печь" ;
- straight_A = mkA "прямой" ;
- student_N = mkN "студент" animate ;
- stupid_A = mkA "тупой" "тупее" ;
- suck_V2 = dirV2 (regV imperfective firstE "сос" "у" "сосал" "соси" "сосать") ;
- sun_N = mkN "солнце" "солнца" "солнцу" "солнце" "солнцем" "солнце" "солнце" "солнца" "солнц" "солнцам" "солнца" "солнцами" "солнцах" neuter inanimate ;
- swell_V = regV imperfective first "опуха" "ю" "опухал" "опухай" "опухать" ;
- swim_V = regV imperfective first "плава" "ю" "плавал" "плавай" "плавать" ;
- switch8off_V2 = dirV2 (regV imperfective first "выключа" "ю" "выключал" "выключай" "выключать") ;
- switch8on_V2 = dirV2 (regV imperfective first "включа" "ю" "включал" "включай" "включать") ;
- table_N = mkN "стол" ;
- tail_N = mkN "хвост" ;
- talk_V3 = mkV3 (regV imperfective second "говор" "ю" "говорил" "говори" "говорить" ) "с" "о" instructive prepositional;
- teach_V2 = dirV2 (regV imperfective second "уч" "у" "учил" "учи" "учить" );
- teacher_N = mkN "учитель" animate ;
- television_N = mkN "телевидение" ; -- FIXME: televizor?
- thick_A = mkA "толстый" "толще" ;
- thin_A = mkA "тонкий" "тоньше" ;
- think_V = regV imperfective first "дума" "ю" "думал" "думай" "думать" ;
- throw_V2 = dirV2 (regV imperfective first "броса" "ю" "бросал" "бросай" "бросать" ) ;
- tie_V2 = dirV2 (regV imperfective first "вяж" "у" "вязал" "вяжи" "вязать") ;
--- today_Adv = ;
- tongue_N = mkN "язык" ;
- tooth_N = mkN "зуб" ;
- train_N = mkN "поезд" ;
- travel_V = regV imperfective first "путешеству" "ю" "путешествовал" "путешествуй" "путешествовать" ;
- tree_N = mkN "дерево" ; -- irregular
- turn_V = regV imperfective first "поворачива" "ю" "поворачивал" "поворачивай" "поворачивать" ;
- ugly_A = mkA "некрасивый" ;
--- uncertain_A = ;
- understand_V2 = dirV2 (regV imperfective first "понима" "ю" "понимал" "понимай" "понимать" );
- university_N = mkN "университет" ;
- village_N = mkN "деревня" ;
- vomit_V = regV imperfective firstE "рв" "у" "рвал" "рви" "рвать" ;
- wait_V2 = dirV2 (regV imperfective firstE "жд" "у" "ждал" "жди" "ждать" );
- walk_V = regV imperfective first "гуля" "ю" "гулял" "гуляй" "гулять" ;
---- want_V2 = dirV2 (regV imperfective mixed "хо" "чу" "хотел" "хоти" "хотеть" );
- war_N = mkN "война" ;
- warm_A = mkA "тёплый" ;
- wash_V2 = dirV2 (regV imperfective first "мо" "ю" "мыл" "мой" "мыть" ) ;
- watch_V2 = dirV2 (regV imperfective second "смотр" "ю" "смотрел" "смотри" "смотреть" );
- water_N = mkN "вода" ;
- wet_A = mkA "мокрый" ;
- white_A = mkA "белый" ;
- wide_A = mkA "широкий" "шире";
- wife_N = mkN "жена" animate ;
- win_V2 = dirV2 (regV imperfective first "выигрыва" "ю" "выигрывал" "выигрывай" "выигрывать" );
- wind_N = mkN "ветер" "ветра" "ветру" "ветер" "ветром" "ветра" "ветра" "ветров" "ветра" "ветрам" "ветров" "ветрами" "ветрах" masculine inanimate ;
- window_N = mkN "окно" ; -- "окон"
- wine_N = mkN "вино" ;
- wing_N = mkN "крыло" ; -- pl крылья крыльев etc
- wipe_V2 = dirV2 (regV imperfective first "вытира" "ю" "вытирал" "вытирай" "вытирать" );
- woman_N = mkN "женщина" ;
- wonder_VQ = regV imperfective first "интересу" "ю" "интересовал" "интересуй" "интересовать";
- wood_N = mkN "дерево" ;
- worm_N = mkN "черв" ;
- write_V2 = dirV2 (regV imperfective first "пиш" "у" "писал" "пиши" "писать" );
- year_N = mkN "годь" ;
- yellow_A = mkA "жёлтый" ;
- young_A = mkA "молодой" "моложе";
-}
diff --git a/next-lib/src/russian/MorphoRus.gf b/next-lib/src/russian/MorphoRus.gf
deleted file mode 100644
index c5bac7bd0..000000000
--- a/next-lib/src/russian/MorphoRus.gf
+++ /dev/null
@@ -1,1314 +0,0 @@
---# -path=.:../../prelude:../common
-
---1 A Simple Russian Resource Morphology
-
--- Aarne Ranta, Janna Khegai 2006
-
--- This resource morphology contains definitions of the lexical entries
--- needed in the resource syntax.
--- It moreover contains copies of the most usual inflectional patterns.
-
--- We use the parameter types and word classes defined for morphology.
-
-resource MorphoRus = ResRus ** open Prelude in {
-
-flags coding=utf8 ;
-
-----2 Personal (together with possesive) pronouns.
-
-oper pronYa : Pronoun =
- let nonPoss = { s = table { Nom => "я" ;
- Gen => "меня" ;
- Dat => "мне" ;
- Acc => "меня" ;
- Inst => "мной" ;
- Prepos _ => "мне" } }
- in pronYaTu nonPoss "мо" P1 ;
-
-oper pronTu : Pronoun =
- let nonPoss = { s = table { Nom => "ты" ;
- Gen => "тебя" ;
- Dat => "тебе" ;
- Acc => "тебя" ;
- Inst => "тобой" ;
- Prepos _ => "тебе" } }
- in pronYaTu nonPoss "тво" P2 ;
-
--- Pronouns ya, tu, svoj
-oper pronYaTu : { s : Case => Str } -> Str -> Person -> Pronoun =
- \nonPoss, mo, pers ->
- { s = table {
- PF c _ NonPoss => nonPoss.s!c ;
- PF c _ (Poss gn) => case <c, gn> of {
- <Nom, GSg Neut > => mo + "ё" ;
- <Nom, GSg Masc > => mo + "й" ;
- <Gen, GSg (Masc | Neut)> => mo + "его" ;
- <Dat, GSg (Masc | Neut)> => mo + "ему" ;
- <Acc, GSg (Masc | Neut)> => mo + "его" ;
- <Inst, GSg (Masc | Neut)> => mo + "им" ;
- <Prepos _, GSg (Masc | Neut)> => mo + "ём" ;
-
- <Nom, GSg Fem> => mo + "я" ;
- <Gen, GSg Fem> => mo + "ей" ;
- <Dat, GSg Fem> => mo + "ей" ;
- <Acc, GSg Fem> => mo + "ю" ;
- <Inst, GSg Fem> => mo + "ей" ;
- <Prepos _, GSg Fem> => mo + "ей" ;
-
- <Nom, GPl> => mo + "и" ;
- <Gen, GPl> => mo + "их" ;
- <Dat, GPl> => mo + "им" ;
- <Acc, GPl> => mo + "их" ;
- <Inst, GPl> => mo + "им" ;
- <Prepos _, GPl> => mo + "их"
-
- }
- } ;
- g = PNoGen ; n = Sg ; p = pers ; pron = True
- } ;
-
-oper pronNAfterPrep : Pronoun -> Pronoun = \p ->
- { s = table {
- PF c Yes NonPoss => case p.s!(PF c No NonPoss) of {
- x@(("е"|"ё"|"и")+_) => "н"+x;
- x => x };
- pf => p.s!pf };
- g = p.g ; n = p.n ; p = p.p ; pron = p.pron
- } ;
-
-oper pronOn : Pronoun = pronNAfterPrep
- { s = table {
- PF _ _ (Poss _) => "его" ;
- PF Nom _ _ => "он" ;
- PF (Gen|Acc) _ _ => "его" ;
- PF Dat _ _ => "ему" ;
- PF Inst _ _ => "им" ;
- PF (Prepos _) _ _ => "ём"
- } ;
- g = PGen Masc ; n = Sg ; p = P3 ; pron = True
- } ;
-
-oper pronOna : Pronoun = pronNAfterPrep
- { s = table {
- PF _ _ (Poss _ ) => "её" ;
- PF Nom _ NonPoss => "она" ;
- PF (Gen|Acc) _ _ => "её" ;
- PF (Dat|Inst|Prepos _) _ _ => "ей"
- } ;
- g = PGen Fem ; n = Sg ; p = P3 ; pron = True
- } ;
-
-oper pronOno: Pronoun =
- { s = table {
- PF Nom _ NonPoss => "оно" ;
- pf => pronOn.s!pf
- } ;
- g = PGen Neut ; n = Sg ; p = P3 ; pron = True
- } ;
-
-oper pronMuVu : Str -> Str -> Person -> Pronoun =
- \mu,na,pers ->
- { s = table {
- PF Nom _ NonPoss => mu ;
- PF Gen _ NonPoss => na + "с" ;
- PF Dat _ NonPoss => na + "м" ;
- PF Acc _ NonPoss => na + "с" ;
- PF Inst _ NonPoss => na + "ми" ;
- PF (Prepos _) _ NonPoss => na + "с" ;
-
- PF Nom _ (Poss (GSg Masc)) => na + "ш" ;
- PF Nom _ (Poss (GSg Neut)) => na + "ше" ;
- PF Gen _ (Poss (GSg (Masc | Neut))) => na + "шего" ;
- PF Dat _ (Poss (GSg (Masc | Neut))) => na + "шему" ;
- PF Acc _ (Poss (GSg (Masc | Neut))) => na + "шего" ;
- PF Inst _ (Poss (GSg (Masc | Neut))) => na + "шим" ;
- PF (Prepos _) _ (Poss (GSg (Masc | Neut))) => na + "шем" ;
-
- PF Nom _ (Poss (GSg Fem)) => na + "ша" ;
- PF Gen _ (Poss (GSg Fem)) => na + "шей" ;
- PF Dat _ (Poss (GSg Fem)) => na + "шей" ;
- PF Acc _ (Poss (GSg Fem)) => na + "шу" ;
- PF Inst _ (Poss (GSg Fem)) => na + "шею" ;
- PF (Prepos _) _ (Poss (GSg Fem)) => na + "шей" ;
-
- PF Nom _ (Poss GPl) => na + "ши" ;
- PF Gen _ (Poss GPl) => na + "ших" ;
- PF Dat _ (Poss GPl) => na + "шим" ;
- PF Acc _ (Poss GPl) => na + "ших" ;
- PF Inst _ (Poss GPl) => na + "шими" ;
- PF (Prepos _) _ (Poss GPl) => na + "ших"
- };
- g = PNoGen ; n = Pl ; p = pers ; pron = True
- } ;
-
-oper pronMu: Pronoun = pronMuVu "мы" "на" P1;
-
-oper pronVu: Pronoun = pronMuVu "вы" "ва" P2;
-
-oper pronOni: Pronoun = pronNAfterPrep
- { s = table {
- PF _ _ (Poss _) => "их" ;
- PF Nom _ _ => "они" ;
- PF Dat _ _ => "им" ;
- PF (Gen|Acc|Prepos _) _ _ => "их" ;
- PF Inst _ _ => "ими"
- } ;
- g = PNoGen ; n = Pl ; p = P3 ; pron = True
- } ;
-
-oper pronKto: Pronoun =
- { s = table {
- PF Nom _ _ => "кто" ;
- PF Gen _ _ => "кого" ;
- PF Dat _ _ => "кому" ;
- PF Acc _ _ => "кого" ;
- PF Inst _ _ => "кем" ;
- PF (Prepos _) _ _ => "ком"
- } ;
- g = PGen Masc;
- n = Sg ;
- p = P3 ;
- pron = False
- } ;
-
-oper pronChto: Pronoun =
- { s = table {
- PF Nom _ _ => "что" ;
- PF Gen _ _ => "чего" ;
- PF Dat _ _ => "чему" ;
- PF Acc _ _ => "что" ;
- PF Inst _ _ => "чем" ;
- PF (Prepos _) _ _ => "чём"
- } ;
- g = PGen Masc;
- n = Sg ;
- p = P3 ;
- pron = False
- } ;
-
-oper pron_add_to : Pronoun -> Pronoun = \p ->
- { s = \\pf => (p.s!pf) + "-то" ;
- g = p.g ;
- n = p.n ;
- p = p.p ;
- pron = p.pron
- } ;
-
-oper pronKtoTo : Pronoun = pron_add_to pronKto ;
-
-oper pronChtoTo: Pronoun = pron_add_to pronChto ;
-
-oper pronEti: Pronoun =
- { s = table {
- PF Nom _ _ => "эти" ;
- PF Gen _ _ => "этих" ;
- PF Dat _ _ => "этим" ;
- PF Acc _ _ => "этих" ;
- PF Inst _ _ => "этими" ;
- PF (Prepos _) _ _ => "этих"
- } ;
- n = Pl;
- p = P3;
- g= PGen Fem ;
- anim = Animate ;
- pron = False
- } ;
-
-oper pronTe: Pronoun =
- { s = table {
- PF Nom _ _ => "те" ;
- PF Gen _ _ => "тех" ;
- PF Dat _ _ => "тем" ;
- PF Acc _ _ => "тех" ;
- PF Inst _ _ => "теми" ;
- PF (Prepos _) _ _ => "тех"
- } ;
- n = Pl;
- p = P3;
- g=PGen Fem ;
- anim = Animate ;
- pron = False
- } ;
-
-
---oper pronNikto: Pronoun =
--- { s = table {
--- PF Nom _ _ => "никто" ;
--- PF Gen _ _ => "никого" ;
--- PF Dat _ _ => "никому" ;
--- PF Acc _ _ => "никого" ;
--- PF Inst _ _ => "никем" ;
--- PF (Prepos _) _ _ => ["ни о ком"] -- only together with a preposition;
--- } ;
--- g = PGen Masc;
--- n = Sg ;
--- p = P3 ;
--- pron = False
--- } ;
---
---oper pronNichto: Pronoun =
--- { s = table {
--- PF Nom _ _ => "ничто" ;
--- PF Gen _ _ => "ничего" ;
--- PF Dat _ _ => "ничему" ;
--- PF Acc _ _ => "ничего" ;
--- PF Inst _ _ => "ничем" ;
--- PF (Prepos _) _ _ => ["ни о чём"] -- only together with preposition;
--- } ;
--- g = PGen Masc;
--- n = Sg ;
--- p = P3 ;
--- pron = False
--- } ;
---
-
-oper pronVseInanimate: Pronoun =
- { s = table {
- PF Nom _ _ => "всё" ;
- PF Gen _ _ => "всего" ;
- PF Dat _ _ => "всему" ;
- PF Acc _ _ => "всё" ;
- PF Inst _ _ => "всем" ;
- PF (Prepos _) _ _ => "всём"
- } ;
- g = PGen Neut;
- n = Sg ;
- p = P3 ;
- pron = False
- } ;
-
-
-
-----2 Nouns
---
----- Help type SubstFormDecl is introduced to reduce repetition in
----- the declination definitions. It allows us to define a declination type,
----- namely, the String component "s" of the CommNoun type
----- without any reference to the Gender parameter "g".
---
-
-{-
-
-Paradigms:
-1. hard regular
- Masc -Consonant
- Neut -o
- Fem -a
-1*. with vowel changes, Masc in Gen Sg, Fem and Neut in Gen Pl
-2. soft regular:
- Masc -ь
- Neut -е
- Fem -я
-2*. with vowel changes, Masc in Gen Sg, Fem in Gen Pl (no Neut)
-3. stem ending in г, к, х
- - Masc, Fem same as 1 but use и instead of ы (Nom/Acc Pl, Gen Sg)
- - Neut -кo has Nom Pl -ки instead of -кa
-3* with vowel changes, Masc in Gen Sg, Fem and Neut in Gen Pl
-4. stem ending in ш, ж, ч, щ, hard endings,
- use и instead of ы, and use е instead of unstressed o
-5. stem ending in ц, hard endings, use е instead of unstressed o
-5*. with vowel changes, Masc in Gen Sg, Fem and Neut in Gen Pl
-6. Masc ending in -й, Fem stem ending in vowel, Neut ending in ь?
-6* with vowel changes
-7. stem ending in и
-8. F2, Fem ending in -ь
- all -чь, -щь, -шь, -жь
- all -пь, -энь, -мь, -фь,
- most -дь, -ть, -сть, -сь, -вь, -бь,
-8*. with vowel changes in Ins Sg, Gen Sg
-9. Neut ending in -мя
-10. Masc in -oнoк
-11. Masc in -aнин
-12. Nom Pl in -ья
-
--}
-
-
- oper iAfter : Str -> Str = \stem ->
- case stem of {
- _ + ("г"|"к"|"х") => "и" ;
- _ + ("ш"|"ж"|"ч"|"щ") => "и" ;
- _ => "ы"
- };
-
- oper oAfter : Str -> Str = \stem ->
- case stem of {
- _ + ("ш"|"ж"|"ч"|"щ") => "е" ;
- _ + "ц" => "е" ;
- _ => "о"
- };
-
- -- 1. Hard regular masculine inanimate, e.g. spor.
- -- 3. stem ending in г, к, х
- -- 4. stem ending in ш, ж, ч, щ
- -- 5. stem ending in ц
- oper nRegHardMasc : Str ->CommNoun= \stem ->
- let i = iAfter stem in
- let o = oAfter stem in
- { s = table {
- NF Sg Nom => stem ;
- NF Sg Gen => stem+"а" ;
- NF Sg Dat => stem+"у" ;
- NF Sg Acc => stem ;
- NF Sg Inst => stem+o+"м" ;
- NF Sg (Prepos _) => stem+"е" ;
- NF Pl Nom => stem+i ;
- NF Pl Gen => stem+case stem of { _+("ш"|"ж"|"ч"|"щ") => "ей"; _ => "ов" } ;
- NF Pl Dat => stem+"ам" ;
- NF Pl Acc => stem+i ;
- NF Pl Inst => stem+"ами" ;
- NF Pl (Prepos _) => stem+"ах" };
- g = Masc; anim = Inanimate };
-
- -- 1. Hard regular neuter inanimate, e.g. pravilo.
- -- 3. stem ending in г, к, х
- -- 4. stem ending in ш, ж, ч, щ
- -- 5. stem ending in ц
- oper nRegHardNeut : Str ->CommNoun= \stem ->
- let o = oAfter stem in
- { s = table {
- NF Sg Nom => stem+o ;
- NF Sg Gen => stem+"а" ;
- NF Sg Dat => stem+"у" ;
- NF Sg Acc => stem+o ;
- NF Sg Inst => stem+o+"м" ;
- NF Sg (Prepos _) => stem+"е" ;
- NF Pl Nom => stem+case stem of { _+"к" => "и" ; _ => "а" } ;
- NF Pl Gen => stem ;
- NF Pl Dat => stem+"ам" ;
- NF Pl Acc => stem+"а" ;
- NF Pl Inst => stem+"ами" ;
- NF Pl (Prepos _) => stem+"ах" };
- g = Neut; anim = Inanimate };
-
- -- 1. Hard regular feminine inanimate, e.g. karta.
- -- 3. stem ending in г, к, х
- -- 4. stem ending in ш, ж, ч, щ
- -- 5. stem ending in ц
- oper nRegHardFem : Str ->CommNoun= \stem ->
- let i = iAfter stem in
- let o = oAfter stem in
- { s = table {
- NF Sg Nom => stem+"а" ;
- NF Sg Gen => stem+i ;
- NF Sg Dat => stem+"е" ;
- NF Sg Acc => stem+"у" ;
- NF Sg Inst => stem+o+"й" ;
- NF Sg (Prepos _) => stem+"е" ;
- NF Pl Nom => stem+i ;
- NF Pl Gen => stem ;
- NF Pl Dat => stem+"ам" ;
- NF Pl Acc => stem+i ;
- NF Pl Inst => stem+"ами" ;
- NF Pl (Prepos _) => stem+"ах" };
- g = Fem; anim = Inanimate };
-
- -- 2. Soft regular masculine inanimate, e.g. vichr'
- oper nRegSoftMasc : Str ->CommNoun= \stem ->
- { s = table {
- NF Sg Nom => stem+"ь";
- NF Sg Gen => stem+"я" ;
- NF Sg Dat => stem+"ю" ;
- NF Sg Acc => stem+"ь" ;
- NF Sg Inst => stem+"ем" ;
- NF Sg (Prepos _) => stem+"е" ;
- NF Pl Nom => stem+"и" ;
- NF Pl Gen => stem+"ей" ;
- NF Pl Dat => stem+"ям" ;
- NF Pl Acc => stem+"и" ;
- NF Pl Inst => stem+"ями" ;
- NF Pl (Prepos _) => stem+"ях" };
- g = Masc; anim = Inanimate };
-
- -- 2. Soft regular neuter inanimate, e.g. more
- oper nRegSoftNeut : Str ->CommNoun= \stem ->
- { s = table {
- NF Sg Nom => stem+"е";
- NF Sg Gen => stem+"я" ;
- NF Sg Dat => stem+"ю" ;
- NF Sg Acc => stem+"е" ;
- NF Sg Inst => stem+"ем" ;
- NF Sg (Prepos _) => stem+"е" ;
- NF Pl Nom => stem+"я" ;
- NF Pl Gen => stem+"ей" ;
- NF Pl Dat => stem+"ям" ;
- NF Pl Acc => stem+"я" ;
- NF Pl Inst => stem+"ями" ;
- NF Pl (Prepos _) => stem+"ях" };
- g = Neut; anim = Inanimate };
-
- -- 2. Soft regular feminine inanimate, e.g. burya
- oper nRegSoftFem : Str ->CommNoun= \stem ->
- { s = table {
- NF Sg Nom => stem+"я";
- NF Sg Gen => stem+"и" ;
- NF Sg Dat => stem+"е" ;
- NF Sg Acc => stem+"ю" ;
- NF Sg Inst => stem+"ей" ;
- NF Sg (Prepos _) => stem+"е" ;
- NF Pl Nom => stem+"и" ;
- NF Pl Gen => stem+"ь" ;
- NF Pl Dat => stem+"ям" ;
- NF Pl Acc => stem+"и" ;
- NF Pl Inst => stem+"ями" ;
- NF Pl (Prepos _) => stem+"ях" };
- g = Fem; anim = Inanimate };
-
- -- 6. Masc ending in -Vй (V = vowel)
- oper nDecl6Masc : Str ->CommNoun= \stem ->
- let n = nRegSoftMasc stem in
- { s = table {
- NF Sg (Nom|Acc) => stem+"й";
- NF Pl Gen => stem+"ев" ;
- sf => n.s!sf };
- g = n.g; anim = n.anim };
-
- -- 6. Neut ending in -Ve (V = vowel) (not adjectives)
- oper nDecl6Neut : Str ->CommNoun= \stem ->
- let n = nRegSoftNeut stem in
- { s = table {
- NF Pl Gen => stem+"й" ;
- sf => n.s!sf };
- g = n.g; anim = n.anim };
-
- -- 6. Fem ending in -Vя (V = vowel)
- oper nDecl6Fem : Str ->CommNoun= \stem ->
- let n = nRegSoftFem stem in
- { s = table {
- NF Pl Gen => stem+"й" ;
- sf => n.s!sf };
- g = n.g; anim = n.anim };
-
- -- 7. stem ending in и
- oper nDecl7Masc : Str ->CommNoun= \stem ->
- let n = nDecl6Masc stem in
- { s = table {
- NF Sg (Prepos _) => stem+"и" ;
- sf => n.s!sf };
- g = n.g; anim = n.anim };
-
- -- 7. stem ending in и
- oper nDecl7Neut : Str ->CommNoun= \stem ->
- let n = nDecl6Neut stem in
- { s = table {
- NF Sg (Prepos _) => stem+"и" ;
- sf => n.s!sf };
- g = n.g; anim = n.anim };
-
- -- 7. stem ending in и
- oper nDecl7Fem : Str ->CommNoun= \stem ->
- let n = nDecl6Fem stem in
- { s = table {
- NF Sg (Dat|Prepos _) => stem+"и" ;
- sf => n.s!sf };
- g = n.g; anim = n.anim };
-
-
- -- 8. Feminine ending in soft consonant
- oper nDecl8 : Str ->CommNoun= \stem ->
- let a : Str = case stem of { _+("ч"|"щ"|"ш"|"ж") => "а"; _ => "я" } in
- { s = table {
- NF Sg Nom => stem+"ь";
- NF Sg Gen => stem+"и" ;
- NF Sg Dat => stem+"и" ;
- NF Sg Acc => stem+"ь" ;
- NF Sg Inst => stem+"ью" ;
- NF Sg (Prepos _) => stem+"и" ;
- NF Pl Nom => stem+"и" ;
- NF Pl Gen => stem+"ей" ;
- NF Pl Dat => stem+a+"м" ;
- NF Pl Acc => stem+"и" ;
- NF Pl Inst => stem+a+"ми" ;
- NF Pl (Prepos _) => stem+a+"х" };
- g = Fem; anim = Inanimate };
-
- -- 9. Neut ending in -мя
- oper nDecl9 : Str ->CommNoun= \stem ->
- { s = table {
- NF Sg Nom => stem+"мя";
- NF Sg Gen => stem+"мени" ;
- NF Sg Dat => stem+"мени" ;
- NF Sg Acc => stem+"мя" ;
- NF Sg Inst => stem+"менем" ;
- NF Sg (Prepos _) => stem+"мени" ;
- NF Pl Nom => stem+"мена" ;
- NF Pl Gen => stem+"мён" ;
- NF Pl Dat => stem+"менам" ;
- NF Pl Acc => stem+"мена" ;
- NF Pl Inst => stem+"менами" ;
- NF Pl (Prepos _) => stem+"менах" };
- g = Fem; anim = Inanimate };
-
- -- 10. Masc in -oнoк
- oper nDecl10Hard : Str -> CommNoun = \stem ->
- nAnimate (nSplitSgPl (nRegHardMasc (stem+"онок")) -- FIXME: vowel change in sg
- (nRegHardNeut (stem+"ат"))) ;
-
- -- 10. Masc in -ёнoк
- oper nDecl10Soft : Str -> CommNoun = \stem ->
- nAnimate (nSplitSgPl (nRegHardMasc (stem+"ёнок")) -- FIXME: vowel change in sg
- (nRegHardNeut (stem+"ят"))) ;
-
- oper nSplitSgPl : CommNoun -> CommNoun -> CommNoun = \x, y ->
- {s = table {
- NF Sg c => x.s!(NF Sg c) ;
- NF Pl c => y.s!(NF Pl c)
- } ;
- g = x.g ; anim = y.anim
- } ;
-
- -- Nouns inflected as adjectives.
- oper nAdj : Adjective -> Gender ->CommNoun= \a,g ->
- { s = table {
- NF Sg c => a.s!AF c Inanimate (GSg g) ;
- NF Pl c => a.s!AF c Inanimate GPl };
- g = g; anim = Inanimate } ;
-
--- Makes a noun animate.
- oper nAnimate : CommNoun -> CommNoun = \n ->
- { s = table {
- NF Sg Acc => case n.g of {
- Masc => n.s!(NF Sg Gen);
- _ => n.s!(NF Sg Acc)
- };
- NF Pl Acc => n.s!(NF Pl Gen);
- sf => n.s!sf } ;
- g = n.g ;
- anim = Animate
- } ;
-
-oper
- SubstFormDecl = SS1 NForm ;
-
-oper nullEndInAnimateDeclStul: Str -> CommNoun = \brat ->
- {s = table
- { NF Sg Nom => brat ;
- NF Sg Gen => brat+"а" ;
- NF Sg Dat => brat+"у" ;
- NF Sg Acc => brat +"а";
- NF Sg Inst => brat+"ом" ;
- NF Sg (Prepos _) => brat+"е" ;
- NF Pl Nom => brat+"ья" ;
- NF Pl Gen => brat+"ьев" ;
- NF Pl Dat => brat+"ьям" ;
- NF Pl Acc => brat +"ьев";
- NF Pl Inst => brat+"ьями" ;
- NF Pl (Prepos _) => brat+"ьяах"
- } ;
- g = Masc ; anim = Inanimate
- } ;
-
-oper nullEndAnimateDeclBrat: Str -> CommNoun = \brat ->
- {s = table
- { NF Sg Nom => brat ;
- NF Sg Gen => brat+"а" ;
- NF Sg Dat => brat+"у" ;
- NF Sg Acc => brat +"а";
- NF Sg Inst => brat+"ом" ;
- NF Sg (Prepos _) => brat+"е" ;
- NF Pl Nom => brat+"ья" ;
- NF Pl Gen => brat+"ьев" ;
- NF Pl Dat => brat+"ьям" ;
- NF Pl Acc => brat +"ьев";
- NF Pl Inst => brat+"ьями" ;
- NF Pl (Prepos _) => brat+"ьяах"
- } ;
- g = Masc ; anim = Animate
- } ;
-
-oper irregPl_StemInAnimateDecl: Str -> CommNoun = \derev ->
- { s = table
- { NF Sg Nom => derev+"о" ;
- NF Sg Gen => derev+"а" ;
- NF Sg Dat => derev+"у" ;
- NF Sg Acc => derev +"о";
- NF Sg Inst => derev+"ом" ;
- NF Sg (Prepos _) => derev+"е" ;
- NF Pl Nom => derev+"ья" ;
- NF Pl Gen => derev+"ьев" ;
- NF Pl Dat => derev+"ьям" ;
- NF Pl Acc => derev +"ья" ;
- NF Pl Inst => derev+"ьями" ;
- NF Pl (Prepos _) => derev+"ьяах"
- } ;
- g = Masc ; anim = Inanimate
- } ;
-
-oper kg_oEnd_SgDecl: Str -> CommNoun = \mnog ->
-{ s = table {
- NF _ Nom => mnog+"о" ;
- NF _ Gen => mnog +"их";
- NF _ Dat => mnog+"им" ;
- NF _ Acc => mnog+"о" ;
- NF _ Inst => mnog+"ими" ;
- NF _ (Prepos _) => mnog+"их"
- } ;
- g = Neut ; anim = Inanimate
-} ;
-
-oper oEnd_PlDecl: Str -> CommNoun = \menshinstv ->
- { s = table {
- NF _ Nom => menshinstv+"а" ;
- NF _ Gen => menshinstv;
- NF _ Dat => menshinstv+"ам" ;
- NF _ Acc => menshinstv+"ва" ;
- NF _ Inst => menshinstv+"ами" ;
- NF _ (Prepos _) => menshinstv+"вах"
- } ;
- g = Neut ; anim = Inanimate
-} ;
-
-oper oEnd_SgDecl: Str -> CommNoun = \bolshinstv ->
- {s = table {
- NF _ Nom => bolshinstv+"о" ;
- NF _ Gen => bolshinstv+"а" ;
- NF _ Dat => bolshinstv+"у" ;
- NF _ Acc => bolshinstv+"о" ;
- NF _ Inst => bolshinstv+"ом" ;
- NF _ (Prepos _) => bolshinstv+"е"
- } ;
- g = Neut ; anim = Inanimate
-} ;
-
--- Note: Now we consider only the plural form of the pronoun "все" (all)
--- treated as an adjective (see AllDetPl definition).
--- The meaning "entire" is not considered, which allows us to form
--- the pronoun-adjective from the substantive form below:
-
-oper eEnd_Decl: Str -> CommNoun = \vs ->
-{ s = table {
- NF Sg Nom => vs+"е" ;
- NF Sg Gen => vs+"ех" ;
- NF Sg Dat => vs+"ем" ;
- NF Sg Acc => vs+"ех" ;
- NF Sg Inst => vs+"еми" ;
- NF Sg (Prepos _) => vs+"ех" ;
- NF Pl Nom => vs+"е" ;
- NF Pl Gen => vs +"ех";
- NF Pl Dat => vs+"ем" ;
- NF Pl Acc => vs+ "ех" ;
- NF Pl Inst => vs+"еми" ;
- NF Pl (Prepos _) => vs+"ех"
- } ;
- g = Neut ; anim = Inanimate
-} ;
-
-
-----2 Adjectives
---
----- Type Adjective only has positive degree while AdjDegr type
----- includes also comparative and superlative forms.
---
- kazhdujDet: Adjective = aRegHardStemStress "кажд" ;
- samuj : Adjective = aRegHardStemStress "сам" ;
-
--- lubojDet: Adjective = uy_oj_EndDecl "люб" ;
--- drugojDet: Adjective = uy_oj_EndDecl "друг" ;
--- glaznoj: Adjective = uy_oj_EndDecl "глазн" ;
- kotorujDet: Adjective = aRegHardStemStress "котор";
- nekotorujDet: Adjective = aRegHardStemStress "некотор";
- takoj: Adjective = aRegHardEndStress "так";
--- kakojNibudDet: Adjective = i_oj_EndDecl "как" "-нибудь";
--- kakojDet: Adjective = i_oj_EndDecl "как" [];
--- nikakojDet: Adjective = i_oj_EndDecl "никак" [];
- bolshinstvoSgDet: Adjective = extAdjFromSubst (nRegHardNeut "большинств");
- mnogoSgDet: Adjective = extAdjFromSubst (nRegHardNeut "мног");
- nemnogoSgDet: Adjective = extAdjFromSubst (nRegHardNeut "немног");
- skolkoSgDet: Adjective = extAdjFromSubst (nRegHardNeut "скольк");
-
--- bolshinstvoPlDet: Adjective = extAdjFromSubst (oEnd_PlDecl "большинств");
-
-
-
- oper aRegHardStemStress : Str -> Adjective = \stem -> aRegHard stem False ;
-
- oper aRegHardEndStress : Str -> Adjective = \stem -> aRegHard stem True;
-
- -- 1. regular hard adjective
- -- 3. stem ending with г, к, х
- -- 4. stem ending with ш, ж, ч, щ
- -- 5. stem ending with ц
- oper aRegHard : Str -> Bool -> Adjective = \stem, endStress ->
- let i = iAfter stem in
- let o = case endStress of {
- True => "о" ;
- False => oAfter stem } in
- { s = table {
- AF Nom _ (GSg Masc) => stem + case endStress of {
- True => "ой";
- False => iAfter stem + "й" } ;
- AF Nom _ (GSg Neut) => stem + o+"е";
- AF Gen _ (GSg (Masc|Neut)) => stem + o+"го";
- AF Dat _ (GSg (Masc|Neut)) => stem + o+"му";
- AF Acc Inanimate (GSg Masc) => stem + i+"й";
- AF Acc Animate (GSg Masc) => stem + o+"го";
- AF Acc _ (GSg Neut) => stem + o+"е";
- AF Inst _ (GSg (Masc|Neut)) => stem + i+"м";
- AF (Prepos _) _ (GSg (Masc|Neut)) => stem + o+"м";
-
- AF Nom _ (GSg Fem) => stem + "ая";
- AF Acc _ (GSg Fem) => stem + "ую";
- AF _ _ (GSg Fem) => stem + o+"й";
-
- AF Nom _ GPl => stem + i+"е";
- AF Acc Inanimate GPl => stem + i+"е";
- AF Acc Animate GPl => stem + i+"х";
- AF Gen _ GPl => stem + i+"х";
- AF Inst _ GPl => stem + i+"ми";
- AF Dat _ GPl => stem + i+"м";
- AF (Prepos _) _ GPl => stem + i+"х";
-
- AFShort (GSg Masc) => stem;
- AFShort (GSg Fem) => stem + "а";
- AFShort (GSg Neut) => stem + o ;
- AFShort GPl => stem + i;
-
- AdvF => stem + o
- } } ;
-
- oper aRegSoft : Str -> Adjective = \stem ->
- { s = table {
- AF Nom _ (GSg Masc) => stem + "ий" ;
- AF Nom _ (GSg Neut) => stem + "ее";
- AF Gen _ (GSg (Masc|Neut)) => stem + "его";
- AF Dat _ (GSg (Masc|Neut)) => stem + "ему";
- AF Acc Inanimate (GSg Masc) => stem + "ий";
- AF Acc Animate (GSg Masc) => stem + "его";
- AF Acc _ (GSg Neut) => stem + "ее";
- AF Inst _ (GSg (Masc|Neut)) => stem + "им";
- AF (Prepos _) _ (GSg (Masc|Neut)) => stem + "ем";
-
- AF Nom _ (GSg Fem) => stem + "яя";
- AF Acc _ (GSg Fem) => stem + "юю";
- AF _ _ (GSg Fem) => stem + "ей";
-
- AF Nom _ GPl => stem + "ие";
- AF Acc Inanimate GPl => stem + "ие";
- AF Acc Animate GPl => stem + "их";
- AF Gen _ GPl => stem + "их";
- AF Inst _ GPl => stem + "ими";
- AF Dat _ GPl => stem + "им";
- AF (Prepos _) _ GPl => stem + "их";
-
- AFShort (GSg Masc) => stem; -- FIXME: add e if stem ends in consonant + n
- AFShort (GSg Fem) => stem + "я";
- AFShort (GSg Neut) => stem + "е" ;
- AFShort GPl => stem + "и" ;
-
- AdvF => stem + "е"
- } } ;
-
-
-
-
- vseDetPl: Adjective = extAdjFromSubst (eEnd_Decl "вс") ;
- extAdjFromSubst: CommNoun -> Adjective = \ vse ->
- {s = \\af => vse.s ! NF (numAF af) (caseAF af) } ;
-
-
-oper totDet: Adjective = {s = table {
- AF Nom _ (GSg Masc) => "тот";
- AF Nom _ (GSg Fem) => "та";
- AF Nom _ (GSg Neut) => "то";
- AF Nom _ GPl => "те";
- AF Acc Inanimate (GSg Masc) => "тот";
- AF Acc Animate (GSg Masc) => "того";
- AF Acc _ (GSg Fem) => "ту";
- AF Acc _ (GSg Neut) => "то";
- AF Acc Inanimate GPl => "те";
- AF Acc Animate GPl => "тех";
- AF Gen _ (GSg Masc) => "того";
- AF Gen _ (GSg Fem) => "той";
- AF Gen _ (GSg Neut) => "того";
- AF Gen _ GPl => "тех";
- AF Inst _ (GSg Masc) => "тем";
- AF Inst _ (GSg Fem) => "той";
- AF Inst _ (GSg Neut) => "тем";
- AF Inst _ GPl => "теми";
- AF Dat _ (GSg Masc) => "тому";
- AF Dat _ (GSg Fem) => "той";
- AF Dat _ (GSg Neut) => "тому";
- AF Dat _ GPl => "тем";
- AF (Prepos _) _ (GSg Masc) => "том";
- AF (Prepos _) _ (GSg Fem) => "той";
- AF (Prepos _) _ (GSg Neut) => "том";
- AF (Prepos _) _ GPl => "тех" ;
- AFShort (GSg Masc) => "тот";
- AFShort (GSg Fem) => "та";
- AFShort (GSg Neut) => "то";
- AFShort GPl => "те";
- AdvF => "то"
- }
- } ;
-
-oper odinDet: Adjective = {s = table {
- AF Nom _ (GSg Masc) => "один";
- AF Nom _ (GSg Fem) => "одна";
- AF Nom _ (GSg Neut) => "одно";
- AF Nom _ GPl => "одни";
- AF Acc Inanimate (GSg Masc) => "один";
- AF Acc Animate (GSg Masc) => "одного";
- AF Acc _ (GSg Fem) => "одну";
- AF Acc _ (GSg Neut) => "одно";
- AF Acc Inanimate GPl => "одни";
- AF Acc Animate GPl => "одних";
- AF Gen _ (GSg Masc) => "одного";
- AF Gen _ (GSg Fem) => "одной";
- AF Gen _ (GSg Neut) => "одного";
- AF Gen _ GPl => "одних";
- AF Inst _ (GSg Masc) => "одним";
- AF Inst _ (GSg Fem) => "одной";
- AF Inst _ (GSg Neut) => "одним";
- AF Inst _ GPl => "одними";
- AF Dat _ (GSg Masc) => "одному";
- AF Dat _ (GSg Fem) => "одной";
- AF Dat _ (GSg Neut) => "одному";
- AF Dat _ GPl => "одним";
- AF (Prepos _) _ (GSg Masc) => "одном";
- AF (Prepos _) _ (GSg Fem) => "одной";
- AF (Prepos _) _ (GSg Neut) => "одном";
- AF (Prepos _) _ GPl => "одних";
- AFShort (GSg Masc) => "один";
- AFShort (GSg Fem) => "одна";
- AFShort (GSg Neut) => "одно";
- AFShort GPl => "одни";
- AdvF => "одно"
- }
- } ;
-
-oper etotDet: Adjective = {s = table {
- AF Nom _ (GSg Masc) => "этот";
- AF Nom _ (GSg Fem) => "эта";
- AF Nom _ (GSg Neut) => "это";
- AF Nom _ GPl => "эти";
- AF Acc Inanimate (GSg Masc) => "этот";
- AF Acc Animate (GSg Masc) => "этого";
- AF Acc _ (GSg Fem) => "эту";
- AF Acc _ (GSg Neut) => "это";
- AF Acc Inanimate GPl => "эти";
- AF Acc Animate GPl => "этих";
- AF Gen _ (GSg Masc) => "этого";
- AF Gen _ (GSg Fem) => "этой";
- AF Gen _ (GSg Neut) => "этого";
- AF Gen _ GPl => "этих";
- AF Inst _ (GSg Masc) => "этим";
- AF Inst _ (GSg Fem) => "этой";
- AF Inst _ (GSg Neut) => "этим";
- AF Inst _ GPl => "этими";
- AF Dat _ (GSg Masc) => "этому";
- AF Dat _ (GSg Fem) => "этой";
- AF Dat _ (GSg Neut) => "этому";
- AF Dat _ GPl => "этим";
- AF (Prepos _) _ (GSg Masc) => "этом";
- AF (Prepos _) _ (GSg Fem) => "этой";
- AF (Prepos _) _ (GSg Neut) => "этом";
- AF (Prepos _) _ GPl => "этих";
- AFShort (GSg Masc) => "этот";
- AFShort (GSg Fem) => "эта";
- AFShort (GSg Neut) => "это";
- AFShort GPl => "эти";
- AdvF => "это"
- }
- } ;
-
-oper vesDet: Adjective = {s = table {
- AF Nom _ (GSg Masc) => "весь";
- AF Nom _ (GSg Fem) => "вся";
- AF Nom _ (GSg Neut) => "всё";
- AF Nom _ GPl => "все";
- AF Acc Animate (GSg Masc) => "весь";
- AF Acc Inanimate (GSg Masc) => "всего";
- AF Acc _ (GSg Fem) => "всю";
- AF Acc _ (GSg Neut) => "всё";
- AF Acc Inanimate GPl => "все";
- AF Acc Animate GPl => "всех";
- AF Gen _ (GSg Masc) => "всего";
- AF Gen _ (GSg Fem) => "всей";
- AF Gen _ (GSg Neut) => "всего";
- AF Gen _ GPl => "всех";
- AF Inst _ (GSg Masc) => "всем";
- AF Inst _ (GSg Fem) => "всей";
- AF Inst _ (GSg Neut) => "всем";
- AF Inst _ GPl => "всеми";
- AF Dat _ (GSg Masc) => "ему";
- AF Dat _ (GSg Fem) => "ей";
- AF Dat _ (GSg Neut) => "ему";
- AF Dat _ GPl => "всем";
- AF (Prepos _) _ (GSg Masc) => "всём";
- AF (Prepos _) _ (GSg Fem) => "всей";
- AF (Prepos _) _ (GSg Neut) => "всём";
- AF (Prepos _) _ GPl => "всех" ;
- AFShort (GSg Masc) => "весь";
- AFShort (GSg Fem) => "вся";
- AFShort (GSg Neut) => "всё";
- AFShort GPl => "все";
- AdvF => "полностью"
- }
- } ;
-
-oper uy_j_EndDecl : Str -> Adjective = \s ->{s = table {
- AF Nom _ (GSg Masc) => s+ "ый";
- AF Nom _ (GSg Fem) => s + "ая";
- AF Nom _ (GSg Neut) => s + "ое";
- AF Nom _ GPl => s + "ые";
- AF Acc Inanimate (GSg Masc) => s + "ый";
- AF Acc Animate (GSg Masc) => s + "ого";
- AF Acc _ (GSg Fem) => s + "ую";
- AF Acc _ (GSg Neut) => s + "ое";
- AF Acc Inanimate GPl => s + "ые";
- AF Acc Animate GPl => s + "ых";
- AF Gen _ (GSg Masc) => s + "ого";
- AF Gen _ (GSg Fem) => s + "ой";
- AF Gen _ (GSg Neut) => s + "ого";
- AF Gen _ GPl => s + "ых";
- AF Inst _ (GSg Masc) => s + "ым";
- AF Inst _ (GSg Fem) => s + "ой";
- AF Inst _ (GSg Neut) => s + "ым";
- AF Inst _ GPl => s + "ыми";
- AF Dat _ (GSg Masc) => s + "ому";
- AF Dat _ (GSg Fem) => s + "ой";
- AF Dat _ (GSg Neut) => s + "ому";
- AF Dat _ GPl => s + "ым";
- AF (Prepos _) _ (GSg Masc) => s + "ом";
- AF (Prepos _) _ (GSg Fem) => s + "ой";
- AF (Prepos _) _ (GSg Neut) => s + "ом";
- AF (Prepos _) _ GPl => s + "ых";
- AFShort (GSg Masc) => s;
- AFShort (GSg Fem) => s + "а";
- AFShort (GSg Neut) => s + "о" ;
- AFShort GPl => s + "ы";
- AdvF => s +"о"
- }
- } ;
-
-{-
--- Commented out since I don't know what the short forms are
-oper ti_j_EndDecl : Str -> Adjective = \s ->{s = table {
- AF Nom _ (GSg Masc) => s+"ий";
- AF Nom _ (GSg Fem) => s+"ья";
- AF Nom _ (GSg Neut) => s+"ье";
- AF Nom _ GPl => s+"ьи";
- AF Acc Inanimate (GSg Masc) => s+"ий";
- AF Acc Animate (GSg Masc) => s+"ьего";
- AF Acc _ (GSg Fem) => s+"ью";
- AF Acc _ (GSg Neut) => s+"ье";
- AF Acc Inanimate GPl => s+"ьи";
- AF Acc Animate GPl => s+"ьих";
- AF Gen _ (GSg Masc) => s+"ьего";
- AF Gen _ (GSg Fem) => s+"ьей";
- AF Gen _ (GSg Neut) => s+"ьего";
- AF Gen _ GPl => s+"ьих";
- AF Inst _ (GSg Masc) => s+"ьим";
- AF Inst _ (GSg Fem) => s+"ьей";
- AF Inst _ (GSg Neut) => s+"ьим";
- AF Inst _ GPl => s+"ьими";
- AF Dat _ (GSg Masc) => s+"ьему";
- AF Dat _ (GSg Fem) => s+"ьей";
- AF Dat _ (GSg Neut) => s+"ьему";
- AF Dat _ GPl => s+"ьим";
- AF (Prepos _) _ (GSg Masc) => s+"ьем";
- AF (Prepos _) _ (GSg Fem) => s+"ьей";
- AF (Prepos _) _ (GSg Neut) => s+"ьем";
- AF (Prepos _) _ GPl => s+"ьих";
- AdvF => s + "ье"
- }
- } ;
--}
-
-
-
----- 2 Adverbs
---
---oper vsegda: Adverb = { s = "всегда" } ;
---oper chorosho: Adverb = { s = "хорошо" } ;
---
----- 2 Verbs
---
----- Dummy verbum "have" that corresponds to the phrases like
----- "I have a headache" in English. The corresponding sentence
----- in Russian doesn't contain a verb:
---
---oper have: Verbum = {s=\\ vf => "-" ; asp = Imperfective} ;
---
----- There are two common conjugations
----- (according to the number and the person of the subject)
----- patterns in the present tense in the indicative mood.
-
--- +++ MG_UR: new conjugation class 'Foreign' introduced +++
-param Conjugation = First | FirstE | Second | SecondA | Mixed | Dolzhen | Foreign ;
-
-
---3 First conjugation (in Present) verbs :
-oper verbIdti : Verbum = verbDecl Imperfective First "ид" "у" "шел" "иди" "идти";
-
---oper verbGulyat : Verbum = verbDecl Imperfective First "гуля" "ю" "гулял" "гуляй" "гулять";
---oper verbVkluchat : Verbum = verbDecl Imperfective First "включа" "ю" "включал" "включай" "включать";
-oper verbSuchestvovat : Verbum = verbDecl Imperfective First "существу" "ю" "существовал" "существуй" "существовать";
---oper verbVukluchat : Verbum = verbDecl Imperfective First "выключа" "ю" "выключал" "выключай" "выключать";
---oper verbZhdat : Verbum = verbDecl Imperfective First "жд" "у" "ждал" "жди" "ждать" ;
---oper verbBegat : Verbum = verbDecl Imperfective First "бега" "ю" "бегал" "бегай" "бегать";
---oper verbPrinimat : Verbum = verbDecl Imperfective First "принима" "ю" "принимал" "принимай" "принимать";
---oper verbDokazuvat : Verbum = verbDecl Imperfective First "доказыва" "ю" "доказывал" "доказывай" "доказывать";
---oper verbPredpochitat : Verbum = verbDecl Imperfective First "предпочита" "ю" "предпочитал" "предпочитай" "предпочитать";
---oper verbOtpravlyat : Verbum = verbDecl Imperfective First "отправля" "ю" "отправлял" "отправляй" "отправлять";
---oper verbSlomat : Verbum = verbDecl Perfective First "слома" "ю" "сломал" "сломай" "сломать";
-
-
----- Verbs with vowel "ё": "даёшь" (give), "пьёшь" (drink) :
---oper verbDavat : Verbum = verbDecl Imperfective FirstE "да" "ю" "давал" "давай" "давать";
---oper verbPit : Verbum = verbDecl Imperfective FirstE "пь" "ю" "пил" "пей" "пить";
---
-
-
-oper verbByut : Verbum = verbDecl Perfective First "буд" "у" "был" "будь" "быть";
-
-oper verbMoch : Verbum = verbDeclMoch Imperfective First "мог" "у" "мог" "моги" "мочь" "мож";
-
-----3 Second conjugation (in Present) verbs :
---
---oper verbLubit : Verbum = verbDecl Imperfective Second "люб" "лю" "любил" "люби" "любить";
---oper verbGovorit : Verbum = verbDecl Imperfective Second "говор" "ю" "говорил" "говори" "говорить";
---
---oper verbBolet_2 : Verbum = verbDecl Imperfective Second "бол" "ю" "болел" "боли" "болеть";
---oper verbPoranit : Verbum = verbDecl Perfective Second "поран" "ю" "поранил" "порань" "поранить";
---
--- Irregular Mixed:
-oper verbKhotet : Verbum = verbDecl Imperfective Mixed "хоч" "у" "хотел" "хоти" "хотеть";
-
--- Irregular
-oper verbDolzhen : Verbum = verbDecl Imperfective Dolzhen "долж" "ен" "долж" ["будь должен"] ["быть должным"] ;
-
-
--- further conjugation class added by Magda Gerritsen and Ulrich Real:
--- foreign words introduced in Russian
-
-oper verbOrganisuet : Verbum = verbDecl Imperfective Foreign "организу" "ю" "организовал" "организуй" "организовать";
-
-
-oper idetDozhd: Verbum -> Verbum = \idet -> {s = \\vf=>idet.s!vf ++ "дождь"; asp = Imperfective};
-
--- "PresentVerb" takes care of the present tense conjugation.
-
-param PresentVF = PRF GenNum Person;
-oper PresentVerb : Type = PresentVF => Str ;
-
-oper presentConjDolzhen: Str -> Str -> PresentVerb = \del, sgP1End ->
- table {
- PRF GPl _ => del + "ны" ;
- PRF (GSg Masc) _ => del + sgP1End ;
- PRF (GSg Fem) _ => del + "на" ;
- PRF (GSg Neut) _ => del + "но"
- };
-
--- +++ MG_UR: changed! +++
-oper presentConjMixed: Str -> Str -> PresentVerb = \del, sgP1End ->
- table {
- PRF (GSg _) P1 => del+ sgP1End ; -- sgP1End "чу"
- PRF (GSg _) P2 => del+ "чешь" ;
- PRF (GSg _) P3 => del+ "чет" ;
- PRF GPl P1 => del+ "тим" ;
- PRF GPl P2 => del+ "тите" ;
- PRF GPl P3 => del+ "тят"
- };
-
--- +++ MG_UR: changed! (+ д) +++
-oper presentConj2: Str -> Str -> PresentVerb = \del, sgP1End ->
-table {
- PRF (GSg _) P1 => del+ sgP1End ; -- sgP1End "жу"
- PRF (GSg _) P2 => del+ "дишь" ;
- PRF (GSg _) P3 => del+ "дит" ;
- PRF GPl P1 => del+ "дим" ;
- PRF GPl P2 => del+ "дите" ;
- PRF GPl P3 => del+ "дят"
- };
-
-oper presentConj2a: Str -> Str -> PresentVerb = \del, sgP1End ->
-table {
- PRF (GSg _) P1 => del+ sgP1End ; -- sgP1End "жу"
- PRF (GSg _) P2 => del+ "ишь" ;
- PRF (GSg _) P3 => del+ "ит" ;
- PRF GPl P1 => del+ "им" ;
- PRF GPl P2 => del+ "ите" ;
- PRF GPl P3 => del+ "ят"
- };
-
-oper presentConj1E: Str -> Str -> PresentVerb = \del, sgP1End ->
- table {
- PRF (GSg _) P1 => del+ sgP1End ;
- PRF (GSg _) P2 => del+ "ёшь" ;
- PRF (GSg _) P3 => del+ "ёт" ;
- PRF GPl P1 => del+ "ём" ;
- PRF GPl P2 => del+ "ёте" ;
- PRF GPl P3 => del+ sgP1End + "т"
- };
-
-oper presentConj1: Str -> Str -> PresentVerb = \del, sgP1End ->
- table {
- PRF (GSg _) P1 => del+ sgP1End ;
- PRF (GSg _) P2 => del+ "ешь" ;
- PRF (GSg _) P3 => del+ "ет" ;
- PRF GPl P1 => del+ "ем" ;
- PRF GPl P2 => del+ "ете" ;
- PRF GPl P3 => del+ sgP1End + "т"
- };
-
-oper presentConj1Moch: Str -> Str -> Str -> PresentVerb = \del, sgP1End, altRoot ->
- table {
- PRF (GSg _) P1 => del + sgP1End ;
- PRF (GSg _) P2 => altRoot + "ешь" ;
- PRF (GSg _) P3 => altRoot + "ет" ;
- PRF GPl P1 => altRoot + "ем" ;
- PRF GPl P2 => altRoot + "ете" ;
- PRF GPl P3 => del+ sgP1End + "т"
- };
-
--- "PastVerb" takes care of the past tense conjugation.
-
-param PastVF = PSF GenNum ;
-oper PastVerb : Type = PastVF => Str ;
-oper pastConj: Str -> PastVerb = \del ->
- table {
- PSF (GSg Masc) => del ;
- PSF (GSg Fem) => del +"а" ;
- PSF (GSg Neut) => del+"о" ;
- PSF GPl => del+ "и"
- };
-
-oper pastConjDolzhen: Str -> PastVerb = \del ->
- table {
- PSF (GSg Masc) => ["был "] + del + "ен" ;
- PSF (GSg Fem) => ["была "] + del + "на" ;
- PSF (GSg Neut) => ["было "] + del + "но" ;
- PSF GPl => ["были "] + del + "ны"
- };
-
--- further class added by Magda Gerritsen and Ulrich Real
-oper presentConjForeign: Str -> Str -> PresentVerb = \del, sgP1End ->
- table {
- PRF (GSg _) P1 => del+ sgP1End ; -- sgP1End "ю"
- PRF (GSg _) P2 => del+ "ешь" ;
- PRF (GSg _) P3 => del+ "ет" ;
- PRF GPl P1 => del+ "ем" ;
- PRF GPl P2 => del+ "ете" ;
- PRF GPl P3 => del+ "ют"
-};
-
--- "verbDecl" sorts out verbs according to the aspect and voice parameters.
--- It produces the full conjugation table for a verb entry
-
--- +++ MG_UR: new conjugation class 'Foreign' introduced +++
-oper verbDecl: Aspect -> Conjugation -> Str -> Str -> Str -> Str -> Str -> Verbum =
- \a, c, del, sgP1End, sgMascPast, imperSgP2, inf ->
- let conj = case c of {
- First => <presentConj1,pastConj> ;
- FirstE => <presentConj1E,pastConj> ;
- Second => <presentConj2,pastConj> ;
- SecondA => <presentConj2a,pastConj> ;
- Mixed => <presentConjMixed,pastConj> ;
- Dolzhen => <presentConjDolzhen,pastConjDolzhen> ;
- Foreign => <presentConjForeign,pastConj> } in
- let patt = case a of {
- Perfective => mkVerbImperfective;
- Imperfective => mkVerbImperfective } in
- patt inf imperSgP2 (conj.p1 del sgP1End) (conj.p2 sgMascPast) ;
-
--- for verbs like "мочь" ("can") with changing consonants (first conjugation):
--- "могу - можешь"
-oper verbDeclMoch: Aspect -> Conjugation -> Str -> Str -> Str -> Str ->Str -> Str -> Verbum =
- \a, c, del, sgP1End, sgMascPast, imperSgP2, inf, altRoot ->
- let patt = case a of {
- Perfective => mkVerbImperfective;
- Imperfective => mkVerbImperfective } in
- patt inf imperSgP2 (presentConj1Moch del sgP1End altRoot) (pastConj sgMascPast);
-
-oper add_sya : Voice -> Str -> Str = \v,x ->
- case v of {
- Act => x ;
- Pas => case Predef.dp 2 x of {
- "а" | "е" | "ё" | "и" | "о" | "у" | "ы" | "э" | "ю" | "я" => x + "сь" ;
- _ => x + "ся"
- }
- };
-
-
--- Generation the imperfective active pattern given
--- a number of basic conjugation forms.
-
-oper mkVerbImperfective : Str -> Str -> PresentVerb -> PastVerb -> Verbum =
- \inf, imper, presentFuture, past -> { s = table { VFORM vox vf =>
- case vf of {
- VINF => add_sya vox inf ;
-
- VIMP _ P1 => "давайте" ++ add_sya vox inf ;
- VIMP Sg P2 => add_sya vox imper ;
- VIMP Pl P2 => add_sya vox (imper+"те") ;
- VIMP Sg P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF (GSg Masc) P3)) ;
- VIMP Pl P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF GPl P3)) ;
-
- VSUB gn => add_sya vox (past ! (PSF gn)) ++ "бы";
-
- VIND (GSg _) (VPresent p) => add_sya vox (presentFuture ! (PRF (GSg Masc) p));
- VIND GPl (VPresent p) => add_sya vox (presentFuture ! (PRF GPl p));
- VIND (GSg _) (VFuture P1) => "буду" ++ add_sya vox inf ;
- VIND (GSg _) (VFuture P2) => "будешь" ++ add_sya vox inf ;
- VIND (GSg _) (VFuture P3) => "будет" ++ add_sya vox inf ;
- VIND GPl (VFuture P1) => "будем" ++ add_sya vox inf ;
- VIND GPl (VFuture P2) => "будете" ++ add_sya vox inf ;
- VIND GPl (VFuture P3) => "будут" ++ add_sya vox inf ;
- VIND gn VPast => add_sya vox (past ! (PSF gn))
- } } ;
- asp = Imperfective
- } ;
-
-oper mkVerbPerfective: Str -> Str -> PresentVerb -> PastVerb -> Verbum =
- \inf, imper, presentFuture, past -> { s = table { VFORM vox vf =>
- case vf of {
- VINF => add_sya vox inf ;
- VIMP Sg P1 => "давайте" ++ add_sya vox (presentFuture ! (PRF (GSg Masc) P1));
- VIMP Pl P1 => "давайте" ++ add_sya vox (presentFuture ! (PRF GPl P1));
- VIMP Sg P2 => add_sya vox imper ;
- VIMP Pl P2 => add_sya vox (imper+"те") ;
- VIMP Sg P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF (GSg Masc) P3)) ;
- VIMP Pl P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF GPl P3)) ;
-
- VSUB gn => add_sya vox (past ! (PSF gn)) ++ "бы" ;
-
- VIND (GSg _) (VPresent _) => nonExist ;
- VIND GPl (VPresent P1) => nonExist ;
- VIND GPl (VPresent P2) => nonExist ;
- VIND GPl (VPresent P3) => nonExist ;
- VIND gn (VFuture p) => add_sya vox (presentFuture ! (PRF gn p)) ;
- VIND gn VPast => add_sya vox (past ! (PSF gn))
- } } ;
- asp = Perfective
- } ;
-
-----2 Proper names are a simple kind of noun phrases.
---
-oper ProperName : Type = {s : Case => Str ; g : Gender ; anim : Animacy} ;
---
--- mkCNProperName : CommNoun -> ProperName = \cn ->
---{s = \\c => cn.s! (NF Sg c); g=cn.g; anim = cn.anim };
---
- mkProperNameMasc : Str -> Animacy -> ProperName = \ivan, anim ->
- { s = table { Nom => ivan ;
- Gen => ivan + "а";
- Dat => ivan + "у";
- Acc => case anim of
- { Animate => ivan + "а";
- Inanimate => ivan
- };
- Inst => ivan + "ом";
- (Prepos _) => ivan + "е" } ;
- g = Masc; anim = anim };
-
- mkProperNameFem : Str -> Animacy -> ProperName = \masha, anim ->
- { s = table { Nom => masha + "а";
- Gen => masha + "и";
- Dat => masha + "е";
- Acc => masha + "у";
- Inst => masha + "ей";
- (Prepos _) => masha + "е" };
- g = Fem ; anim = anim };
-
-};
diff --git a/next-lib/src/russian/NounRus.gf b/next-lib/src/russian/NounRus.gf
deleted file mode 100644
index f62e55cac..000000000
--- a/next-lib/src/russian/NounRus.gf
+++ /dev/null
@@ -1,258 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
-concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
-
- flags optimize=all_subs ; coding=utf8 ;
-
- lin
- DetCN kazhduj okhotnik = {
- s = \\c => case kazhduj.c of {
- Nom =>
- kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g kazhduj.n) ++
- okhotnik.s ! NF kazhduj.n (extCase c) ;
- _ =>
- kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g kazhduj.n) ++
- okhotnik.s ! NF kazhduj.n kazhduj.c };
- n = kazhduj.n ;
- p = P3 ;
- pron = False;
- g = case kazhduj.g of { PNoGen => (PGen okhotnik.g); _ => kazhduj.g };
- anim = okhotnik.anim
- } ;
-
- UsePN masha = {
- s = \\c => masha.s ! (extCase c) ;
- p = P3; g = PGen masha.g ; anim = masha.anim ;
- n = Sg; nComp = Sg; pron = False} ;
-
- UsePron p = p ** {anim = Inanimate};
-
- PredetNP pred np = {
- s = \\pf => pred.s! (AF (extCase pf) np.anim (gennum (pgen2gen np.g) np.n))++ np.s ! pf ;
- n = np.n;
- p = np.p;
- g = np.g;
- anim = np.anim;
- pron = np.pron
- } ;
-
- PPartNP np v2 = {
- s = \\pf => np.s ! pf ++ v2.s ! VFORM Act VINF ;
- -- no participles in the Verbum type as they behave as adjectives
- n = np.n;
- p = np.p;
- g = np.g;
- anim = np.anim;
- pron = np.pron
- } ;
-
- AdvNP np adv = {
- s = \\pf => np.s ! pf ++ adv.s ;
- n = np.n;
- p = np.p;
- g = np.g;
- anim = np.anim;
- pron = np.pron
- } ;
-
--- 1.4 additions AR 17/6/2008
-
- DetNP kazhduj =
- let
- g = Neut ; ----
- anim = Inanimate ;
- in {
- s = \\c => kazhduj.s ! AF (extCase c) anim (gennum g kazhduj.n) ;
- n = kazhduj.n ;
- p = P3 ;
- pron = False;
- g = case kazhduj.g of { PNoGen => (PGen g); _ => kazhduj.g };
- anim = anim
- } ;
-
- DetQuantOrd quant num ord = {
- s = \\af => quant.s !af ++ num.s! (caseAF af) ! (genAF af) ++ ord.s!af ;
- n = num.n ;
- g = quant.g;
- c = quant.c
- } ;
-
- DetQuant quant num = {
- s = \\af => quant.s !af ++ num.s! (caseAF af) ! (genAF af) ;
- n = num.n ;
- g = quant.g;
- c = quant.c
- } ;
-{-
- DetArtOrd quant num ord = {
- s = \\af => quant.s !af ++ num.s! (caseAF af) ! (genAF af) ++ ord.s!af ;
- n = num.n ;
- g = quant.g;
- c = quant.c
- } ;
-
- DetArtCard quant num = {
- s = \\af => quant.s !af ++ num.s! (caseAF af) ! (genAF af) ;
- n = num.n ;
- g = quant.g;
- c = quant.c
- } ;
--}
--- MassDet = {s = \\_=>[] ; c=Nom; g = PNoGen; n = Sg} ;
-
- MassNP okhotnik = {
- s = \\c => okhotnik.s ! NF Sg (extCase c) ;
- n = Sg ;
- p = P3 ;
- pron = False;
- g = PGen okhotnik.g ;
- anim = okhotnik.anim
- } ;
-{-
- DetArtSg kazhduj okhotnik = {
- s = \\c => -- art case always Nom (AR 17/6/2008)
- kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g Sg) ++
- okhotnik.s ! Sg ! (extCase c) ;
- n = Sg ;
- p = P3 ;
- pron = False;
- g = case kazhduj.g of { PNoGen => (PGen okhotnik.g); _ => kazhduj.g };
- anim = okhotnik.anim
- } ;
-
- DetArtPl kazhduj okhotnik = {
- s = \\c => -- art case always Nom (AR 17/6/2008)
- kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g Pl) ++
- okhotnik.s ! Pl ! (extCase c) ;
- n = Pl ;
- p = P3 ;
- pron = False;
- g = case kazhduj.g of { PNoGen => (PGen okhotnik.g); _ => kazhduj.g };
- anim = okhotnik.anim
- } ;
--}
- PossPron p = {s = \\af => p.s ! mkPronForm (caseAF af) No (Poss (gennum (genAF af) (numAF af) )); c=Nom; g = PNoGen} ;
-
- NumCard c = c ;
- NumSg = {s = \\_,_ => [] ; n = Sg} ;
- NumPl = {s = \\_,_ => [] ; n = Pl} ;
-
- OrdNumeral numeral = variants {} ; ---- TODO; needed to compile Constructors
- OrdDigits numeral = variants {} ; ---- TODO; needed to compile Constructors
----- OrdDigits TODO
- -- {s = \\ af => (uy_j_EndDecl (numeral.s ! caseAF af ! genAF af)).s!af} ;
-
- NumNumeral n = n ;
- NumDigits n = {s = \\_,_ => n.s ; n = n.n} ;
-
- AdNum adn num = {s = \\c,n => adn.s ++ num.s!c!n ; n = num.n} ;
-
- OrdSuperl a = {s = a.s!Posit};
-
- DefArt = {s = \\_=>[] ; c=Nom; g = PNoGen };
- IndefArt = { s = \\_=>[] ; c=Nom; g = PNoGen };
-
- UseN noun = noun ;
- UseN2 noun = noun ;
-
--- The application of a function gives, in the first place, a common noun:
--- "ключ от дома". From this, other rules of the resource grammar
--- give noun phrases, such as "ключи от дома", "ключи от дома
--- и от машины", and "ключ от дома и машины" (the
--- latter two corresponding to distributive and collective functions,
--- respectively). Semantics will eventually tell when each
--- of the readings is meaningful.
-
- ComplN2 f x = {
- s = \\nf => case x.pron of {
- True => x.s ! (case nf of {NF n c => mkPronForm c No (Poss (gennum f.g n))}) ++ f.s ! nf ;
- False => f.s ! nf ++ f.c2.s ++
- x.s ! (case nf of {NF n c => mkPronForm f.c2.c Yes (Poss (gennum f.g n))})
- };
- g = f.g ;
- anim = f.anim
- } ;
-
--- Two-place functions add one argument place.
--- There application starts by filling the first place.
-
- ComplN3 f x = {
- s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! (PF f.c2.c Yes NonPoss) ;
- g = f.g ;
- anim = f.anim ;
- c2 = f.c3 ;
- } ;
-
- ---- AR 17/12/2008
- Use2N3 f = {
- s = f.s ;
- g = f.g ;
- anim = f.anim ;
- c2 = f.c2
- } ;
-
- ---- AR 17/12/2008
- Use3N3 f = {
- s = f.s ;
- g = f.g ;
- anim = f.anim ;
- c2 = f.c3
- } ;
-
-
--- The two main functions of adjective are in predication ("Иван - молод")
--- and in modification ("молодой человек"). Predication will be defined
--- later, in the chapter on verbs.
-
- AdjCN ap cn = {
- s = \\nf => ap.s ! case nf of {NF n c => AF c cn.anim (gennum cn.g n)} ++
- cn.s ! nf ;
- g = cn.g ;
- anim = cn.anim
- } ;
-
--- This is a source of the "man with a telescope" ambiguity, and may produce
--- strange things, like "машины всегда".
--- Semantics will have to make finer distinctions among adverbials.
-
- AdvCN cn adv = {
- s = \\nf => cn.s ! nf ++ adv.s ;
- g = cn.g ;
- anim = cn.anim
- } ;
-
--- Constructions like "the idea that two is even" are formed at the
--- first place as common nouns, so that one can also have "a suggestion that...".
-
- SentCN idea x = {
- s = \\nf => idea.s ! nf ++ x.s ;
- g = idea.g ;
- anim = idea.anim
- } ;
-
- RelCN idea x = {
- s = \\nf => idea.s ! nf ++ case nf of {NF n c => x.s ! (gennum idea.g n)!c!idea.anim} ;
- g = idea.g ;
- anim = idea.anim
- } ;
-
- ---- AR 17/12/2008
- ApposCN cn s = {
- s = \\nf => cn.s ! nf ++ s.s ! (case nf of {NF n c => PF c No NonPoss}) ;
- g = cn.g ;
- anim = cn.anim
- } ;
-
- RelNP np rel = {
- s = \\c => np.s ! c ++ rel.s ! (gennum (pgen2gen np.g) np.n) ! extCase c ! np.anim ;
- n = np.n ;
- p = np.p ;
- pron = np.pron ;
- g = np.g ;
- anim = np.anim ;
- nComp = np.nComp
- } ;
-
-
-}
-
diff --git a/next-lib/src/russian/NumeralRus.gf b/next-lib/src/russian/NumeralRus.gf
deleted file mode 100644
index c1900358f..000000000
--- a/next-lib/src/russian/NumeralRus.gf
+++ /dev/null
@@ -1,143 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
-concrete NumeralRus of Numeral = CatRus ** open ResRus in {
-
-flags coding=utf8 ;
-
--- Toiska, 13/8/2000, AR with Arto Mustajoki.
-
-lincat Digit = {s : DForm => Gender => Str ; size : Size} ;
-lincat Sub10 = {s : Place => DForm => Gender => Str ; size : Size} ;
-lincat Sub100 = {s : Place => Gender => Str ; size : Size} ;
-lincat Sub1000 = {s : Place => Gender => Str ; size : Size} ;
-lincat Sub1000000 = {s : Gender => Str} ;
-
-lin num x = {s = table{ _ => x.s } ; n = Pl}; ---- n TODO ; Size? AR 18/12/2007
-
-lin n2 =
- {s = table {{unit} => table {{Fem} => "две" ; _ => "два"} ;
- {teen} => gg "двенадцать" ;
- {ten} => gg "двадцать" ;
- {hund} => gg "двести"} ;
- size = sgg} ;
-lin n3 =
- {s = table {{unit} => gg "три" ;
- {teen} => gg "тринадцать" ;
- {ten} => gg "тридцать" ;
- {hund} => gg "триста"} ;
- size = sgg} ;
-lin n4 =
- {s = table {{unit} => gg "четыре" ;
- {teen} => gg "четырнадцать" ;
- {ten} => gg "сорок" ;
- {hund} => gg "четыреста"} ;
- size = sgg} ;
-lin n5 =
- {s = table {{unit} => gg "пять" ;
- {teen} => gg "пятнадцать" ;
- {ten} => gg "пятьдесят" ;
- {hund} => gg "пятьсот"} ;
- size = plg} ;
-lin n6 =
- {s = table {{unit} => gg "шесть" ;
- {teen} => gg "шестнадцать" ;
- {ten} => gg "шестьдесят" ;
- {hund} => gg "шестьсот"} ;
- size = plg} ;
-lin n7 =
- {s = table {{unit} => gg "семь" ;
- {teen} => gg "семнадцать" ;
- {ten} => gg "семьдесят" ;
- {hund} => gg "семьсот"} ;
- size = plg} ;
-lin n8 =
- {s = table {{unit} => gg "восемь" ;
- {teen} => gg "восемнадцать" ;
- {ten} => gg "восемьдесят" ;
- {hund} => gg "восемьсот"} ;
- size = plg} ;
-lin n9 =
- {s = table {{unit} => gg "девять" ;
- {teen} => gg "девятнадцать" ;
- {ten} => gg "девяносто" ;
- {hund} => gg "девятьсот"} ;
- size = plg} ;
-
-
-lin pot01 =
- {s = table {{attr} => table {{hund} => gg "сто" ; _ => gg []} ;
- _ => table {{hund} => gg "сто" ;
- _ => table {{Masc} => "один" ; {Fem} => "одна" ; _ => "одно"}}} ;
- size = nom} ;
-lin pot0 d =
- {s = table {_ => d.s} ; size = d.size} ;
-lin pot110 =
- {s = table {_ => gg "десяти"} ; size = plg} ;
--- {s = table {_ => gg "десять"} ; size = plg} ;
-lin pot111 =
- {s = table {_ => gg "одиннадцать"} ; size = plg} ; --- 11
-lin pot1to19 d =
- {s = table {_ => d.s ! teen} ; size = plg} ;
-lin pot0as1 n =
- {s = table {p => n.s ! p ! unit} ; size = n.size} ;
-lin pot1 d =
- {s = table {_ => d.s ! ten} ; size = plg} ; ---
-lin pot1plus d e =
- {s = table {_ =>
- table {g => d.s ! ten ! g ++ e.s ! indep ! unit ! g}} ; size = e.size} ;
-lin pot1as2 n =
- {s = n.s ; size = n.size} ;
-lin pot2 d =
- {s = table {p => d.s ! p ! hund} ; size = plg} ;
-lin pot2plus d e =
- {s = table {p => table {g => d.s ! p ! hund ! g ++ e.s ! indep ! g}} ; size = e.size} ;
-lin pot2as3 n =
- {s = n.s ! indep} ;
-lin pot3 n =
- {s = gg (n.s ! attr ! Fem ++ mille ! n.size)} ;
-lin pot3plus n m =
- {s = table {g => n.s ! attr ! Fem ++ mille ! n.size ++ m.s ! indep ! g}} ;
-
---- TODO
---- raz/odin
-
--- numerals as sequences of digits
-
- lincat
- Dig = TDigit ;
-
- lin
- IDig d = {s = d.s ; n = d.n} ;
-
- IIDig d i = {
- s = d.s ++ i.s ;
- n = Pl
- } ;
-
- D_0 = mkDig "0" ;
- D_1 = mk3Dig "1" "1" Sg ; ----
- D_2 = mkDig "2" ;
- D_3 = mkDig "3" ;
- D_4 = mkDig "4" ;
- D_5 = mkDig "5" ;
- D_6 = mkDig "6" ;
- D_7 = mkDig "7" ;
- D_8 = mkDig "8" ;
- D_9 = mkDig "9" ;
-
- oper
- mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
- mkDig : Str -> TDigit = \c -> mk2Dig c (c + "o") ;
-
- mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> {
- s = c ; ---- gender
- n = n
- } ;
-
- TDigit = {
- n : Number ;
- s : Str
- } ;
-
-}
-
diff --git a/next-lib/src/russian/ParadigmsRus.gf b/next-lib/src/russian/ParadigmsRus.gf
deleted file mode 100644
index e3abbe191..000000000
--- a/next-lib/src/russian/ParadigmsRus.gf
+++ /dev/null
@@ -1,470 +0,0 @@
---# -path=.:../abstract:../../prelude:../common
-
---1 Russian Lexical Paradigms
---
--- Janna Khegai 2003--2006
---
--- This is an API for the user of the resource grammar
--- for adding lexical items. It gives functions for forming
--- expressions of open categories: nouns, adjectives, verbs.
---
--- Closed categories (determiners, pronouns, conjunctions) are
--- accessed through the resource syntax API, $Structural.gf$.
---
--- The main difference with $MorphoRus.gf$ is that the types
--- referred to are compiled resource grammar types. We have moreover
--- had the design principle of always having existing forms, rather
--- than stems, as string arguments of the paradigms.
---
--- The structure of functions for each word class $C$ is the following:
--- first we give a handful of patterns that aim to cover all
--- regular cases. Then we give a worst-case function $mkC$, which serves as an
--- escape to construct the most irregular words of type $C$.
---
--- The following modules are presupposed:
-
-resource ParadigmsRus = open
- Prelude,
- MorphoRus,
- CatRus,
- NounRus
- in {
-
-flags coding=utf8 ;
-
---2 Parameters
---
--- To abstract over gender names, we define the following identifiers.
-
-oper
- Gender : Type ;
- masculine : Gender ;
- feminine : Gender ;
- neuter : Gender ;
-
--- To abstract over case names, we define the following.
- Case : Type ;
-
- nominative : Case ;
- genitive : Case ;
- dative : Case ;
- accusative : Case ;
- instructive : Case ;
- prepositional : Case ;
-
--- In some (written in English) textbooks accusative case
--- is put on the second place. However, we follow the case order
--- standard for Russian textbooks.
-
--- To abstract over number names, we define the following.
- Number : Type ;
-
- singular : Number ;
- plural : Number ;
-
---2 Nouns
-
- Animacy: Type ;
-
- animate: Animacy;
- inanimate: Animacy;
-
--- Indeclinabe nouns: "кофе", "пальто", "ВУЗ".
-
- mkIndeclinableNoun: Str -> Gender -> Animacy -> N ;
-
- mkN : overload {
-
--- The regular function captures the variants for some common noun endings.
-
- mkN : (karta : Str) -> N ;
- mkN : (tigr : Str) -> Animacy -> N ;
-
--- Worst case - give six singular forms:
--- Nominative, Genetive, Dative, Accusative, Instructive and Prepositional;
--- and the prepositional form after в and на, and
--- the corresponding six plural forms and the gender and animacy.
-
- mkN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg, nomPl, genPl, datPl, accPl, instPl, preposPl : Str) -> Gender -> Animacy -> N
- } ;
-
- mkN2 : overload {
-
--- Genitive with no preposition.
-
- mkN2 : N -> N2 ;
- mkN2 : N -> Prep -> N2 ;
- } ;
-
-
- mkN3 : N -> Prep -> Prep -> N3 ;
-
--- Proper names.
-
- mkPN : Str -> Gender -> Animacy -> PN ; -- "Иван", "Маша"
- nounPN : N -> PN ;
-
-
---2 Adjectives
-
--- Non-comparison (only positive degree) one-place adjectives need 28 (4 by 7)
--- forms in the worst case:
-
-
--- (Masculine | Feminine | Neutral | Plural) *
-
--- (Nominative | Genitive | Dative | Accusative Inanimate | Accusative Animate |
--- Instructive | Prepositional)
-
-
--- Notice that 4 short forms, which exist for some adjectives are not included
--- in the current description, otherwise there would be 32 forms for
--- positive degree.
-
- mkA : overload {
-
--- Regular and invariant adjectives with regular comparative.
-
- mkA : (positive : Str) -> A ;
-
--- Adjectives with irregular comparative.
-
- mkA : (positive, comparative : Str) -> A ;
- } ;
-
--- Two-place adjectives need a preposition and a case as extra arguments.
-
- mkA2 : A -> Str -> Case -> A2 ; -- "делим на"
-
--- Comparison adjectives need a positive adjective
--- (28 forms without short forms).
--- Taking only one comparative form (non-syntactic) and
--- only one superlative form (syntactic) we can produce the
--- comparison adjective with only one extra argument -
--- non-syntactic comparative form.
--- Syntactic forms are based on the positive forms.
-
-
--- mkADeg : A -> Str -> ADeg ;
-
--- On top level, there are adjectival phrases. The most common case is
--- just to use a one-place adjective.
--- ap : A -> IsPostfixAdj -> AP ;
-
---2 Adverbs
-
--- Adverbs are not inflected.
-
- mkAdv : Str -> Adv ;
-
---2 Verbs
---
--- In our lexicon description ("Verbum") there are 62 forms:
--- 2 (Voice) by { 1 (infinitive) + [2(number) by 3 (person)](imperative) +
--- [ [2(Number) by 3(Person)](present) + [2(Number) by 3(Person)](future) +
--- 4(GenNum)(past) ](indicative)+ 4 (GenNum) (subjunctive) }
--- Participles (Present and Past) and Gerund forms are not included,
--- since they fuction more like Adjectives and Adverbs correspondingly
--- rather than verbs. Aspect is regarded as an inherent parameter of a verb.
--- Notice, that some forms are never used for some verbs.
-
-Voice: Type;
-Aspect: Type;
-Bool: Type;
-Conjugation: Type ;
-
-first: Conjugation; -- "гуля-Ешь, гуля-Ем"
-firstE: Conjugation; -- Verbs with vowel "ё": "даёшь" (give), "пьёшь" (drink)
-second: Conjugation; -- "вид-Ишь, вид-Им"
-mixed: Conjugation; -- "хоч-Ешь - хот-Им"
-dolzhen: Conjugation; -- irregular
-foreign: Conjugation; -- foreign words which are used in Russian, +++ MG_UR: added +++
-
-
-true: Bool;
-false: Bool;
-
-active: Voice ;
-passive: Voice ;
-imperfective: Aspect;
-perfective: Aspect ;
-
-
--- The worst case need 6 forms of the present tense in indicative mood
--- ("я бегу", "ты бежишь", "он бежит", "мы бежим", "вы бежите", "они бегут"),
--- a past form (singular, masculine: "я бежал"), an imperative form
--- (singular, second person: "беги"), an infinitive ("бежать").
--- Inherent aspect should also be specified.
-
--- mkVerbum : Aspect -> (presentSgP1,presentSgP2,presentSgP3,
- mkV : Aspect -> (presentSgP1,presentSgP2,presentSgP3,
- presentPlP1,presentPlP2,presentPlP3,
- pastSgMasculine,imperative,infinitive: Str) -> V ;
-
--- Common conjugation patterns are two conjugations:
--- first - verbs ending with "-ать/-ять" and second - "-ить/-еть".
--- Instead of 6 present forms of the worst case, we only need
--- a present stem and one ending (singular, first person):
--- "я люб-лю", "я жд-у", etc. To determine where the border
--- between stem and ending lies it is sufficient to compare
--- first person from with second person form:
--- "я люб-лю", "ты люб-ишь". Stems shoud be the same.
--- So the definition for verb "любить" looks like:
--- regV Imperfective Second "люб" "лю" "любил" "люби" "любить";
-
- regV :Aspect -> Conjugation -> (stemPresentSgP1,endingPresentSgP1,
- pastSgP1,imperative,infinitive : Str) -> V ;
-
-
--- Two-place verbs, and the special case with direct object. Notice that
--- a particle can be included in a $V$.
-
- mkV2 : V -> Str -> Case -> V2 ; -- "войти в дом"; "в", accusative
- mkV3 : V -> Str -> Str -> Case -> Case -> V3 ; -- "сложить письмо в конверт"
- dirV2 : V -> V2 ; -- "видеть", "любить"
- tvDirDir : V -> V3 ;
-
--- The definitions should not bother the user of the API. So they are
--- hidden from the document.
---.
- Gender = MorphoRus.Gender ;
- Case = MorphoRus.Case ;
- Number = MorphoRus.Number ;
- Animacy = MorphoRus.Animacy;
- Aspect = MorphoRus.Aspect;
- Voice = MorphoRus.Voice ;
- --Tense = Tense ;
- Bool = Prelude.Bool ;
- Conjugation = MorphoRus.Conjugation;
-first = First ;
-firstE = FirstE ;
-second = Second ;
-secondA = SecondA ;
-mixed = Mixed ;
-dolzhen = Dolzhen;
-foreign = Foreign; -- +++ MG_UR: added +++
-
- true = True;
- false = False ;
- masculine = Masc ;
- feminine = Fem ;
- neuter = Neut ;
- nominative = Nom ;
- accusative = Acc ;
- dative = Dat ;
- genitive = Gen ;
- instructive = Inst ;
- prepositional = Prepos PrepOther ; -- FIXME: not correct for v and na
- singular = Sg ;
- plural = Pl ;
- animate = Animate ;
- inanimate = Inanimate ;
- active = Act ;
- passive = Pass ;
- imperfective = Imperfective ;
- perfective = Perfective ;
- -- present = Present ;
- --past = Past ;
- -- Degree = Pos | Comp | Super ;
- -- Person = P1 | P2 | P3 ;
- -- AfterPrep = Yes | No ;
- -- Possessive = NonPoss | Poss GenNum ;
-
--- Noun definitions
-
- mkN = overload {
- mkN : (karta : Str) -> N = mk1N ;
- mkN : (tigr : Str) -> Animacy -> N = \nom, anim -> case anim of { Animate => nAnimate (mk1N nom) ;
- Inanimate => mk1N nom } ;
- mkN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
- nomPl, genPl, datPl, accPl, instPl, preposPl : Str) -> Gender -> Animacy -> N = mkWorstN
- } ;
-
- mkIndeclinableNoun = \s,g, anim ->
- {
- s = table { NF _ _ => s } ;
- g = g ;
- anim = anim
- } ** {lock_N = <>};
-
- oper mkWorstN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
- nomPl, genPl, datPl, accPl, instPl, preposPl : Str) -> Gender -> Animacy -> N
- = \nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
- nomPl, genPl, datPl, accPl, instPl, preposPl, g, anim ->
- {
- s = table {
- NF Sg Nom => nomSg ;
- NF Sg Gen => genSg ;
- NF Sg Dat => datSg ;
- NF Sg Acc => accSg ;
- NF Sg Inst => instSg ;
- NF Sg (Prepos PrepOther) => preposSg ;
- NF Sg (Prepos PrepVNa) => prepos2Sg ;
- NF Pl Nom => nomPl ;
- NF Pl Gen => genPl ;
- NF Pl Dat => datPl ;
- NF Pl Acc => accPl ;
- NF Pl Inst => instPl ;
- NF Pl (Prepos _) => preposPl
- } ;
- g = g ;
- anim = anim
- } ** {lock_N = <>} ;
-
- oper mk1N : Str -> N = \x ->
- case x of {
- stem+"онок" => nDecl10Hard stem ;
- stem+"ёнок" => nDecl10Soft stem ;
--- stem+"aнин" => nDecl11 stem ;
- stem@(_+"и")+"й" => nDecl7Masc stem;
- stem@(_+"и")+"я" => nDecl7Fem stem;
- stem@(_+"и")+"е" => nDecl7Neut stem;
- stem+"ее" => nAdj { s = (mk1A (stem+"ий")).s!Posit } Neut;
- stem+"ое" => nAdj { s = (mk1A (stem+(iAfter stem)+"й")).s!Posit } Neut;
- stem+"мя" => nDecl9 stem ;
- stem@(_+("а"|"е"|"ё"|"о"|"у"|"ы"|"э"|"ю"|"я"))+"й" => nDecl6Masc stem ;
- stem@(_+("а"|"е"|"ё"|"о"|"у"|"ы"|"э"|"ю"|"я"))+"е" => nDecl6Neut stem ;
- stem@(_+("а"|"е"|"ё"|"о"|"у"|"ы"|"э"|"ю"|"я"))+"я" => nDecl6Fem stem ;
- stem@(_+("ч"|"щ"|"ш"|"ж"|"п"|"эн"|"м"|"ф"))+"ь" => nDecl8 stem ;
- stem@(_+("д"|"т"|"ст"|"с"|"в"|"б"))+"ь" => nDecl8 stem ;
- stem@(_+"ш"|"ж"|"ч"|"щ"|"ц")+"е" => nRegHardNeut stem;
- stem+"е" => nRegSoftNeut stem ;
- stem+"я" => nRegSoftFem stem ;
- stem+"ь" => nRegSoftMasc stem ;
- stem+"о" => nRegHardNeut stem ;
- stem+"а" => nRegHardFem stem ;
- stem => nRegHardMasc stem
- } ** {lock_N = <>} ;
-
-
-
--- An individual-valued function is a common noun together with the
--- preposition prefixed to its argument ("клZ+ о' дома").
--- The situation is analogous to two-place adjectives and transitive verbs.
---
--- We allow the genitive construction to be used as a variant of
--- all function applications. It would definitely be too restrictive only
--- to allow it when the required case is genitive. We don't know if there
--- are counterexamples to the liberal choice we've made.
-
- oper mkN2 = overload {
- mkN2 : N -> N2 = \n -> mkFun n nullPrep ;
- mkN2 : N -> Prep -> N2 = mkFun;
- } ;
-
- mkFun : N -> Prep -> N2 = \f,p -> UseN f ** {c2 = p ; lock_N2 = <>} ;
-
- nullPrep : Prep = {s = []; c= Gen; lock_Prep=<>} ;
-
- mkN3 f p2 p3 = (UseN f) ** {c2 = p2; c3 = p3; lock_N3 = <>} ;
-
-
- mkPN = \ivan, g, anim ->
- case g of {
- Masc => mkProperNameMasc ivan anim ;
- _ => mkProperNameFem ivan anim
- } ** {lock_PN =<>};
- nounPN n = {s=\\c => n.s! NF Sg c; anim=n.anim; g=n.g; lock_PN=<>};
-
--- On the top level, it is maybe $CN$ that is used rather than $N$, and
--- $NP$ rather than $PN$.
-
- makeCN : N -> CN ;
- makeNP : Str -> Gender -> Animacy -> NP ;
-
-
- makeCN = UseN;
-
- makeNP = \x,y,z -> UsePN (mkPN x y z) ;
-
- mkA = overload {
- mkA : (positive : Str) -> A = mk1A ;
- mkA : (positive, comparative : Str) -> A = mk2A;
- } ;
-
- mk1A : Str -> A = \positive ->
- let stem = Predef.tk 2 positive in mk2A positive (stem+"ее") ;
-
- mk2A : Str -> Str -> A = \positive, comparative ->
- case positive of {
- stem+"ый" => mkAdjDeg (aRegHardStemStress stem) comparative ;
- stem+"ой" => mkAdjDeg (aRegHardEndStress stem) comparative ;
- stem@(_+("г"|"к"|"х"))+"ий" => mkAdjDeg (aRegHardStemStress stem) comparative;
- stem@(_+("ш"|"ж"|"ч"|"щ"))+"ий" => mkAdjDeg (aRegHardStemStress stem) comparative;
- stem+"ий" => mkAdjDeg (aRegSoft stem) comparative ;
- stem => mkAdjDeg (adjInvar stem) comparative
- } ;
-
- -- khaki, mini, hindi, netto
- adjInvar : Str -> Adjective = \stem -> { s = \\_ => stem } ;
-
- oper mkAdjDeg: Adjective -> Str -> A = \adj, s ->
- { s = table
- {
- Posit => adj.s ;
- Compar => \\af => s ;
- Superl => \\af => samuj.s !af ++ adj.s ! af
- }
- } ** {lock_A = <>};
-
-
- mkA2 a p c= a ** {c2 = {s=p; c=c}; lock_A2 = <>};
--- mkADeg a s = mkAdjDeg a s ** {lock_ADeg = <>}; -- defined in morpho.RusU
-
--- ap a p = mkAdjPhrase a p ** {lock_AP = <>}; -- defined in syntax module
-
- mkAdv x = ss x ** {lock_Adv = <>} ;
-
--- Verb definitions
-
--- mkVerbum = \asp, sgP1, sgP2, sgP3, plP1, plP2, plP3,
- mkV = \asp, sgP1, sgP2, sgP3, plP1, plP2, plP3,
- sgMascPast, imperSgP2, inf -> case asp of {
- Perfective =>
- mkVerbPerfective inf imperSgP2
- (presentConj sgP1 sgP2 sgP3 plP1 plP2 plP3) (pastConj sgMascPast)
- ** { lock_V=<> };
- Imperfective =>
- mkVerbImperfective inf imperSgP2
- (presentConj sgP1 sgP2 sgP3 plP1 plP2 plP3) (pastConj sgMascPast)
- ** { lock_V=<> }
- };
-
- oper presentConj: (_,_,_,_,_,_: Str) -> PresentVerb =
- \sgP1, sgP2, sgP3, plP1, plP2, plP3 ->
- table {
- PRF (GSg _) P1 => sgP1 ;
- PRF (GSg _) P2 => sgP2 ;
- PRF (GSg _) P3 => sgP3 ;
- PRF APl P1 => plP1 ;
- PRF APl P2 => plP2 ;
- PRF APl P3 => plP3
- };
-
- regV a b c d e f g = verbDecl a b c d e f g ** {lock_V = <>} ;
- -- defined in morpho.RusU.gf
-{-
- mkV a b = extVerb a b ** {lock_V = <>}; -- defined in types.RusU.gf
-
- mkPresentV = \aller, vox ->
- { s = table {
- VFin gn p => aller.s ! VFORM vox (VIND (VPresent (numGNum gn) p)) ;
- VImper n p => aller.s ! VFORM vox (VIMP n p) ;
- VInf => aller.s ! VFORM vox VINF ;
- VSubj gn => aller.s ! VFORM vox (VSUB gn)
- }; t = Present ; a = aller.asp ; w = vox ; lock_V = <>} ;
--}
- mkV2 v p cas = v ** {c2 = {s=p; c=cas}; lock_V2 = <>};
- dirV2 v = mkV2 v [] Acc;
-
-
- tvDirDir v = mkV3 v "" "" Acc Dat;
-
--- *Ditransitive verbs* are verbs with three argument places.
--- We treat so far only the rule in which the ditransitive
--- verb takes both complements to form a verb phrase.
-
- mkV3 v s1 s2 c1 c2 = v ** {c2 = {s=s1; c=c1}; c3={s=s2; c=c2}; lock_V3 = <>};
-
-} ;
-
diff --git a/next-lib/src/russian/PhraseRus.gf b/next-lib/src/russian/PhraseRus.gf
deleted file mode 100644
index 0cf86c881..000000000
--- a/next-lib/src/russian/PhraseRus.gf
+++ /dev/null
@@ -1,27 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
-concrete PhraseRus of Phrase = CatRus ** open Prelude, ResRus in {
-
- flags coding=utf8 ;
- lin
- PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
-
- UttS s = s ;
- UttQS qs = {s = qs.s ! QDir} ;
- UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc! Sg} ;
- UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc!Pl} ;
- UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc! Sg} ; ---- ?? AR
-
- UttIP ip = {s = ip.s ! PF Nom No NonPoss} ; --- Acc also
- UttIAdv iadv = iadv ;
- UttNP np = {s = np.s ! PF Acc No NonPoss} ;
- UttVP vp = {s = vp.s ! ClInfinit ! GSg Masc ! P3} ;
- UttAdv adv = adv ;
-
- NoPConj = {s = []} ;
- PConjConj conj = ss conj.s2 ;
-
- NoVoc = {s = []} ;
- VocNP np = {s = "," ++ np.s ! PF Nom No NonPoss} ;
-
-}
diff --git a/next-lib/src/russian/QuestionRus.gf b/next-lib/src/russian/QuestionRus.gf
deleted file mode 100644
index e3506aef6..000000000
--- a/next-lib/src/russian/QuestionRus.gf
+++ /dev/null
@@ -1,72 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
-concrete QuestionRus of Question = CatRus ** open ResRus, Prelude in {
-
- flags optimize=all_subs ; coding=utf8 ;
-
- lin
-
- QuestCl cl = {s = \\b,cf,_ => cl.s ! b ! cf } ;
-
- QuestVP kto spit =
- {s = \\b,clf,qf => (predVerbPhrase kto spit).s!b!clf } ;
-
- QuestSlash Kto yaGovoruO =
- let { kom = Kto.s ! (mkPronForm yaGovoruO.c No NonPoss) ; o = yaGovoruO.s2 } in
- {s = \\b,clf,_ => o ++ kom ++ yaGovoruO.s ! b ! clf
- } ;
-
- QuestIAdv kak tuPozhivaesh =
- {s = \\b,clf,q => kak.s ++ tuPozhivaesh.s!b!clf } ;
-
- QuestIComp kak tuPozhivaesh =
- {s = \\b,clf,q => let ne = case b of {Neg => ""; Pos => []}
- in
- kak.s ++ ne ++tuPozhivaesh.s! PF Nom No NonPoss } ;
-
-
- PrepIP p ip = {s = p.s ++ ip.s ! PF Nom No NonPoss} ;
-
- AdvIP ip adv = {
- s = \\c => ip.s ! c ++ adv.s ;
- n = ip.n; p=ip.p; g=ip.g; anim=ip.anim; pron=ip.pron
- } ;
-
- IdetCN kakoj okhotnik =
- {s = \\pf => case kakoj.c of {
- Nom =>
- kakoj.s ! AF (extCase pf) okhotnik.anim (gennum okhotnik.g kakoj.n) ++
- okhotnik.s ! NF kakoj.n (extCase pf) ;
- _ =>
- kakoj.s ! AF (extCase pf) okhotnik.anim (gennum okhotnik.g kakoj.n) ++
- okhotnik.s ! NF kakoj.n kakoj.c };
- n = kakoj.n ;
- p = P3 ;
- pron = False;
- g = kakoj.g ;
- anim = okhotnik.anim
- } ;
-
--- 1.4 additions 17/6/2008 by AR
-
- IdetIP kakoj = let anim = Inanimate in
- {s = \\pf => kakoj.s ! AF (extCase pf) anim (pgNum kakoj.g kakoj.n) ;
- n = kakoj.n ;
- p = P3 ;
- pron = False;
- g = kakoj.g ;
- anim = anim
- } ;
-
- IdetQuant kakoj pyat = -- okhotnik =
- {s = \\af =>
- kakoj.s ! pyat.n ! af ++
- pyat.s ! caseAF af ! genAF af ;
- n = pyat.n ;
- g = kakoj.g ;
- c = kakoj.c
- } ;
-
- CompIAdv a = a ;
- CompIP ip = {s = ip.s ! PF Nom No NonPoss} ;
-}
diff --git a/next-lib/src/russian/RelativeRus.gf b/next-lib/src/russian/RelativeRus.gf
deleted file mode 100644
index 51088de57..000000000
--- a/next-lib/src/russian/RelativeRus.gf
+++ /dev/null
@@ -1,37 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
-concrete RelativeRus of Relative = CatRus ** open ResRus, MorphoRus in {
-
- flags optimize=all_subs ; coding=utf8 ;
-
- lin
-
- RelCl A = {s = \\b,clf,gn,c, anim =>
- takoj.s ! AF c anim gn ++ "что" ++ A.s !b!clf};
-
- RelVP kotoruj gulyaet =
- { s = \\b,clf,gn, c, anim => let { nu = numGenNum gn } in
- kotoruj.s ! gn ! c ! anim ++ gulyaet.s2 ++ gulyaet.s ! clf ! gn !P3 ++
- gulyaet.s3 ! genGNum gn ! nu
- } ;
-
-
--- Preposition stranding: "that we are looking at". Pied-piping is
--- deferred to $ExtRus.gf$ ("at which we are looking").
-
- RelSlash kotoruj yaVizhu =
- {s = \\b,clf,gn, _ , anim => yaVizhu.s2 ++
- kotoruj.s ! gn ! yaVizhu.c ! anim
- ++ yaVizhu.s!b!clf
- } ;
-
- FunRP p mama kotoruj =
- {s = \\gn,c, anim => let {nu = numGenNum gn} in
- mama.s ! PF c No NonPoss ++
- p.s ++ kotoruj.s ! gn ! p.c ! anim
- } ;
-
- IdRP ={ s = \\gn, c, anim =>
- kotorujDet.s ! (AF c anim gn )} ;
-}
-
diff --git a/next-lib/src/russian/ResRus.gf b/next-lib/src/russian/ResRus.gf
deleted file mode 100644
index 477c96cc8..000000000
--- a/next-lib/src/russian/ResRus.gf
+++ /dev/null
@@ -1,385 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
---1 Russian auxiliary operations.
-
--- This module contains operations that are needed to make the
--- resource syntax work. To define everything that is needed to
--- implement $Test$, it moreover contains regular lexical
--- patterns needed for $Lex$.
-
-resource ResRus = ParamX ** open Prelude in {
-
-flags coding=utf8 ; optimize=all ;
-
---2 Enumerated parameter types
---
--- These types are the ones found in school grammars.
--- Their parameter values are atomic.
-
--- 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 ;
--- Degree = Pos | Comp | Super ;
- AfterPrep = Yes | No ;
- Possessive = NonPoss | Poss GenNum ;
--- Anteriority = Simul | Anter ;
- ClForm = ClIndic RusTense Anteriority | ClCondit | ClInfinit | ClImper;
- -- "naked infinitive" clauses
-
--- A number of Russian nouns have common gender. They can
--- denote both males and females: "умница" (a clever person), "инженер" (an engineer).
--- We overlook this phenomenon for now.
-
--- The AfterPrep parameter is introduced in order to describe
--- the variations of the third person personal pronoun forms
--- depending on whether they come after a preposition or not.
-
--- Declination forms depend on Case, Animacy , Gender:
--- "большие дома" - "больших домов" (big houses - big houses'),
--- Animacy plays role only in the Accusative case (Masc Sg and Plural forms):
--- Accusative Animate = Genetive, Accusaive Inanimate = Nominative
--- "я люблю большие дома-"я люблю больших мужчин"
--- (I love big houses - I love big men);
--- and on Number: "большой дом - "большие дома"
--- (a big house - big houses).
--- The plural never makes a gender distinction.
-
- GenNum = GSg Gender | GPl ;
-
- -- Coercions between the compound gen-num type and gender and number:
-oper
- gennum : Gender -> Number -> GenNum = \g,n ->
- case n of {
- Sg => GSg g ;
- Pl => GPl
- } ;
-
- numGenNum : GenNum -> Number = \gn ->
- case gn of {
- GSg _ => Sg ;
- GPl => Pl
- } ;
-
-
--- The Possessive parameter is introduced in order to describe
--- the possessives of personal pronouns, which are used in the
--- Genetive constructions like "моя мама" (my mother) instead of
--- "мама моя" (the mother of mine).
-
---2 For $Noun$
--- Nouns decline according to number and case.
--- For the sake of shorter description these parameters are
--- combined in the type SubstForm.
-param
- NForm = NF Number Case ;
-
-
--- Real parameter types (i.e. ones on which words and phrases depend)
--- are mostly hierarchical. The alternative would be cross-products of
--- simple parameters, but this would usually overgenerate.
-
--- However, we use the cross-products in complex cases
--- (for example, aspect and tense parameter in the verb description)
--- where the relationship between the parameters are non-trivial
--- even though we aware that some combinations do not exist
--- (for example, present perfective does not exist, but removing
--- this combination would lead to having different descriptions
--- for perfective and imperfective verbs, which we do not want for the
--- sake of uniformity).
-
-param PronForm = PF Case AfterPrep Possessive;
-
-oper Pronoun = { s : PronForm => Str ; n : Number ; p : Person ;
- g: PronGen ; pron: Bool} ;
-
--- Gender is not morphologically determined for first
--- and second person pronouns.
-
-param PronGen = PGen Gender | PNoGen ;
-
--- The following coercion is useful:
-
-oper
- pgen2gen : PronGen -> Gender = \p -> case p of {
- PGen g => g ;
- PNoGen => Masc ---- variants {Masc ; Fem} --- the best we can do for ya, tu
- } ;
-
-
-oper
- extCase: PronForm -> Case = \pf -> case pf of { PF c _ _ => c } ;
-
- mkPronForm: Case -> AfterPrep -> Possessive -> PronForm =
- \c,n,p -> PF c n p ;
-
- CommNoun = {s : NForm => Str ; g : Gender ; anim : Animacy } ;
-
- NounPhrase : Type = { s : PronForm => Str ; n : Number ;
- p : Person ; g: PronGen ; anim : Animacy ; pron: Bool} ;
-
- mkNP : Number -> CommNoun -> NounPhrase = \n,chelovek ->
- {s = \\cas => chelovek.s ! NF n (extCase cas) ;
- n = n ; g = PGen chelovek.g ; p = P3 ; pron =False ;
- anim = chelovek.anim
- } ;
-
- det2NounPhrase : Adjective -> NounPhrase = \eto ->
- {s = \\pf => eto.s ! (AF (extCase pf) Inanimate (GSg Neut)); n = Sg ; g = PGen Neut ; pron = False ; p = P3 ; anim = Inanimate } ;
-
-
-
- pron2NounPhraseNum : Pronoun -> Animacy -> Number -> NounPhrase = \ona, anim, num ->
- {s = ona.s ; n = num ; g = ona.g ;
- pron = ona.pron; p = ona.p ; anim = anim } ;
-
-
--- Agreement of $NP$ is a record. We'll add $Gender$ later.
--- oper Agr = {n : Number ; p : Person} ;
-
-
-----2 For $Verb$
-
--- Mood is the main verb classification parameter.
--- The verb mood can be infinitive, subjunctive, imperative, and indicative.
-
--- Note: subjunctive mood is analytical, i.e. formed from the past form of the
--- indicative mood plus the particle "ли". That is why they have the same GenNum
--- parameter. We choose to keep the "redundant" form in order to indicate
--- the presence of the subjunctive mood in Russian verbs.
-
--- Aspect and Voice parameters are present in every mood, so Voice is put
--- before the mood parameter in verb form description the hierachy.
--- Moreover Aspect is regarded as an inherent parameter of a verb entry.
--- The primary reason for that is that one imperfective form can have several
--- perfective forms: "ломать" - "сломать" - "поломать" (to break).
--- Besides, the perfective form could be formed from imperfective
--- by prefixation, but also by taking a completely different stem:
--- "говорить"-"сказать" (to say). In the later case it is even natural to
--- regard them as different verb entries.
--- Another reason is that looking at the Aspect as an inherent verb parameter
--- seem to be customary in other similar projects:
--- http://starling.rinet.ru/morph.htm
-
--- Note: Of course, the whole inflection table has many redundancies
--- in a sense that many verbs do not have all grammatically possible
--- forms. For example, passive does not exist for the verb
--- "любить" (to love), but exists for the verb "ломаться" (to break).
--- In present tense verbs do not conjugate according to Genus,
--- so parameter GenNum instead Number is used for the sake of
--- using for example as adjective in predication.
-
--- Depending on the tense verbs conjugate according to combinations
--- of gender, person and number of the verb objects.
--- Participles (Present and PastRus) and Gerund forms are not included in the
--- current description. This is the verb type used in the lexicon:
-
-oper Verbum : Type = { s: VerbForm => Str ; asp : Aspect };
-
-param
-
- VerbForm = VFORM Voice VerbConj ;
- VerbConj = VIND GenNum VTense | VIMP Number Person | VINF | VSUB GenNum ;
- VTense = VPresent Person | VPast | VFuture Person ;
-
-oper
- getVTense : RusTense -> Person -> VTense= \t,p ->
- case t of { Present => VPresent p ; PastRus => VPast; Future => VFuture p } ;
-
- getTense : Tense -> RusTense= \t ->
- case t of { Pres => Present
- ; Fut => Future --# notpresent
- ; _ => PastRus --# notpresent
- } ;
-
-
- getVoice: VerbForm -> Voice = \vf ->
- case vf of {
- VFORM Act _ => Act;
- VFORM Pass _ => Pass
- };
-oper sebya : Case => Str =table {
-Nom => "";
-Gen => "себя";
-Dat=> "себе";
-Acc => "себя";
-Inst => "собой";
-Prep =>"себе"};
-
- Verb : Type = {s : ClForm => GenNum => Person => Str ; asp : Aspect ; w: Voice} ;
--- Verb phrases are discontinuous: the parts of a verb phrase are
--- (s) an inflected verb, (s2) verb adverbials (not negation though), and
--- (s3) complement. This discontinuity is needed in sentence formation
--- to account for word order variations.
-
- VerbPhrase : Type = Verb ** {s2: Str; s3 : Gender => Number => Str ;
- negBefore: Bool} ;
-
-
--- This is one instance of Gazdar's *slash categories*, corresponding to his
--- $S/NP$.
--- We cannot have - nor would we want to have - a productive slash-category former.
--- Perhaps a handful more will be needed.
---
--- Notice that the slash category has the same relation to sentences as
--- transitive verbs have to verbs: it's like a *sentence taking a complement*.
-
- SlashNounPhrase = Clause ** {c2 : Complement} ;
- Clause = {s : Polarity => ClForm => Str} ;
-
--- This is the traditional $S -> NP VP$ rule.
-
- predVerbPhrase : NounPhrase -> VerbPhrase -> SlashNounPhrase =
- \Ya, tebyaNeVizhu -> {
- s = \\b,clf => let { ya = Ya.s ! (mkPronForm Nom No NonPoss);
- khorosho = tebyaNeVizhu.s2;
- vizhu = tebyaNeVizhu.s ! clf !(gennum (pgen2gen Ya.g) Ya.n)! Ya.p;
- tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n
- }
- in ya ++ khorosho ++ vizhu ++ tebya;
- c2 = {s = ""; c = Nom}
- } ;
-
--- Questions are either direct ("Ты счастлив?")
--- or indirect ("Потом он спросил счастлив ли ты").
-
-param
- QuestForm = DirQ | IndirQ ;
-
----- The order of sentence is needed already in $VP$.
---
--- Order = ODir | OQuest ;
-
-oper
- getActVerbForm : ClForm -> Gender -> Number -> Person -> VerbForm = \clf,g,n, p -> case clf of
- { ClIndic Future _ => VFORM Act (VIND (gennum g n) (VFuture p));
- ClIndic PastRus _ => VFORM Act (VIND (gennum g n) VPast);
- ClIndic Present _ => VFORM Act (VIND (gennum g n) (VPresent p));
- ClCondit => VFORM Act (VSUB (gennum g n));
- ClInfinit => VFORM Act VINF ;
- ClImper => VFORM Act (VIMP n p)
- };
-
- getPassVerbForm : ClForm -> Gender -> Number -> Person -> VerbForm = \clf,g,n, p -> case clf of
- { ClIndic Future _ => VFORM Pass (VIND (gennum g n) (VFuture p));
- ClIndic PastRus _ => VFORM Pass (VIND (gennum g n) VPast);
- ClIndic Present _ => VFORM Pass (VIND (gennum g n) (VPresent p));
- ClCondit => VFORM Pass (VSUB (gennum g n));
- ClInfinit => VFORM Pass VINF ;
- ClImper => VFORM Pass (VIMP n p)
- };
-
-
---2 For $Adjective$
-
--- The short form is only inflected in gender and number.
--- Fixing this would require changing the Degree type.
-param
- AdjForm = AF Case Animacy GenNum | AFShort GenNum | AdvF;
-
-oper
- Complement = {s : Str ; c : Case} ;
-
-oper Refl ={s: Case => Str};
-oper sam: Refl=
-{s = table{
- Nom => "сам";
- Gen => "себя";
- Dat => "себе";
- Acc => "себя";
- Inst => "собой";
- Prepos _ => "себе"
- }
-};
-
- pgNum : PronGen -> Number -> GenNum = \g,n ->
- case n of
- { Sg => GSg (pgen2gen g) ; -- assuming pronoun "I" is a male
- Pl => GPl
- } ;
- -- _ => variants {GSg Masc ; GSg Fem} } ;
- -- "variants" version cause "no term variants" error during linearization
-
-oper genGNum : GenNum -> Gender = \gn ->
- case gn of { GSg Fem => Fem; GSg Masc => Masc; _ => Neut } ;
-
-oper numAF: AdjForm -> Number = \af ->
- case af of { AdvF => Sg; AFShort gn => numGenNum gn; AF _ _ gn => (numGenNum gn) } ;
-
-oper genAF: AdjForm -> Gender = \af ->
- case af of { AdvF => Neut; AFShort gn => genGNum gn; AF _ _ gn => (genGNum gn) } ;
-
-oper caseAF: AdjForm -> Case = \af ->
- case af of { AdvF => Nom; AFShort _ => Nom; AF c _ _ => c } ;
-
--- The Degree parameter should also be more complex, since most Russian
--- adjectives have two comparative forms:
--- attributive (syntactic (compound), declinable) -
--- "более высокий" (corresponds to "more high")
--- and predicative (indeclinable)- "выше" (higher) and more than one
--- superlative forms: "самый высокий" (corresponds to "the most high") -
--- "высочайший" (the highest).
-
--- Even one more parameter independent of the degree can be added,
--- since Russian adjectives in the positive degree also have two forms:
--- long (attributive and predicative) - "высокий" (high) and short (predicative) - "высок"
--- although this parameter will not be exactly orthogonal to the
--- degree parameter.
--- Short form has no case declension, so in principle
--- it can be considered as an additional case.
-
--- Note: although the predicative usage of the long
--- form is perfectly grammatical, it can have a slightly different meaning
--- compared to the short form.
--- For example: "он - больной" (long, predicative) vs.
--- "он - болен" (short, predicative).
-
---3 Adjective phrases
---
--- An adjective phrase may contain a complement, e.g. "моложе Риты".
--- Then it is used as postfix in modification, e.g. "человек, моложе Риты".
-
- IsPostfixAdj = Bool ;
-
-
--- Simple adjectives are not postfix:
-
--- Adjective type includes both non-degree adjective classes:
--- possesive ("мамин"[mother's], "лисий" [fox'es])
--- and relative ("русский" [Russian]) adjectives.
-
- Adjective : Type = {s : AdjForm => Str} ;
-
--- A special type of adjectives just having positive forms
--- (for semantic reasons) is useful, e.g. "финский".
-
- AdjPhrase = Adjective ** {p : IsPostfixAdj} ;
-
-
- mkAdjPhrase : Adjective -> IsPostfixAdj -> AdjPhrase = \novuj ,p -> novuj ** {p = p} ;
-
-----2 For $Relative$
---
--- RAgr = RNoAg | RAg {n : Number ; p : Person} ;
--- RCase = RPrep | RC Case ;
---
---2 For $Numeral$
-
-param DForm = unit | teen | ten | hund ;
-param Place = attr | indep ;
-param Size = nom | sgg | plg ;
---param Gend = masc | fem | neut ;
-oper mille : Size => Str = table {
- nom => "тысяча" ;
- sgg => "тысячи" ;
- _ => "тысяч"} ;
-
-oper gg : Str -> Gender => Str = \s -> table {_ => s} ;
-
--- CardOrd = NCard | NOrd ;
-}
diff --git a/next-lib/src/russian/SentenceRus.gf b/next-lib/src/russian/SentenceRus.gf
deleted file mode 100644
index 79d691ccd..000000000
--- a/next-lib/src/russian/SentenceRus.gf
+++ /dev/null
@@ -1,138 +0,0 @@
-
---# -path=.:../abstract:../common:../../prelude
-
-
-concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
-
- flags optimize=all_subs ; coding=utf8 ;
-
- lin
-
- PredVP Ya tebyaNeVizhu = { s = \\b,clf =>
- let {
- ya = Ya.s ! (case clf of {
- ClInfinit => (mkPronForm Acc No NonPoss);
- _ => (mkPronForm Nom No NonPoss)
- });
- ne = case b of {Pos=>""; Neg=>"не"};
- vizhu = tebyaNeVizhu.s ! clf ! (pgNum Ya.g Ya.n)! Ya.p;
- khorosho = tebyaNeVizhu.s2 ;
- tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n
- }
- in
- if_then_else Str tebyaNeVizhu.negBefore
- (ya ++ ne ++ vizhu ++ tebya ++ khorosho)
- (ya ++ vizhu ++ ne ++ tebya ++ khorosho)
- } ;
-
-
- PredSCVP sc vp = { s = \\b,clf =>
- let {
- ne = case b of {Pos=>""; Neg=>"не"};
- vizhu = vp.s ! clf ! (GSg Neut)! P3;
- tebya = vp.s3 ! Neut ! Sg
- }
- in
- if_then_else Str vp.negBefore
- (sc.s ++ ne ++ vizhu ++ tebya)
- (sc.s ++ vizhu ++ ne ++ tebya)
- } ;
-
-
- ---- AR 17/12/2008
- SlashVP Ya tebyaNeVizhu = {
- s = \\b,clf =>
- let {
- ya = Ya.s ! (case clf of {
- ClInfinit => (mkPronForm Acc No NonPoss);
- _ => (mkPronForm Nom No NonPoss)
- });
- ne = case b of {Pos=>""; Neg=>"не"};
- vizhu = tebyaNeVizhu.s ! clf ! (pgNum Ya.g Ya.n)! Ya.p;
- khorosho = tebyaNeVizhu.s2 ;
- tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n
- }
- in
- if_then_else Str tebyaNeVizhu.negBefore
- (ya ++ ne ++ vizhu ++ tebya ++ khorosho)
- (ya ++ vizhu ++ ne ++ tebya ++ khorosho) ;
- s2=tebyaNeVizhu.s2 ;
- c=tebyaNeVizhu.c
- } ;
-
- AdvSlash slash adv = {
- s = \\b,clf => slash.s ! b ! clf ++ adv.s ;
- c = slash.c;
- s2 = slash.s2;
- } ;
-
- SlashPrep cl p = {s=cl.s; s2=p.s; c=p.c} ;
-
- --- AR 3/11/2007
- SlashVS ivan vidit tuUlubaeshsya = {
- s=\\b,clf => ivan.s ! PF Nom No NonPoss ++
- vidit.s! (getActVerbForm clf (pgen2gen ivan.g) ivan.n ivan.p) ++
- [", что"] ++ tuUlubaeshsya.s ;
- s2=tuUlubaeshsya.s2;
- c=tuUlubaeshsya.c
- } ;
-
-
-
- ImpVP inf = {s = \\pol, g,n =>
- let
- dont = case pol of {
- Neg => "не" ;
- _ => []
- }
- in
- dont ++ inf.s ! ClImper ! gennum g n ! P2 ++
- inf.s2++inf.s3!g!n
- } ;
-
- EmbedS s = {s = "что" ++ s.s} ;
- -- In Russian "Whether you go" transformed in "go whether you":
- EmbedQS qs = {s = qs.s ! QIndir} ;
- EmbedVP vp = {s = vp.s2 ++ vp.s!ClInfinit!(GSg Masc) !P3 ++ vp.s3!Masc!Sg} ;
-
- UseCl t p cl = {s = case t.t of {
- Cond => cl.s! p.p ! ClCondit ; --# notpresent
- Pres => cl.s! p.p ! ClIndic Present t.a ---- AR work-around 13/12/2007
- ; --# notpresent
- _ => cl.s! p.p ! ClIndic (getTense t.t) t.a --# notpresent
- }
- };
-
- UseQCl t p qcl= {s = case t.t of {
- Cond => qcl.s! p.p ! ClCondit ; --# notpresent
- Pres => qcl.s! p.p ! ClIndic Present t.a
- ; --# notpresent
- _ => qcl.s!p.p! ClIndic (getTense t.t) t.a --# notpresent
- }};
-
- UseRCl t p rcl ={s = \\gn,c,anim => case t.t of {
- Cond => [", "] ++ rcl.s! p.p ! ClCondit ! gn !c !anim ; --# notpresent
- Pres => [", "] ++ rcl.s! p.p ! ClIndic Present t.a !gn !c !anim
- ; --# notpresent
- _ => [", "] ++ rcl.s! p.p ! ClIndic (getTense t.t) t.a !gn !c !anim --# notpresent
- }};
-
- UseSlash t p cl = {
- s = case t.t of {
- Cond => cl.s! p.p ! ClCondit ; --# notpresent
- Pres => cl.s! p.p ! ClIndic Present t.a
- ; --# notpresent
- _ => cl.s! p.p ! ClIndic (getTense t.t) t.a --# notpresent
- } ;
- s2 = cl.s2 ;
- c = cl.c
- };
-
-
- AdvS a s = {s = a.s ++ "," ++ s.s} ; ---- AR 19/6/2007
-
- ---- AR 17/12/2008
- RelS s r = {s = s.s ++ "," ++ r.s ! gennum Neut Sg ! Nom ! Inanimate} ; ---- ?
-
-}
-
diff --git a/next-lib/src/russian/StructuralRus.gf b/next-lib/src/russian/StructuralRus.gf
deleted file mode 100644
index d5635005b..000000000
--- a/next-lib/src/russian/StructuralRus.gf
+++ /dev/null
@@ -1,130 +0,0 @@
---# -path=.:../abstract:../common:../../prelude
-
-concrete StructuralRus of Structural = CatRus **
- open ResRus, MorphoRus, (P = ParadigmsRus), Prelude, NounRus in {
-
- flags optimize=all ; coding=utf8 ;
-
-lin
--- First mount the numerals.
--- UseNumeral i = i ;
-
--- Then an alphabetical list of structural words
-
- above_Prep = { s = "над" ; c = Inst} ;
- after_Prep = { s = "после" ; c = Gen };
--- all8mass_Det = vesDet ** {n = Sg; g = PNoGen; c = Nom} ;
- all_Predet = vseDetPl ** { g = PNoGen; c = Nom} ;
- almost_AdA = {s= "почти"} ;
- almost_AdN = {s= "почти"} ;
- although_Subj = ss "хотя" ;
- always_AdV = ss "всегда" ;
- and_Conj = {s1 = [] ; s2 = "и" ; n = Pl} ;
- because_Subj = ss ["потому что"] ;
- before_Prep ={ s = "перед" ; c = Inst};
- behind_Prep = { s = "за" ; c = Inst };
- between_Prep = { s = "между" ; c = Inst};
- both7and_DConj = sd2 "как" [", так и"] ** {n = Pl} ;
- but_PConj = ss "но" ;
- by8agent_Prep = { s = ["с помощью"] ; c = Gen};
- by8means_Prep = { s = ["с помощью"] ; c = Gen};
- can8know_VV = verbMoch ;
- can_VV = verbMoch ;
- during_Prep = { s = ["в течение"] ; c = Gen};
- either7or_DConj = sd2 "либо" [", либо"] ** {n = Sg} ;
--- comma is not visible in GUI!
- every_Det = kazhdujDet ** {n = Sg ; g = PNoGen; c= Nom} ;
- everybody_NP = mkNP Pl (UseN ((eEnd_Decl "вс")**{lock_N=<>})) ;
- everything_NP = UsePron (pronVseInanimate ** {lock_Pron=<>}) ;
- everywhere_Adv = ss "везде" ;
- few_Det = nemnogoSgDet **{lock_Det= <>; n= Sg; g = PNoGen; c = Nom};
---- DEPREC first_Ord = (uy_j_EndDecl "перв" ) ** {lock_A = <>}; --AStaruyj
- from_Prep = { s = "от" ; c = Gen };
- he_Pron = pronOn ;
- here_Adv = ss "здесь" ;
- here7to_Adv = ss "сюда" ;
- here7from_Adv = ss "отсюда" ;
- how_IAdv = ss "как" ;
- how8many_IDet = skolkoSgDet ** {n = Pl; g = (PGen Neut); c= Gen};
- i_Pron = pronYa ;
- if_Subj = ss "если" ;
- in8front_Prep = { s = "перед" ; c = Inst};
- in_Prep = { s = "в" ; c = Prepos PrepVNa } ;
- it_Pron = pronOno ;
- less_CAdv = {s="менее"; p=""} ;
- many_Det = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen} ;
- more_CAdv = {s="более"; p=""} ;
- most_Predet = bolshinstvoSgDet ** {n = Sg; g = (PGen Neut); c= Gen} ;
- -- inanimate, Sg: "большинство телефонов безмолству-ет"
--- most8many_Det = bolshinstvoPlDet ** {n = Pl; g = (PGen Neut); c= Gen} ;
- -- animate, Pl: "большинство учащихся хорошо подготовлен-ы"
- much_Det = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen} ; -- same as previous
- must_VV = verbDolzhen ;
- no_Utt = ss ["Нет"] ;
- on_Prep = { s = "на" ; c = Prepos PrepVNa };
---- DEPREC one_Quant = odinDet ** {lock_QuantSg = <>; n= Sg; g = PNoGen; c = Nom };
---AStaruyj :
- only_Predet = (uy_j_EndDecl "единственн" ) ** {lock_Predet = <>; n= Sg; g = PNoGen; c = Nom };
- or_Conj = {s1= [] ; s2 = "или" ; n = Sg} ;
- otherwise_PConj = ss "иначе" ;
- part_Prep = { s = "" ; c = Nom}; -- missing in Russian
- please_Voc = ss "пожалуйста" ;
- possess_Prep = { s = "" ; c = Gen}; --- ?? AR 19/2/2004
- quite_Adv = ss "довольно" ;
- she_Pron = pronOna ;
- so_AdA = ss "так";
- somebody_NP = UsePron (pronKtoTo** {lock_Pron = <>});
- someSg_Det = nekotorujDet ** {n = Sg; g = PNoGen; c= Nom} ;
- somePl_Det = nekotorujDet ** {n = Pl; g = PNoGen; c= Nom} ;
- something_NP = UsePron (pronChtoTo** {lock_Pron=<> }) ;
- somewhere_Adv = ss "где-нибудь" ;
- that_Quant = totDet ** {n = Sg; g = PNoGen; c= Nom} ;
- there_Adv = ss "там" ;
- there7to_Adv = ss "туда" ;
- there7from_Adv = ss "оттуда" ;
- therefore_PConj = ss "следовательно" ;
- they_Pron = pronOni;
- this_Quant = etotDet ** {n = Sg; g = PNoGen; c= Nom} ;
- through_Prep = { s = "через" ; c = Acc };
- to_Prep = { s = "к" ; c = Dat };
- too_AdA = ss "слишком" ;
- under_Prep = { s = "под" ; c = Inst };
- very_AdA = ss "очень" ;
- want_VV = verbKhotet ;
- we_Pron = pronMu ;
- whatPl_IP = pron2NounPhraseNum pronChto Inanimate Pl;
- whatSg_IP = pron2NounPhraseNum pronChto Inanimate Sg;
- when_IAdv = ss "когда" ;
- when_Subj = ss "когда" ;
- where_IAdv = ss "где" ;
- which_IQuant = {
- s = \\_ => kotorujDet.s ;
- g = PNoGen;
- c= Nom
- } ;
- whoPl_IP = pron2NounPhraseNum pronKto Animate Pl;
- whoSg_IP = pron2NounPhraseNum pronKto Animate Sg;
- why_IAdv = ss "почему" ;
- with_Prep = { s = "с" ; c = Inst};
- without_Prep = { s = "без" ; c = Gen};
- youPl_Pron = pronVu;
- yes_Utt = ss ["Да"] ;
- youSg_Pron = pronTu;
- youPol_Pron = pronVu;
-
- have_V2= P.dirV2 (P.regV P.imperfective P.first "име" "ю" "имел" "имей" "иметь" );
-
---- NoDet = nikakojDet ** {n = Sg; g = PNoGen; c= Nom} ;
---- AnyDet = lubojDet ** {n = Sg; g = PNoGen; c= Nom} ;
---- AnyNumDet = mkDeterminerNum (lubojDet ** {n = Pl; g = PNoGen; c= Nom} );
---- NoNumDet = mkDeterminerNum (nikakojDet ** {n = Pl; g = PNoGen; c= Nom} );
----NobodyNP = UsePron pronNikto Animate;
----NothingNP = UsePron pronNichto Inanimate;
-
--- In case of "neither.. no" expression double negation is not
--- only possible, but also required in Russian.
--- There is no means of control for this however in the resource grammar.
---- NeitherNor = sd2 "ни" [", ни"] ** {n = Sg} ;
---- NowhereNP = ss "нигде" ;
---- AgentPrep = { s = "" ; c = Nom}; -- missing in Russian
-}
diff --git a/next-lib/src/russian/SymbolRus.gf b/next-lib/src/russian/SymbolRus.gf
deleted file mode 100644
index 54355374a..000000000
--- a/next-lib/src/russian/SymbolRus.gf
+++ /dev/null
@@ -1,41 +0,0 @@
---# -path=.:abstract:common
-
-concrete SymbolRus of Symbol = CatRus ** open Prelude, ResRus in {
-
-{- TODO!
-lin
- SymbPN i = {s = addGenitiveS i.s ; g = Neutr} ;
- IntPN i = {s = addGenitiveS i.s ; g = Neutr} ;
- FloatPN i = {s = addGenitiveS i.s ; g = Neutr} ;
- NumPN i = {s = i.s ; g = Neutr} ;
- CNIntNP cn i = {
- s = \\c => cn.s ! Sg ! Nom ++ (addGenitiveS i.s) ! c ;
- a = agrgP3 Sg cn.g
- } ;
- CNSymbNP det cn xs = {
- s = \\c => det.s ++ cn.s ! det.n ! Nom ++ (addGenitiveS xs.s) ! c ;
- a = agrgP3 det.n cn.g
- } ;
- CNNumNP cn i = {
- s = \\c => cn.s ! Sg ! Nom ++ i.s ! c ;
- a = agrgP3 Sg cn.g
- } ;
-
- SymbS sy = sy ;
-
- SymbNum sy = { s = addGenitiveS sy.s ; n = Pl ; hasCard = True } ;
- SymbOrd sy = { s = \\c => sy.s ++ (regGenitiveS "th")!c} ;
--}
-
-lincat
-
- Symb, [Symb] = SS ;
-
-lin
- MkSymb s = s ;
-
--- BaseSymb = infixSS "and" ;
- ConsSymb = infixSS "," ;
-
-
-}
diff --git a/next-lib/src/russian/VerbRus.gf b/next-lib/src/russian/VerbRus.gf
deleted file mode 100644
index 6c0623d82..000000000
--- a/next-lib/src/russian/VerbRus.gf
+++ /dev/null
@@ -1,343 +0,0 @@
-
---# -path=.:../abstract:../common:../../prelude
-
-concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
-
--- 1.4 additions by AR 17/6/2008
-
- flags optimize=all_subs ; coding=utf8 ;
- lin
- CompNP masha =
- { s=\\clf,gn,p => case clf of
- {
- (ClIndic Present _) => masha.s ! (mkPronForm Nom No NonPoss) ;
- (ClIndic PastRus _) => case gn of
- { (GSg Fem) =>"была"++masha.s ! (mkPronForm Inst No NonPoss);
- (GSg Masc) =>"был" ++ masha.s!(mkPronForm Inst No NonPoss);
- (GSg Neut) =>"было" ++ masha.s!(mkPronForm Inst No NonPoss);
- GPl => "были" ++ masha.s ! (mkPronForm Inst No NonPoss)
- };
- (ClIndic Future _) => case gn of
- { GPl => case p of
- { P3 => "будут"++masha.s ! (mkPronForm Inst No NonPoss);
- P2 => "будете"++masha.s !(mkPronForm Inst No NonPoss);
- P1 => "будем"++masha.s ! (mkPronForm Inst No NonPoss)
- };
- (GSg _) => case p of
- { P3=>"будет"++masha.s!(mkPronForm Inst No NonPoss) ;
- P2 => "будешь"++ masha.s ! (mkPronForm Inst No NonPoss) ;
- P1=> "буду"++ masha.s ! (mkPronForm Inst No NonPoss)
- } --case p
- }; --case gn
- ClCondit => "" ;
- ClImper => case (numGenNum gn) of
- {Sg => "будь" ++ masha.s ! (mkPronForm Inst No NonPoss);
- Pl => "будьте" ++ masha.s ! (mkPronForm Inst No NonPoss)
- };
- ClInfin => "быть" ++ masha.s ! (mkPronForm Inst No NonPoss)
-}; -- case clf
- asp = Imperfective ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 = \\g,n => ""
- } ;
-
- CompAP zloj ={
- s= \\clf,gn,p => case clf of {
--- person is ignored !
- ClInfinit => "быть" ++ zloj.s ! AF Inst Animate (GSg Masc) ;
- ClImper => case gn of
- { (GSg _) => "будь" ++ zloj.s ! AF Inst Animate (GSg Masc);
- GPl => "будьте" ++ zloj.s ! AF Inst Animate GPl
- };
--- infinitive does not save GenNum,
--- but indicative does for the sake of adjectival predication !
- ClIndic Present _ => zloj.s ! AF Nom Animate gn ;
- ClIndic PastRus _ => case gn of
- { (GSg Fem) => "была" ++ zloj.s! AF Nom Animate (GSg Fem);
- (GSg Masc) => "был" ++ zloj.s! AF Nom Animate (GSg Masc);
- (GSg Neut) => "был" ++ zloj.s! AF Nom Animate (GSg Neut);
- GPl => "были" ++ zloj.s! AF Nom Animate GPl
- };
- ClIndic Future _ => case gn of
- { GPl => case p of
- { P3 => "будут" ++ zloj.s! AF Nom Animate GPl;
- P2 => "будете" ++ zloj.s! AF Nom Animate GPl;
- P1 => "будем" ++ zloj.s! AF Nom Animate GPl
- } ;
- (GSg _) => case p of
- {P3 => "будет" ++ zloj.s! AF Nom Animate (GSg (genGNum gn));
- P2 => "будешь"++ zloj.s! AF Nom Animate (GSg (genGNum gn));
- P1=> "буду" ++ zloj.s! AF Nom Animate (GSg (genGNum gn))
- }
- };
- ClCondit => ""
- } ;
-
- asp = Imperfective ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 = \\g,n=> ""
- } ;
-
-
--- Verb phrases can also be formed from adjectives (" молод"),
--- common nouns (" человек"), and noun phrases (" самый молодой").
--- The third rule is overgenerating: " каждый человек" has to be ruled out
--- on semantic grounds.
--- Note: we omit a dash "-" because it will cause problems with negation word order:
--- "Я не - волшебник". Alternatively, we can consider verb-based VP and
--- all the rest.
-
- CompAdv zloj =
- { s= \\clf,gn,p => case clf of {
- ClImper => case gn of
- { GSg _ => "будь" ++ zloj.s; -- person is ignored !
- GPl => "будьте" ++ zloj.s
- };
- ClInfinit => "быть" ++ zloj.s;
- ClIndic Present _ => zloj.s ;
- ClIndic PastRus _ => case gn of
- { (GSg Fem) => "была" ++ zloj.s;
- (GSg Masc) => "был" ++ zloj.s;
- (GSg Neut) => "было" ++ zloj.s;
- GPl => "были" ++ zloj.s
- };
- ClIndic Future _ => case gn of
- { (GSg _) => "будет" ++ zloj.s;
- GPl => "будут" ++ zloj.s
- };
- ClCondit => ""
- } ;
- asp = Imperfective ;
- w = Act;
- s2 = "";
- negBefore = True;
- s3 = \\g,n => ""
- } ;
-
-
-
- UseComp comp = comp ;
-
--- CompAP ap = ap ;
--- CompNP np = {s = \\_ => np.s ! Acc} ;
--- CompAdv a = {s = \\_ => a.s} ;
-
-
--- A simple verb can be made into a verb phrase with an empty complement.
--- There are two versions, depending on if we want to negate the verb.
--- N.B. negation is *not* a function applicable to a verb phrase, since
--- double negations with "inte" are not grammatical.
-
- UseV se =
- {s=\\clf,gn,p => se.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ;
- asp = se.asp ;
- w=Act;
- s2 = "";
- negBefore = True;
- s3 = table{_=> table{_ => ""}}
- } ;
-
--- The rule for using transitive verbs is the complementization rule:
- SlashV2a se =
- {s = \\clf,gn,p => se.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ;
- asp = se.asp ;
- w = Act;
- s2 = "";
- s3 = \\g,n => "";
- negBefore = True ;
- sc = se.c2.s ;
- c = se.c2.c
- } ;
-
- ComplSlash se tu =
- {s = \\clf,gn,p => se.s ! clf ! gn ! p
- ++ se.sc ++ tu.s ! (mkPronForm se.c No NonPoss) ;
- asp = se.asp ;
- w = se.w;
- s2 = se.s2;
- s3 = se.s3;
- negBefore = se.negBefore
- } ;
-
- Slash2V3 dat tu =
- let
- tebepivo = dat.c2.s ++ tu.s ! PF dat.c2.c No NonPoss ++ dat.c3.s ;
- in
- {s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++ tebepivo ;
- asp = dat.asp ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 = \\g,n=> "" ;
- sc = dat.c3.s ;
- c = dat.c3.c
- } ;
-
- Slash3V3 dat pivo =
- let
- tebepivo = dat.c3.s ++ pivo.s ! PF dat.c3.c Yes NonPoss
- in
- {s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++ tebepivo ;
- asp = dat.asp ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 = \\g,n=> "" ;
- sc = dat.c2.s ;
- c = dat.c2.c
- } ;
-
- ---- AR 17/12/2008
- SlashV2Q dat esliOnPridet =
- {s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++ esliOnPridet.s ! QDir ;
- asp = dat.asp ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 = \\g,n=> "" ;
- sc = dat.c2.s ;
- c = dat.c2.c
- } ;
-
- ---- AR 17/12/2008
- SlashV2S vidit tuUlubaeshsya =
- {s = \\clf,gn,p => vidit.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p)
- ++ [", что"] ++ tuUlubaeshsya.s ;
- asp = vidit.asp;
- w = Act;
- s2="";
- negBefore = True;
- s3 = \\g,n => "" ;
- sc = vidit.c2.s ;
- c = vidit.c2.c
- } ;
-
- ---- AR 17/12/2008
- SlashV2V putatsya bezhat =
- { s = \\clf,gn,p => putatsya.s ! (getActVerbForm clf (genGNum gn)
- (numGenNum gn) p) ++ bezhat.s!ClInfinit !gn!p ;
- asp = putatsya.asp ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 =\\g,n => "" ;
- sc = putatsya.c2.s ;
- c = putatsya.c2.c
- } ;
-
- ---- AR 17/12/2008
- ReflVP vp =
- { s = \\clf,gn,p => vp.s ! clf ! gn ! p ++ vp.s2 ++ sebya ! vp.c;
- asp = vp.asp ;
- w = Act ;
- negBefore = True;
- s2 = "";
- s3 = \\g,n=> ""
- } ;
-
- ---- AR 17/12/2008
- SlashVV putatsya bezhat =
- { s = \\clf,gn,p => putatsya.s ! (getActVerbForm clf (genGNum gn)
- (numGenNum gn) p) ++ bezhat.s!ClInfinit !gn!p ;
- asp = putatsya.asp ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 =\\g,n => "" ;
- sc = bezhat.s2 ;
- c = bezhat.c
- } ;
-
- ---- AR 17/12/2008
- SlashV2VNP putatsya np bezhat =
- { s = \\clf,gn,p =>
- putatsya.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++
- np.s ! (mkPronForm putatsya.c2.c No NonPoss) ++ ---- ?
- bezhat.s!ClInfinit !gn!p ;
- asp = putatsya.asp ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 =\\g,n => "" ;
- sc = bezhat.s2 ; ---- ?
- c = bezhat.c
- } ;
-
-
--- To generate "сказал, что Иван гуляет" / "не сказал, что Иван гуляет":
- ComplVS vidit tuUlubaeshsya =
- {s = \\clf,gn,p => vidit.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p)
- ++ [", что"] ++ tuUlubaeshsya.s ;
- asp = vidit.asp;
- w = Act;
- s2="";
- negBefore = True;
- s3 = \\g,n => ""
- } ;
-
-
--- To generate "can walk"/"can't walk"; "tries to walk"/"does not try to walk":
--- The contraction of "not" is not provided, since it would require changing
--- the verb parameter type.
-
- ComplVV putatsya bezhat =
- { s = \\clf,gn,p => putatsya.s ! (getActVerbForm clf (genGNum gn)
- (numGenNum gn) p) ++ bezhat.s!ClInfinit !gn!p ;
- asp = putatsya.asp ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 =\\g,n => ""
- } ;
- ComplVQ dat esliOnPridet =
- {s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++ esliOnPridet.s ! QDir ;
- asp = dat.asp ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 = \\g,n=> ""
- } ;
- ComplVA vuglyadet molodoj =
- {s = \\clf,gn,p => vuglyadet.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ;
- asp = vuglyadet.asp ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 = \\g,n => molodoj.s!(AF Inst Animate (gennum g n))
- } ;
-
- SlashV2A obechat molodoj =
- {s = \\clf,gn,p =>
- obechat.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++
- molodoj.s ! AF Inst Inanimate (GSg Neut) ;
- ---- AR 17/6; AF Inst tu.anim (pgNum tu.g tu.n) ;
- asp = obechat.asp ;
- w = Act;
- negBefore = True;
- s2 = "";
- s3 = \\g,n =>"" ;
- sc = obechat.c2.s ;
- c = obechat.c2.c
- } ;
-
- AdvVP poet khorosho =
- {s = \\clf,gn,p => poet.s ! clf!gn!p; s2 = poet.s2 ++ khorosho.s; s3 = poet.s3;
- asp = poet.asp; w = poet.w; t = poet.t ; negBefore = poet.negBefore } ;
-
- AdVVP khorosho poet =
- {s = \\clf,gn,p => poet.s ! clf!gn!p; s2 = khorosho.s ++ poet.s2; s3 = poet.s3;
- asp = poet.asp; w = poet.w; t = poet.t ; negBefore = poet.negBefore } ;
-
-PassV2 se =
- {s=\\clf,gn,p => se.s ! (getPassVerbForm clf (genGNum gn) (numGenNum gn) p) ;
- asp=se.asp; w=Pass; s2 = se.c2.s;
- negBefore = True;
- s3 = table{_=> table{_ => ""}}
-};
-
-}
-