mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 19:42:50 -06:00
further refactoring in Russian
This commit is contained in:
@@ -12,4 +12,10 @@ instance DiffBul of DiffSlavic = open CommonSlavic, Prelude in {
|
|||||||
| NFVocative
|
| NFVocative
|
||||||
;
|
;
|
||||||
|
|
||||||
|
oper
|
||||||
|
Agr = {gn : GenNum ; p : Person} ;
|
||||||
|
|
||||||
|
agrP3 : GenNum -> Agr = \gn ->
|
||||||
|
{gn = gn; p = P3} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -22,13 +22,6 @@ instance ResBul of ResSlavic = ParamX, DiffBul, CommonSlavic ** open Prelude in
|
|||||||
param
|
param
|
||||||
Role = RSubj | RObj Case | RVoc ;
|
Role = RSubj | RObj Case | RVoc ;
|
||||||
|
|
||||||
GenNum = GSg Gender | GPl ;
|
|
||||||
|
|
||||||
-- Agreement of $NP$ is a record. We'll add $Gender$ later.
|
|
||||||
|
|
||||||
oper
|
|
||||||
Agr = {gn : GenNum ; p : Person} ;
|
|
||||||
|
|
||||||
param
|
param
|
||||||
-- The plural never makes a gender distinction.
|
-- The plural never makes a gender distinction.
|
||||||
|
|
||||||
@@ -87,9 +80,6 @@ instance ResBul of ResSlavic = ParamX, DiffBul, CommonSlavic ** open Prelude in
|
|||||||
--2 Transformations between parameter types
|
--2 Transformations between parameter types
|
||||||
|
|
||||||
oper
|
oper
|
||||||
agrP3 : GenNum -> Agr = \gn ->
|
|
||||||
{gn = gn; p = P3} ;
|
|
||||||
|
|
||||||
conjGenNum : GenNum -> GenNum -> GenNum = \a,b ->
|
conjGenNum : GenNum -> GenNum -> GenNum = \a,b ->
|
||||||
case <a,b> of {
|
case <a,b> of {
|
||||||
<GSg _,GSg g> => GSg g ;
|
<GSg _,GSg g> => GSg g ;
|
||||||
@@ -101,18 +91,6 @@ instance ResBul of ResSlavic = ParamX, DiffBul, CommonSlavic ** open Prelude in
|
|||||||
p = conjPerson a.p b.p
|
p = conjPerson a.p b.p
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
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
|
|
||||||
} ;
|
|
||||||
|
|
||||||
aform : GenNum -> Species -> Role -> AForm = \gn,spec,role ->
|
aform : GenNum -> Species -> Role -> AForm = \gn,spec,role ->
|
||||||
case gn of {
|
case gn of {
|
||||||
GSg g => case <g,spec,role> of {
|
GSg g => case <g,spec,role> of {
|
||||||
|
|||||||
@@ -22,8 +22,7 @@ concrete CatRus of Cat = CommonX ** CatSlavic with (ResSlavic = ResRus) ** open
|
|||||||
-- Question
|
-- Question
|
||||||
|
|
||||||
QCl = {s :Polarity => ClForm => QForm => Str};
|
QCl = {s :Polarity => ClForm => QForm => Str};
|
||||||
IP = { s : PronForm => Str ; n : Number ; p : Person ;
|
IP = {s : PronForm => Str; a : Agr; anim : Animacy} ;
|
||||||
g: PronGen ; anim : Animacy ; pron: Bool} ;
|
|
||||||
IComp = {s : Str} ;
|
IComp = {s : Str} ;
|
||||||
IDet = Adjective ** {n: Number; g: PronGen; c: Case} ;
|
IDet = Adjective ** {n: Number; g: PronGen; c: Case} ;
|
||||||
IQuant = {s : Number => AdjForm => Str; g: PronGen; c: Case} ; -- AR 16/6/2008
|
IQuant = {s : Number => AdjForm => Str; g: PronGen; c: Case} ; -- AR 16/6/2008
|
||||||
@@ -44,10 +43,8 @@ concrete CatRus of Cat = CommonX ** CatSlavic with (ResSlavic = ResRus) ** open
|
|||||||
|
|
||||||
-- Noun
|
-- Noun
|
||||||
|
|
||||||
NP = { s : PronForm => Str ; n : Number ; p : Person ;
|
NP = {s : PronForm => Str; a : Agr; anim : Animacy} ;
|
||||||
g: PronGen ; anim : Animacy ; pron: Bool} ;
|
Pron = {s : PronForm => Str; a : Agr} ;
|
||||||
Pron = { s : PronForm => Str ; n : Number ; p : Person ;
|
|
||||||
g: PronGen ; pron: Bool} ;
|
|
||||||
|
|
||||||
-- Determiners (only determinative pronouns
|
-- Determiners (only determinative pronouns
|
||||||
-- (or even indefinite numerals: "много" (many)) in Russian) are inflected
|
-- (or even indefinite numerals: "много" (many)) in Russian) are inflected
|
||||||
|
|||||||
@@ -11,11 +11,13 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
|
|
||||||
ConjAdv = conjunctDistrSS ;
|
ConjAdv = conjunctDistrSS ;
|
||||||
|
|
||||||
ConjNP c xs =
|
ConjNP c xs = conjunctDistrTable PronForm c xs ** {
|
||||||
conjunctDistrTable PronForm c xs ** {n = conjNumber c.n xs.n ;
|
a = {n = conjNumber c.n xs.a.n;
|
||||||
p = xs.p ; pron = xs.pron ; anim = xs.anim ;
|
p = xs.a.p;
|
||||||
g = xs.g } ;
|
g = xs.a.g
|
||||||
|
};
|
||||||
|
anim = xs.anim
|
||||||
|
} ;
|
||||||
|
|
||||||
ConjAP c xs = conjunctDistrTable AdjForm c xs ** {p = xs.p} ;
|
ConjAP c xs = conjunctDistrTable AdjForm c xs ** {p = xs.p} ;
|
||||||
|
|
||||||
@@ -27,20 +29,26 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
ConsAdv = consrSS comma ;
|
ConsAdv = consrSS comma ;
|
||||||
|
|
||||||
|
|
||||||
ConsNP x xs =
|
ConsNP x xs = consTable PronForm comma xs x ** {
|
||||||
consTable PronForm comma xs x **
|
a = {n = conjNumber xs.a.n x.a.n;
|
||||||
{n = conjNumber xs.n x.n ; g = conjPGender x.g xs.g ;
|
g = conjPGender x.a.g xs.a.g;
|
||||||
anim = conjAnim x.anim xs.anim ;
|
p = conjPerson xs.a.p x.a.p
|
||||||
p = conjPerson xs.p x.p; pron = conjPron xs.pron x.pron} ;
|
};
|
||||||
|
anim = conjAnim x.anim xs.anim
|
||||||
|
} ;
|
||||||
|
|
||||||
ConsAP x xs = consTable AdjForm comma xs x ** {p = andB xs.p x.p} ;
|
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} ;
|
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 ;
|
BaseNP x y = twoTable PronForm x y ** {
|
||||||
g = conjPGender x.g y.g ; p = conjPerson x.p y.p ;
|
a = {n = conjNumber x.a.n y.a.n;
|
||||||
pron = conjPron x.pron y.pron ; anim = conjAnim x.anim y.anim } ;
|
g = conjPGender x.a.g y.a.g;
|
||||||
|
p = conjPerson x.a.p y.a.p
|
||||||
|
};
|
||||||
|
anim = conjAnim x.anim y.anim
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -50,8 +58,7 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
[Adv] = {s1,s2 : Str} ;
|
[Adv] = {s1,s2 : Str} ;
|
||||||
-- The structure is the same as for sentences. The result is either always plural
|
-- 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.
|
-- or plural if any of the components is, depending on the conjunction.
|
||||||
[NP] = { s1,s2 : PronForm => Str ; g: PronGen ;
|
[NP] = {s1,s2 : PronForm => Str; a : Agr; anim : Animacy} ;
|
||||||
anim : Animacy ; n : Number ; p : Person ; pron : Bool } ;
|
|
||||||
-- The structure is the same as for sentences. The result is a prefix adjective
|
-- The structure is the same as for sentences. The result is a prefix adjective
|
||||||
-- if and only if all elements are prefix.
|
-- if and only if all elements are prefix.
|
||||||
[AP] = {s1,s2 : AdjForm => Str ; p : Bool} ;
|
[AP] = {s1,s2 : AdjForm => Str ; p : Bool} ;
|
||||||
@@ -76,14 +83,6 @@ oper
|
|||||||
-- conjPerson : Person -> Person -> Person = \_,p ->
|
-- conjPerson : Person -> Person -> Person = \_,p ->
|
||||||
-- 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:
|
-- For gender in a similar manner as for person:
|
||||||
-- Needed for adjective predicates like:
|
-- Needed for adjective predicates like:
|
||||||
-- "Маша или Оля - красивая", "Антон или Олег - красивый",
|
-- "Маша или Оля - красивая", "Антон или Олег - красивый",
|
||||||
|
|||||||
@@ -6,4 +6,12 @@ instance DiffRus of DiffSlavic = open CommonSlavic, Prelude in {
|
|||||||
|
|
||||||
NForm = NF Number Case ;
|
NForm = NF Number Case ;
|
||||||
|
|
||||||
|
PronGen = PGen Gender | PNoGen ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
Agr = {n : Number; p : Person; g : PronGen} ;
|
||||||
|
|
||||||
|
agrP3 : Number -> PronGen -> Agr = \n,g ->
|
||||||
|
{n = n; p = P3; g = g} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -7,9 +7,9 @@ concrete IdiomRus of Idiom = CatRus ** open Prelude, ResRus, MorphoRus in {
|
|||||||
lin
|
lin
|
||||||
ExistNP = \bar ->
|
ExistNP = \bar ->
|
||||||
{s =\\b,clf => case b of
|
{s =\\b,clf => case b of
|
||||||
{Pos => verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen bar.g) Sg P3)
|
{Pos => verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen bar.a.g) Sg P3)
|
||||||
++ bar.s ! PF Nom No NonPoss;
|
++ bar.s ! PF Nom No NonPoss;
|
||||||
Neg => "не" ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen bar.g) Sg P3)
|
Neg => "не" ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen bar.a.g) Sg P3)
|
||||||
++ bar.s ! PF Nom No NonPoss
|
++ bar.s ! PF Nom No NonPoss
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
@@ -17,8 +17,8 @@ concrete IdiomRus of Idiom = CatRus ** open Prelude, ResRus, MorphoRus in {
|
|||||||
ExistIP Kto =
|
ExistIP Kto =
|
||||||
let { kto = Kto.s ! (PF Nom No NonPoss) } in
|
let { kto = Kto.s ! (PF Nom No NonPoss) } in
|
||||||
{s = \\b,clf,_ => case b of
|
{s = \\b,clf,_ => case b of
|
||||||
{Pos => kto ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3) ;
|
{Pos => kto ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen Kto.a.g) Sg P3) ;
|
||||||
Neg => kto ++ "не" ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3)
|
Neg => kto ++ "не" ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen Kto.a.g) Sg P3)
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -29,16 +29,16 @@ concrete IdiomRus of Idiom = CatRus ** open Prelude, ResRus, MorphoRus in {
|
|||||||
CleftNP np rs = {s= \\ b, clf =>
|
CleftNP np rs = {s= \\ b, clf =>
|
||||||
let
|
let
|
||||||
ne= case b of {Pos =>[]; Neg =>"не"};
|
ne= case b of {Pos =>[]; Neg =>"не"};
|
||||||
gn = case np.n of {Pl => APl; _=> ASg (pgen2gen np.g)}
|
gn = case np.a.n of {Pl => GPl; _=> GSg (pgen2gen np.a.g)}
|
||||||
in
|
in
|
||||||
"это" ++ ne ++ np.s ! (PF Nom No NonPoss) ++
|
"это" ++ ne ++ np.s ! (PF Nom No NonPoss) ++
|
||||||
rs.s ! gn !Nom!Animate };
|
rs.s ! gn !Nom!Animate };
|
||||||
|
|
||||||
ImpPl1 vp = {s= "давайте" ++ vp.s! (ClIndic Future Simul)! APl ! P1};
|
ImpPl1 vp = {s= "давайте" ++ vp.s! (ClIndic Future Simul)! GPl ! P1};
|
||||||
|
|
||||||
ImpersCl vp = {s= \\ b, clf => let ne= case b of {Pos =>[]; Neg =>"не"}
|
ImpersCl vp = {s= \\ b, clf => let ne= case b of {Pos =>[]; Neg =>"не"}
|
||||||
in
|
in
|
||||||
ne ++ vp.s! clf! (ASg Neut) ! P3 };
|
ne ++ vp.s! clf! (GSg Neut) ! P3 };
|
||||||
|
|
||||||
-- No direct correspondance in Russian. Usually expressed by infinitive:
|
-- No direct correspondance in Russian. Usually expressed by infinitive:
|
||||||
-- "Если очень захотеть, можно в космос улететь"
|
-- "Если очень захотеть, можно в космос улететь"
|
||||||
@@ -50,7 +50,7 @@ concrete IdiomRus of Idiom = CatRus ** open Prelude, ResRus, MorphoRus in {
|
|||||||
|
|
||||||
GenericCl vp = {s= \\ b, clf => let ne= case b of {Pos =>[]; Neg =>"не"}
|
GenericCl vp = {s= \\ b, clf => let ne= case b of {Pos =>[]; Neg =>"не"}
|
||||||
in
|
in
|
||||||
"ты" ++ ne ++ vp.s! clf! (ASg Masc) ! P2 };
|
"ты" ++ ne ++ vp.s! clf! (GSg Masc) ! P2 };
|
||||||
|
|
||||||
ProgrVP vp = vp ;
|
ProgrVP vp = vp ;
|
||||||
|
|
||||||
|
|||||||
@@ -40,31 +40,31 @@ oper pronYaTu : { s : Case => Str } -> Str -> Person -> Pronoun =
|
|||||||
{ s = table {
|
{ s = table {
|
||||||
PF c _ NonPoss => nonPoss.s!c ;
|
PF c _ NonPoss => nonPoss.s!c ;
|
||||||
PF c _ (Poss gn) => case <c, gn> of {
|
PF c _ (Poss gn) => case <c, gn> of {
|
||||||
<Nom, ASg Neut > => mo + "ё" ;
|
<Nom, GSg Neut > => mo + "ё" ;
|
||||||
<Nom, ASg Masc > => mo + "й" ;
|
<Nom, GSg Masc > => mo + "й" ;
|
||||||
<Gen, ASg (Masc | Neut)> => mo + "его" ;
|
<Gen, GSg (Masc | Neut)> => mo + "его" ;
|
||||||
<Dat, ASg (Masc | Neut)> => mo + "ему" ;
|
<Dat, GSg (Masc | Neut)> => mo + "ему" ;
|
||||||
<Acc, ASg (Masc | Neut)> => mo + "его" ;
|
<Acc, GSg (Masc | Neut)> => mo + "его" ;
|
||||||
<Inst, ASg (Masc | Neut)> => mo + "им" ;
|
<Inst, GSg (Masc | Neut)> => mo + "им" ;
|
||||||
<Prepos _, ASg (Masc | Neut)> => mo + "ём" ;
|
<Prepos _, GSg (Masc | Neut)> => mo + "ём" ;
|
||||||
|
|
||||||
<Nom, ASg Fem> => mo + "я" ;
|
<Nom, GSg Fem> => mo + "я" ;
|
||||||
<Gen, ASg Fem> => mo + "ей" ;
|
<Gen, GSg Fem> => mo + "ей" ;
|
||||||
<Dat, ASg Fem> => mo + "ей" ;
|
<Dat, GSg Fem> => mo + "ей" ;
|
||||||
<Acc, ASg Fem> => mo + "ю" ;
|
<Acc, GSg Fem> => mo + "ю" ;
|
||||||
<Inst, ASg Fem> => mo + "ей" ;
|
<Inst, GSg Fem> => mo + "ей" ;
|
||||||
<Prepos _, ASg Fem> => mo + "ей" ;
|
<Prepos _, GSg Fem> => mo + "ей" ;
|
||||||
|
|
||||||
<Nom, APl> => mo + "и" ;
|
<Nom, GPl> => mo + "и" ;
|
||||||
<Gen, APl> => mo + "их" ;
|
<Gen, GPl> => mo + "их" ;
|
||||||
<Dat, APl> => mo + "им" ;
|
<Dat, GPl> => mo + "им" ;
|
||||||
<Acc, APl> => mo + "их" ;
|
<Acc, GPl> => mo + "их" ;
|
||||||
<Inst, APl> => mo + "им" ;
|
<Inst, GPl> => mo + "им" ;
|
||||||
<Prepos _, APl> => mo + "их"
|
<Prepos _, GPl> => mo + "их"
|
||||||
|
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
g = PNoGen ; n = Sg ; p = pers ; pron = True
|
a = {g = PNoGen; n = Sg; p = pers};
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper pronNAfterPrep : Pronoun -> Pronoun = \p ->
|
oper pronNAfterPrep : Pronoun -> Pronoun = \p ->
|
||||||
@@ -73,7 +73,7 @@ oper pronNAfterPrep : Pronoun -> Pronoun = \p ->
|
|||||||
x@(("е"|"ё"|"и")+_) => "н"+x;
|
x@(("е"|"ё"|"и")+_) => "н"+x;
|
||||||
x => x };
|
x => x };
|
||||||
pf => p.s!pf };
|
pf => p.s!pf };
|
||||||
g = p.g ; n = p.n ; p = p.p ; pron = p.pron
|
a = p.a;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper pronOn : Pronoun = pronNAfterPrep
|
oper pronOn : Pronoun = pronNAfterPrep
|
||||||
@@ -85,7 +85,7 @@ oper pronOn : Pronoun = pronNAfterPrep
|
|||||||
PF Inst _ _ => "им" ;
|
PF Inst _ _ => "им" ;
|
||||||
PF (Prepos _) _ _ => "ём"
|
PF (Prepos _) _ _ => "ём"
|
||||||
} ;
|
} ;
|
||||||
g = PGen Masc ; n = Sg ; p = P3 ; pron = True
|
a = agrP3 Sg (PGen Masc)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper pronOna : Pronoun = pronNAfterPrep
|
oper pronOna : Pronoun = pronNAfterPrep
|
||||||
@@ -95,7 +95,7 @@ oper pronOna : Pronoun = pronNAfterPrep
|
|||||||
PF (Gen|Acc) _ _ => "её" ;
|
PF (Gen|Acc) _ _ => "её" ;
|
||||||
PF (Dat|Inst|Prepos _) _ _ => "ей"
|
PF (Dat|Inst|Prepos _) _ _ => "ей"
|
||||||
} ;
|
} ;
|
||||||
g = PGen Fem ; n = Sg ; p = P3 ; pron = True
|
a = agrP3 Sg (PGen Fem)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper pronOno: Pronoun =
|
oper pronOno: Pronoun =
|
||||||
@@ -103,7 +103,7 @@ oper pronOno: Pronoun =
|
|||||||
PF Nom _ NonPoss => "оно" ;
|
PF Nom _ NonPoss => "оно" ;
|
||||||
pf => pronOn.s!pf
|
pf => pronOn.s!pf
|
||||||
} ;
|
} ;
|
||||||
g = PGen Neut ; n = Sg ; p = P3 ; pron = True
|
a = agrP3 Sg (PGen Neut)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper pronMuVu : Str -> Str -> Person -> Pronoun =
|
oper pronMuVu : Str -> Str -> Person -> Pronoun =
|
||||||
@@ -116,29 +116,29 @@ oper pronMuVu : Str -> Str -> Person -> Pronoun =
|
|||||||
PF Inst _ NonPoss => na + "ми" ;
|
PF Inst _ NonPoss => na + "ми" ;
|
||||||
PF (Prepos _) _ NonPoss => na + "с" ;
|
PF (Prepos _) _ NonPoss => na + "с" ;
|
||||||
|
|
||||||
PF Nom _ (Poss (ASg Masc)) => na + "ш" ;
|
PF Nom _ (Poss (GSg Masc)) => na + "ш" ;
|
||||||
PF Nom _ (Poss (ASg Neut)) => na + "ше" ;
|
PF Nom _ (Poss (GSg Neut)) => na + "ше" ;
|
||||||
PF Gen _ (Poss (ASg (Masc | Neut))) => na + "шего" ;
|
PF Gen _ (Poss (GSg (Masc | Neut))) => na + "шего" ;
|
||||||
PF Dat _ (Poss (ASg (Masc | Neut))) => na + "шему" ;
|
PF Dat _ (Poss (GSg (Masc | Neut))) => na + "шему" ;
|
||||||
PF Acc _ (Poss (ASg (Masc | Neut))) => na + "шего" ;
|
PF Acc _ (Poss (GSg (Masc | Neut))) => na + "шего" ;
|
||||||
PF Inst _ (Poss (ASg (Masc | Neut))) => na + "шим" ;
|
PF Inst _ (Poss (GSg (Masc | Neut))) => na + "шим" ;
|
||||||
PF (Prepos _) _ (Poss (ASg (Masc | Neut))) => na + "шем" ;
|
PF (Prepos _) _ (Poss (GSg (Masc | Neut))) => na + "шем" ;
|
||||||
|
|
||||||
PF Nom _ (Poss (ASg Fem)) => na + "ша" ;
|
PF Nom _ (Poss (GSg Fem)) => na + "ша" ;
|
||||||
PF Gen _ (Poss (ASg Fem)) => na + "шей" ;
|
PF Gen _ (Poss (GSg Fem)) => na + "шей" ;
|
||||||
PF Dat _ (Poss (ASg Fem)) => na + "шей" ;
|
PF Dat _ (Poss (GSg Fem)) => na + "шей" ;
|
||||||
PF Acc _ (Poss (ASg Fem)) => na + "шу" ;
|
PF Acc _ (Poss (GSg Fem)) => na + "шу" ;
|
||||||
PF Inst _ (Poss (ASg Fem)) => na + "шею" ;
|
PF Inst _ (Poss (GSg Fem)) => na + "шею" ;
|
||||||
PF (Prepos _) _ (Poss (ASg Fem)) => na + "шей" ;
|
PF (Prepos _) _ (Poss (GSg Fem)) => na + "шей" ;
|
||||||
|
|
||||||
PF Nom _ (Poss APl) => na + "ши" ;
|
PF Nom _ (Poss GPl) => na + "ши" ;
|
||||||
PF Gen _ (Poss APl) => na + "ших" ;
|
PF Gen _ (Poss GPl) => na + "ших" ;
|
||||||
PF Dat _ (Poss APl) => na + "шим" ;
|
PF Dat _ (Poss GPl) => na + "шим" ;
|
||||||
PF Acc _ (Poss APl) => na + "ших" ;
|
PF Acc _ (Poss GPl) => na + "ших" ;
|
||||||
PF Inst _ (Poss APl) => na + "шими" ;
|
PF Inst _ (Poss GPl) => na + "шими" ;
|
||||||
PF (Prepos _) _ (Poss APl) => na + "ших"
|
PF (Prepos _) _ (Poss GPl) => na + "ших"
|
||||||
};
|
};
|
||||||
g = PNoGen ; n = Pl ; p = pers ; pron = True
|
a = {g = PNoGen; n = Pl; p = pers}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper pronMu: Pronoun = pronMuVu "мы" "на" P1;
|
oper pronMu: Pronoun = pronMuVu "мы" "на" P1;
|
||||||
@@ -153,7 +153,7 @@ oper pronOni: Pronoun = pronNAfterPrep
|
|||||||
PF (Gen|Acc|Prepos _) _ _ => "их" ;
|
PF (Gen|Acc|Prepos _) _ _ => "их" ;
|
||||||
PF Inst _ _ => "ими"
|
PF Inst _ _ => "ими"
|
||||||
} ;
|
} ;
|
||||||
g = PNoGen ; n = Pl ; p = P3 ; pron = True
|
a = agrP3 Pl PNoGen
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper pronKto: Pronoun =
|
oper pronKto: Pronoun =
|
||||||
@@ -165,10 +165,7 @@ oper pronKto: Pronoun =
|
|||||||
PF Inst _ _ => "кем" ;
|
PF Inst _ _ => "кем" ;
|
||||||
PF (Prepos _) _ _ => "ком"
|
PF (Prepos _) _ _ => "ком"
|
||||||
} ;
|
} ;
|
||||||
g = PGen Masc;
|
a = agrP3 Sg (PGen Masc)
|
||||||
n = Sg ;
|
|
||||||
p = P3 ;
|
|
||||||
pron = False
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper pronChto: Pronoun =
|
oper pronChto: Pronoun =
|
||||||
@@ -180,18 +177,12 @@ oper pronChto: Pronoun =
|
|||||||
PF Inst _ _ => "чем" ;
|
PF Inst _ _ => "чем" ;
|
||||||
PF (Prepos _) _ _ => "чём"
|
PF (Prepos _) _ _ => "чём"
|
||||||
} ;
|
} ;
|
||||||
g = PGen Masc;
|
a = agrP3 Sg (PGen Masc)
|
||||||
n = Sg ;
|
|
||||||
p = P3 ;
|
|
||||||
pron = False
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper pron_add_to : Pronoun -> Pronoun = \p ->
|
oper pron_add_to : Pronoun -> Pronoun = \p ->
|
||||||
{ s = \\pf => (p.s!pf) + "-то" ;
|
{ s = \\pf => (p.s!pf) + "-то" ;
|
||||||
g = p.g ;
|
a = p.a
|
||||||
n = p.n ;
|
|
||||||
p = p.p ;
|
|
||||||
pron = p.pron
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper pronKtoTo : Pronoun = pron_add_to pronKto ;
|
oper pronKtoTo : Pronoun = pron_add_to pronKto ;
|
||||||
@@ -207,11 +198,8 @@ oper pronEti: Pronoun =
|
|||||||
PF Inst _ _ => "этими" ;
|
PF Inst _ _ => "этими" ;
|
||||||
PF (Prepos _) _ _ => "этих"
|
PF (Prepos _) _ _ => "этих"
|
||||||
} ;
|
} ;
|
||||||
n = Pl;
|
a = agrP3 Pl (PGen Fem) ;
|
||||||
p = P3;
|
anim = Animate
|
||||||
g= PGen Fem ;
|
|
||||||
anim = Animate ;
|
|
||||||
pron = False
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper pronTe: Pronoun =
|
oper pronTe: Pronoun =
|
||||||
@@ -223,11 +211,8 @@ oper pronTe: Pronoun =
|
|||||||
PF Inst _ _ => "теми" ;
|
PF Inst _ _ => "теми" ;
|
||||||
PF (Prepos _) _ _ => "тех"
|
PF (Prepos _) _ _ => "тех"
|
||||||
} ;
|
} ;
|
||||||
n = Pl;
|
a = agrP3 Pl (PGen Fem) ;
|
||||||
p = P3;
|
anim = Animate
|
||||||
g=PGen Fem ;
|
|
||||||
anim = Animate ;
|
|
||||||
pron = False
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -242,8 +227,7 @@ oper pronTe: Pronoun =
|
|||||||
-- } ;
|
-- } ;
|
||||||
-- g = PGen Masc;
|
-- g = PGen Masc;
|
||||||
-- n = Sg ;
|
-- n = Sg ;
|
||||||
-- p = P3 ;
|
-- p = P3
|
||||||
-- pron = False
|
|
||||||
-- } ;
|
-- } ;
|
||||||
--
|
--
|
||||||
--oper pronNichto: Pronoun =
|
--oper pronNichto: Pronoun =
|
||||||
@@ -257,8 +241,7 @@ oper pronTe: Pronoun =
|
|||||||
-- } ;
|
-- } ;
|
||||||
-- g = PGen Masc;
|
-- g = PGen Masc;
|
||||||
-- n = Sg ;
|
-- n = Sg ;
|
||||||
-- p = P3 ;
|
-- p = P3
|
||||||
-- pron = False
|
|
||||||
-- } ;
|
-- } ;
|
||||||
--
|
--
|
||||||
|
|
||||||
@@ -271,10 +254,7 @@ oper pronVseInanimate: Pronoun =
|
|||||||
PF Inst _ _ => "всем" ;
|
PF Inst _ _ => "всем" ;
|
||||||
PF (Prepos _) _ _ => "всём"
|
PF (Prepos _) _ _ => "всём"
|
||||||
} ;
|
} ;
|
||||||
g = PGen Neut;
|
a = agrP3 Sg (PGen Neut)
|
||||||
n = Sg ;
|
|
||||||
p = P3 ;
|
|
||||||
pron = False
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -560,8 +540,8 @@ Paradigms:
|
|||||||
-- Nouns inflected as adjectives.
|
-- Nouns inflected as adjectives.
|
||||||
oper nAdj : Adjective -> Gender ->CommNoun= \a,g ->
|
oper nAdj : Adjective -> Gender ->CommNoun= \a,g ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg c => a.s!AF c Inanimate (ASg g) ;
|
NF Sg c => a.s!AF c Inanimate (GSg g) ;
|
||||||
NF Pl c => a.s!AF c Inanimate APl };
|
NF Pl c => a.s!AF c Inanimate GPl };
|
||||||
g = g; anim = Inanimate } ;
|
g = g; anim = Inanimate } ;
|
||||||
|
|
||||||
-- Makes a noun animate.
|
-- Makes a noun animate.
|
||||||
@@ -734,66 +714,66 @@ oper eEnd_Decl: Str -> CommNoun = \vs ->
|
|||||||
True => "о" ;
|
True => "о" ;
|
||||||
False => oAfter stem } in
|
False => oAfter stem } in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
AF Nom _ (ASg Masc) => stem + case endStress of {
|
AF Nom _ (GSg Masc) => stem + case endStress of {
|
||||||
True => "ой";
|
True => "ой";
|
||||||
False => iAfter stem + "й" } ;
|
False => iAfter stem + "й" } ;
|
||||||
AF Nom _ (ASg Neut) => stem + o+"е";
|
AF Nom _ (GSg Neut) => stem + o+"е";
|
||||||
AF Gen _ (ASg (Masc|Neut)) => stem + o+"го";
|
AF Gen _ (GSg (Masc|Neut)) => stem + o+"го";
|
||||||
AF Dat _ (ASg (Masc|Neut)) => stem + o+"му";
|
AF Dat _ (GSg (Masc|Neut)) => stem + o+"му";
|
||||||
AF Acc Inanimate (ASg Masc) => stem + i+"й";
|
AF Acc Inanimate (GSg Masc) => stem + i+"й";
|
||||||
AF Acc Animate (ASg Masc) => stem + o+"го";
|
AF Acc Animate (GSg Masc) => stem + o+"го";
|
||||||
AF Acc _ (ASg Neut) => stem + o+"е";
|
AF Acc _ (GSg Neut) => stem + o+"е";
|
||||||
AF Inst _ (ASg (Masc|Neut)) => stem + i+"м";
|
AF Inst _ (GSg (Masc|Neut)) => stem + i+"м";
|
||||||
AF (Prepos _) _ (ASg (Masc|Neut)) => stem + o+"м";
|
AF (Prepos _) _ (GSg (Masc|Neut)) => stem + o+"м";
|
||||||
|
|
||||||
AF Nom _ (ASg Fem) => stem + "ая";
|
AF Nom _ (GSg Fem) => stem + "ая";
|
||||||
AF Acc _ (ASg Fem) => stem + "ую";
|
AF Acc _ (GSg Fem) => stem + "ую";
|
||||||
AF _ _ (ASg Fem) => stem + o+"й";
|
AF _ _ (GSg Fem) => stem + o+"й";
|
||||||
|
|
||||||
AF Nom _ APl => stem + i+"е";
|
AF Nom _ GPl => stem + i+"е";
|
||||||
AF Acc Inanimate APl => stem + i+"е";
|
AF Acc Inanimate GPl => stem + i+"е";
|
||||||
AF Acc Animate APl => stem + i+"х";
|
AF Acc Animate GPl => stem + i+"х";
|
||||||
AF Gen _ APl => stem + i+"х";
|
AF Gen _ GPl => stem + i+"х";
|
||||||
AF Inst _ APl => stem + i+"ми";
|
AF Inst _ GPl => stem + i+"ми";
|
||||||
AF Dat _ APl => stem + i+"м";
|
AF Dat _ GPl => stem + i+"м";
|
||||||
AF (Prepos _) _ APl => stem + i+"х";
|
AF (Prepos _) _ GPl => stem + i+"х";
|
||||||
|
|
||||||
AFShort (ASg Masc) => stem;
|
AFShort (GSg Masc) => stem;
|
||||||
AFShort (ASg Fem) => stem + "а";
|
AFShort (GSg Fem) => stem + "а";
|
||||||
AFShort (ASg Neut) => stem + o ;
|
AFShort (GSg Neut) => stem + o ;
|
||||||
AFShort APl => stem + i;
|
AFShort GPl => stem + i;
|
||||||
|
|
||||||
AdvF => stem + o
|
AdvF => stem + o
|
||||||
} } ;
|
} } ;
|
||||||
|
|
||||||
oper aRegSoft : Str -> Adjective = \stem ->
|
oper aRegSoft : Str -> Adjective = \stem ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
AF Nom _ (ASg Masc) => stem + "ий" ;
|
AF Nom _ (GSg Masc) => stem + "ий" ;
|
||||||
AF Nom _ (ASg Neut) => stem + "ее";
|
AF Nom _ (GSg Neut) => stem + "ее";
|
||||||
AF Gen _ (ASg (Masc|Neut)) => stem + "его";
|
AF Gen _ (GSg (Masc|Neut)) => stem + "его";
|
||||||
AF Dat _ (ASg (Masc|Neut)) => stem + "ему";
|
AF Dat _ (GSg (Masc|Neut)) => stem + "ему";
|
||||||
AF Acc Inanimate (ASg Masc) => stem + "ий";
|
AF Acc Inanimate (GSg Masc) => stem + "ий";
|
||||||
AF Acc Animate (ASg Masc) => stem + "его";
|
AF Acc Animate (GSg Masc) => stem + "его";
|
||||||
AF Acc _ (ASg Neut) => stem + "ее";
|
AF Acc _ (GSg Neut) => stem + "ее";
|
||||||
AF Inst _ (ASg (Masc|Neut)) => stem + "им";
|
AF Inst _ (GSg (Masc|Neut)) => stem + "им";
|
||||||
AF (Prepos _) _ (ASg (Masc|Neut)) => stem + "ем";
|
AF (Prepos _) _ (GSg (Masc|Neut)) => stem + "ем";
|
||||||
|
|
||||||
AF Nom _ (ASg Fem) => stem + "яя";
|
AF Nom _ (GSg Fem) => stem + "яя";
|
||||||
AF Acc _ (ASg Fem) => stem + "юю";
|
AF Acc _ (GSg Fem) => stem + "юю";
|
||||||
AF _ _ (ASg Fem) => stem + "ей";
|
AF _ _ (GSg Fem) => stem + "ей";
|
||||||
|
|
||||||
AF Nom _ APl => stem + "ие";
|
AF Nom _ GPl => stem + "ие";
|
||||||
AF Acc Inanimate APl => stem + "ие";
|
AF Acc Inanimate GPl => stem + "ие";
|
||||||
AF Acc Animate APl => stem + "их";
|
AF Acc Animate GPl => stem + "их";
|
||||||
AF Gen _ APl => stem + "их";
|
AF Gen _ GPl => stem + "их";
|
||||||
AF Inst _ APl => stem + "ими";
|
AF Inst _ GPl => stem + "ими";
|
||||||
AF Dat _ APl => stem + "им";
|
AF Dat _ GPl => stem + "им";
|
||||||
AF (Prepos _) _ APl => stem + "их";
|
AF (Prepos _) _ GPl => stem + "их";
|
||||||
|
|
||||||
AFShort (ASg Masc) => stem; -- FIXME: add e if stem ends in consonant + n
|
AFShort (GSg Masc) => stem; -- FIXME: add e if stem ends in consonant + n
|
||||||
AFShort (ASg Fem) => stem + "я";
|
AFShort (GSg Fem) => stem + "я";
|
||||||
AFShort (ASg Neut) => stem + "е" ;
|
AFShort (GSg Neut) => stem + "е" ;
|
||||||
AFShort APl => stem + "и" ;
|
AFShort GPl => stem + "и" ;
|
||||||
|
|
||||||
AdvF => stem + "е"
|
AdvF => stem + "е"
|
||||||
} } ;
|
} } ;
|
||||||
@@ -807,176 +787,176 @@ oper eEnd_Decl: Str -> CommNoun = \vs ->
|
|||||||
|
|
||||||
|
|
||||||
oper totDet: Adjective = {s = table {
|
oper totDet: Adjective = {s = table {
|
||||||
AF Nom _ (ASg Masc) => "тот";
|
AF Nom _ (GSg Masc) => "тот";
|
||||||
AF Nom _ (ASg Fem) => "та";
|
AF Nom _ (GSg Fem) => "та";
|
||||||
AF Nom _ (ASg Neut) => "то";
|
AF Nom _ (GSg Neut) => "то";
|
||||||
AF Nom _ APl => "те";
|
AF Nom _ GPl => "те";
|
||||||
AF Acc Inanimate (ASg Masc) => "тот";
|
AF Acc Inanimate (GSg Masc) => "тот";
|
||||||
AF Acc Animate (ASg Masc) => "того";
|
AF Acc Animate (GSg Masc) => "того";
|
||||||
AF Acc _ (ASg Fem) => "ту";
|
AF Acc _ (GSg Fem) => "ту";
|
||||||
AF Acc _ (ASg Neut) => "то";
|
AF Acc _ (GSg Neut) => "то";
|
||||||
AF Acc Inanimate APl => "те";
|
AF Acc Inanimate GPl => "те";
|
||||||
AF Acc Animate APl => "тех";
|
AF Acc Animate GPl => "тех";
|
||||||
AF Gen _ (ASg Masc) => "того";
|
AF Gen _ (GSg Masc) => "того";
|
||||||
AF Gen _ (ASg Fem) => "той";
|
AF Gen _ (GSg Fem) => "той";
|
||||||
AF Gen _ (ASg Neut) => "того";
|
AF Gen _ (GSg Neut) => "того";
|
||||||
AF Gen _ APl => "тех";
|
AF Gen _ GPl => "тех";
|
||||||
AF Inst _ (ASg Masc) => "тем";
|
AF Inst _ (GSg Masc) => "тем";
|
||||||
AF Inst _ (ASg Fem) => "той";
|
AF Inst _ (GSg Fem) => "той";
|
||||||
AF Inst _ (ASg Neut) => "тем";
|
AF Inst _ (GSg Neut) => "тем";
|
||||||
AF Inst _ APl => "теми";
|
AF Inst _ GPl => "теми";
|
||||||
AF Dat _ (ASg Masc) => "тому";
|
AF Dat _ (GSg Masc) => "тому";
|
||||||
AF Dat _ (ASg Fem) => "той";
|
AF Dat _ (GSg Fem) => "той";
|
||||||
AF Dat _ (ASg Neut) => "тому";
|
AF Dat _ (GSg Neut) => "тому";
|
||||||
AF Dat _ APl => "тем";
|
AF Dat _ GPl => "тем";
|
||||||
AF (Prepos _) _ (ASg Masc) => "том";
|
AF (Prepos _) _ (GSg Masc) => "том";
|
||||||
AF (Prepos _) _ (ASg Fem) => "той";
|
AF (Prepos _) _ (GSg Fem) => "той";
|
||||||
AF (Prepos _) _ (ASg Neut) => "том";
|
AF (Prepos _) _ (GSg Neut) => "том";
|
||||||
AF (Prepos _) _ APl => "тех" ;
|
AF (Prepos _) _ GPl => "тех" ;
|
||||||
AFShort (ASg Masc) => "тот";
|
AFShort (GSg Masc) => "тот";
|
||||||
AFShort (ASg Fem) => "та";
|
AFShort (GSg Fem) => "та";
|
||||||
AFShort (ASg Neut) => "то";
|
AFShort (GSg Neut) => "то";
|
||||||
AFShort APl => "те";
|
AFShort GPl => "те";
|
||||||
AdvF => "то"
|
AdvF => "то"
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper odinDet: Adjective = {s = table {
|
oper odinDet: Adjective = {s = table {
|
||||||
AF Nom _ (ASg Masc) => "один";
|
AF Nom _ (GSg Masc) => "один";
|
||||||
AF Nom _ (ASg Fem) => "одна";
|
AF Nom _ (GSg Fem) => "одна";
|
||||||
AF Nom _ (ASg Neut) => "одно";
|
AF Nom _ (GSg Neut) => "одно";
|
||||||
AF Nom _ APl => "одни";
|
AF Nom _ GPl => "одни";
|
||||||
AF Acc Inanimate (ASg Masc) => "один";
|
AF Acc Inanimate (GSg Masc) => "один";
|
||||||
AF Acc Animate (ASg Masc) => "одного";
|
AF Acc Animate (GSg Masc) => "одного";
|
||||||
AF Acc _ (ASg Fem) => "одну";
|
AF Acc _ (GSg Fem) => "одну";
|
||||||
AF Acc _ (ASg Neut) => "одно";
|
AF Acc _ (GSg Neut) => "одно";
|
||||||
AF Acc Inanimate APl => "одни";
|
AF Acc Inanimate GPl => "одни";
|
||||||
AF Acc Animate APl => "одних";
|
AF Acc Animate GPl => "одних";
|
||||||
AF Gen _ (ASg Masc) => "одного";
|
AF Gen _ (GSg Masc) => "одного";
|
||||||
AF Gen _ (ASg Fem) => "одной";
|
AF Gen _ (GSg Fem) => "одной";
|
||||||
AF Gen _ (ASg Neut) => "одного";
|
AF Gen _ (GSg Neut) => "одного";
|
||||||
AF Gen _ APl => "одних";
|
AF Gen _ GPl => "одних";
|
||||||
AF Inst _ (ASg Masc) => "одним";
|
AF Inst _ (GSg Masc) => "одним";
|
||||||
AF Inst _ (ASg Fem) => "одной";
|
AF Inst _ (GSg Fem) => "одной";
|
||||||
AF Inst _ (ASg Neut) => "одним";
|
AF Inst _ (GSg Neut) => "одним";
|
||||||
AF Inst _ APl => "одними";
|
AF Inst _ GPl => "одними";
|
||||||
AF Dat _ (ASg Masc) => "одному";
|
AF Dat _ (GSg Masc) => "одному";
|
||||||
AF Dat _ (ASg Fem) => "одной";
|
AF Dat _ (GSg Fem) => "одной";
|
||||||
AF Dat _ (ASg Neut) => "одному";
|
AF Dat _ (GSg Neut) => "одному";
|
||||||
AF Dat _ APl => "одним";
|
AF Dat _ GPl => "одним";
|
||||||
AF (Prepos _) _ (ASg Masc) => "одном";
|
AF (Prepos _) _ (GSg Masc) => "одном";
|
||||||
AF (Prepos _) _ (ASg Fem) => "одной";
|
AF (Prepos _) _ (GSg Fem) => "одной";
|
||||||
AF (Prepos _) _ (ASg Neut) => "одном";
|
AF (Prepos _) _ (GSg Neut) => "одном";
|
||||||
AF (Prepos _) _ APl => "одних";
|
AF (Prepos _) _ GPl => "одних";
|
||||||
AFShort (ASg Masc) => "один";
|
AFShort (GSg Masc) => "один";
|
||||||
AFShort (ASg Fem) => "одна";
|
AFShort (GSg Fem) => "одна";
|
||||||
AFShort (ASg Neut) => "одно";
|
AFShort (GSg Neut) => "одно";
|
||||||
AFShort APl => "одни";
|
AFShort GPl => "одни";
|
||||||
AdvF => "одно"
|
AdvF => "одно"
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper etotDet: Adjective = {s = table {
|
oper etotDet: Adjective = {s = table {
|
||||||
AF Nom _ (ASg Masc) => "этот";
|
AF Nom _ (GSg Masc) => "этот";
|
||||||
AF Nom _ (ASg Fem) => "эта";
|
AF Nom _ (GSg Fem) => "эта";
|
||||||
AF Nom _ (ASg Neut) => "это";
|
AF Nom _ (GSg Neut) => "это";
|
||||||
AF Nom _ APl => "эти";
|
AF Nom _ GPl => "эти";
|
||||||
AF Acc Inanimate (ASg Masc) => "этот";
|
AF Acc Inanimate (GSg Masc) => "этот";
|
||||||
AF Acc Animate (ASg Masc) => "этого";
|
AF Acc Animate (GSg Masc) => "этого";
|
||||||
AF Acc _ (ASg Fem) => "эту";
|
AF Acc _ (GSg Fem) => "эту";
|
||||||
AF Acc _ (ASg Neut) => "это";
|
AF Acc _ (GSg Neut) => "это";
|
||||||
AF Acc Inanimate APl => "эти";
|
AF Acc Inanimate GPl => "эти";
|
||||||
AF Acc Animate APl => "этих";
|
AF Acc Animate GPl => "этих";
|
||||||
AF Gen _ (ASg Masc) => "этого";
|
AF Gen _ (GSg Masc) => "этого";
|
||||||
AF Gen _ (ASg Fem) => "этой";
|
AF Gen _ (GSg Fem) => "этой";
|
||||||
AF Gen _ (ASg Neut) => "этого";
|
AF Gen _ (GSg Neut) => "этого";
|
||||||
AF Gen _ APl => "этих";
|
AF Gen _ GPl => "этих";
|
||||||
AF Inst _ (ASg Masc) => "этим";
|
AF Inst _ (GSg Masc) => "этим";
|
||||||
AF Inst _ (ASg Fem) => "этой";
|
AF Inst _ (GSg Fem) => "этой";
|
||||||
AF Inst _ (ASg Neut) => "этим";
|
AF Inst _ (GSg Neut) => "этим";
|
||||||
AF Inst _ APl => "этими";
|
AF Inst _ GPl => "этими";
|
||||||
AF Dat _ (ASg Masc) => "этому";
|
AF Dat _ (GSg Masc) => "этому";
|
||||||
AF Dat _ (ASg Fem) => "этой";
|
AF Dat _ (GSg Fem) => "этой";
|
||||||
AF Dat _ (ASg Neut) => "этому";
|
AF Dat _ (GSg Neut) => "этому";
|
||||||
AF Dat _ APl => "этим";
|
AF Dat _ GPl => "этим";
|
||||||
AF (Prepos _) _ (ASg Masc) => "этом";
|
AF (Prepos _) _ (GSg Masc) => "этом";
|
||||||
AF (Prepos _) _ (ASg Fem) => "этой";
|
AF (Prepos _) _ (GSg Fem) => "этой";
|
||||||
AF (Prepos _) _ (ASg Neut) => "этом";
|
AF (Prepos _) _ (GSg Neut) => "этом";
|
||||||
AF (Prepos _) _ APl => "этих";
|
AF (Prepos _) _ GPl => "этих";
|
||||||
AFShort (ASg Masc) => "этот";
|
AFShort (GSg Masc) => "этот";
|
||||||
AFShort (ASg Fem) => "эта";
|
AFShort (GSg Fem) => "эта";
|
||||||
AFShort (ASg Neut) => "это";
|
AFShort (GSg Neut) => "это";
|
||||||
AFShort APl => "эти";
|
AFShort GPl => "эти";
|
||||||
AdvF => "это"
|
AdvF => "это"
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper vesDet: Adjective = {s = table {
|
oper vesDet: Adjective = {s = table {
|
||||||
AF Nom _ (ASg Masc) => "весь";
|
AF Nom _ (GSg Masc) => "весь";
|
||||||
AF Nom _ (ASg Fem) => "вся";
|
AF Nom _ (GSg Fem) => "вся";
|
||||||
AF Nom _ (ASg Neut) => "всё";
|
AF Nom _ (GSg Neut) => "всё";
|
||||||
AF Nom _ APl => "все";
|
AF Nom _ GPl => "все";
|
||||||
AF Acc Animate (ASg Masc) => "весь";
|
AF Acc Animate (GSg Masc) => "весь";
|
||||||
AF Acc Inanimate (ASg Masc) => "всего";
|
AF Acc Inanimate (GSg Masc) => "всего";
|
||||||
AF Acc _ (ASg Fem) => "всю";
|
AF Acc _ (GSg Fem) => "всю";
|
||||||
AF Acc _ (ASg Neut) => "всё";
|
AF Acc _ (GSg Neut) => "всё";
|
||||||
AF Acc Inanimate APl => "все";
|
AF Acc Inanimate GPl => "все";
|
||||||
AF Acc Animate APl => "всех";
|
AF Acc Animate GPl => "всех";
|
||||||
AF Gen _ (ASg Masc) => "всего";
|
AF Gen _ (GSg Masc) => "всего";
|
||||||
AF Gen _ (ASg Fem) => "всей";
|
AF Gen _ (GSg Fem) => "всей";
|
||||||
AF Gen _ (ASg Neut) => "всего";
|
AF Gen _ (GSg Neut) => "всего";
|
||||||
AF Gen _ APl => "всех";
|
AF Gen _ GPl => "всех";
|
||||||
AF Inst _ (ASg Masc) => "всем";
|
AF Inst _ (GSg Masc) => "всем";
|
||||||
AF Inst _ (ASg Fem) => "всей";
|
AF Inst _ (GSg Fem) => "всей";
|
||||||
AF Inst _ (ASg Neut) => "всем";
|
AF Inst _ (GSg Neut) => "всем";
|
||||||
AF Inst _ APl => "всеми";
|
AF Inst _ GPl => "всеми";
|
||||||
AF Dat _ (ASg Masc) => "ему";
|
AF Dat _ (GSg Masc) => "ему";
|
||||||
AF Dat _ (ASg Fem) => "ей";
|
AF Dat _ (GSg Fem) => "ей";
|
||||||
AF Dat _ (ASg Neut) => "ему";
|
AF Dat _ (GSg Neut) => "ему";
|
||||||
AF Dat _ APl => "всем";
|
AF Dat _ GPl => "всем";
|
||||||
AF (Prepos _) _ (ASg Masc) => "всём";
|
AF (Prepos _) _ (GSg Masc) => "всём";
|
||||||
AF (Prepos _) _ (ASg Fem) => "всей";
|
AF (Prepos _) _ (GSg Fem) => "всей";
|
||||||
AF (Prepos _) _ (ASg Neut) => "всём";
|
AF (Prepos _) _ (GSg Neut) => "всём";
|
||||||
AF (Prepos _) _ APl => "всех" ;
|
AF (Prepos _) _ GPl => "всех" ;
|
||||||
AFShort (ASg Masc) => "весь";
|
AFShort (GSg Masc) => "весь";
|
||||||
AFShort (ASg Fem) => "вся";
|
AFShort (GSg Fem) => "вся";
|
||||||
AFShort (ASg Neut) => "всё";
|
AFShort (GSg Neut) => "всё";
|
||||||
AFShort APl => "все";
|
AFShort GPl => "все";
|
||||||
AdvF => "полностью"
|
AdvF => "полностью"
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper uy_j_EndDecl : Str -> Adjective = \s ->{s = table {
|
oper uy_j_EndDecl : Str -> Adjective = \s ->{s = table {
|
||||||
AF Nom _ (ASg Masc) => s+ "ый";
|
AF Nom _ (GSg Masc) => s+ "ый";
|
||||||
AF Nom _ (ASg Fem) => s + "ая";
|
AF Nom _ (GSg Fem) => s + "ая";
|
||||||
AF Nom _ (ASg Neut) => s + "ое";
|
AF Nom _ (GSg Neut) => s + "ое";
|
||||||
AF Nom _ APl => s + "ые";
|
AF Nom _ GPl => s + "ые";
|
||||||
AF Acc Inanimate (ASg Masc) => s + "ый";
|
AF Acc Inanimate (GSg Masc) => s + "ый";
|
||||||
AF Acc Animate (ASg Masc) => s + "ого";
|
AF Acc Animate (GSg Masc) => s + "ого";
|
||||||
AF Acc _ (ASg Fem) => s + "ую";
|
AF Acc _ (GSg Fem) => s + "ую";
|
||||||
AF Acc _ (ASg Neut) => s + "ое";
|
AF Acc _ (GSg Neut) => s + "ое";
|
||||||
AF Acc Inanimate APl => s + "ые";
|
AF Acc Inanimate GPl => s + "ые";
|
||||||
AF Acc Animate APl => s + "ых";
|
AF Acc Animate GPl => s + "ых";
|
||||||
AF Gen _ (ASg Masc) => s + "ого";
|
AF Gen _ (GSg Masc) => s + "ого";
|
||||||
AF Gen _ (ASg Fem) => s + "ой";
|
AF Gen _ (GSg Fem) => s + "ой";
|
||||||
AF Gen _ (ASg Neut) => s + "ого";
|
AF Gen _ (GSg Neut) => s + "ого";
|
||||||
AF Gen _ APl => s + "ых";
|
AF Gen _ GPl => s + "ых";
|
||||||
AF Inst _ (ASg Masc) => s + "ым";
|
AF Inst _ (GSg Masc) => s + "ым";
|
||||||
AF Inst _ (ASg Fem) => s + "ой";
|
AF Inst _ (GSg Fem) => s + "ой";
|
||||||
AF Inst _ (ASg Neut) => s + "ым";
|
AF Inst _ (GSg Neut) => s + "ым";
|
||||||
AF Inst _ APl => s + "ыми";
|
AF Inst _ GPl => s + "ыми";
|
||||||
AF Dat _ (ASg Masc) => s + "ому";
|
AF Dat _ (GSg Masc) => s + "ому";
|
||||||
AF Dat _ (ASg Fem) => s + "ой";
|
AF Dat _ (GSg Fem) => s + "ой";
|
||||||
AF Dat _ (ASg Neut) => s + "ому";
|
AF Dat _ (GSg Neut) => s + "ому";
|
||||||
AF Dat _ APl => s + "ым";
|
AF Dat _ GPl => s + "ым";
|
||||||
AF (Prepos _) _ (ASg Masc) => s + "ом";
|
AF (Prepos _) _ (GSg Masc) => s + "ом";
|
||||||
AF (Prepos _) _ (ASg Fem) => s + "ой";
|
AF (Prepos _) _ (GSg Fem) => s + "ой";
|
||||||
AF (Prepos _) _ (ASg Neut) => s + "ом";
|
AF (Prepos _) _ (GSg Neut) => s + "ом";
|
||||||
AF (Prepos _) _ APl => s + "ых";
|
AF (Prepos _) _ GPl => s + "ых";
|
||||||
AFShort (ASg Masc) => s;
|
AFShort (GSg Masc) => s;
|
||||||
AFShort (ASg Fem) => s + "а";
|
AFShort (GSg Fem) => s + "а";
|
||||||
AFShort (ASg Neut) => s + "о" ;
|
AFShort (GSg Neut) => s + "о" ;
|
||||||
AFShort APl => s + "ы";
|
AFShort GPl => s + "ы";
|
||||||
AdvF => s +"о"
|
AdvF => s +"о"
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
@@ -984,32 +964,32 @@ oper uy_j_EndDecl : Str -> Adjective = \s ->{s = table {
|
|||||||
{-
|
{-
|
||||||
-- Commented out since I don't know what the short forms are
|
-- Commented out since I don't know what the short forms are
|
||||||
oper ti_j_EndDecl : Str -> Adjective = \s ->{s = table {
|
oper ti_j_EndDecl : Str -> Adjective = \s ->{s = table {
|
||||||
AF Nom _ (ASg Masc) => s+"ий";
|
AF Nom _ (GSg Masc) => s+"ий";
|
||||||
AF Nom _ (ASg Fem) => s+"ья";
|
AF Nom _ (GSg Fem) => s+"ья";
|
||||||
AF Nom _ (ASg Neut) => s+"ье";
|
AF Nom _ (GSg Neut) => s+"ье";
|
||||||
AF Nom _ APl => s+"ьи";
|
AF Nom _ GPl => s+"ьи";
|
||||||
AF Acc Inanimate (ASg Masc) => s+"ий";
|
AF Acc Inanimate (GSg Masc) => s+"ий";
|
||||||
AF Acc Animate (ASg Masc) => s+"ьего";
|
AF Acc Animate (GSg Masc) => s+"ьего";
|
||||||
AF Acc _ (ASg Fem) => s+"ью";
|
AF Acc _ (GSg Fem) => s+"ью";
|
||||||
AF Acc _ (ASg Neut) => s+"ье";
|
AF Acc _ (GSg Neut) => s+"ье";
|
||||||
AF Acc Inanimate APl => s+"ьи";
|
AF Acc Inanimate GPl => s+"ьи";
|
||||||
AF Acc Animate APl => s+"ьих";
|
AF Acc Animate GPl => s+"ьих";
|
||||||
AF Gen _ (ASg Masc) => s+"ьего";
|
AF Gen _ (GSg Masc) => s+"ьего";
|
||||||
AF Gen _ (ASg Fem) => s+"ьей";
|
AF Gen _ (GSg Fem) => s+"ьей";
|
||||||
AF Gen _ (ASg Neut) => s+"ьего";
|
AF Gen _ (GSg Neut) => s+"ьего";
|
||||||
AF Gen _ APl => s+"ьих";
|
AF Gen _ GPl => s+"ьих";
|
||||||
AF Inst _ (ASg Masc) => s+"ьим";
|
AF Inst _ (GSg Masc) => s+"ьим";
|
||||||
AF Inst _ (ASg Fem) => s+"ьей";
|
AF Inst _ (GSg Fem) => s+"ьей";
|
||||||
AF Inst _ (ASg Neut) => s+"ьим";
|
AF Inst _ (GSg Neut) => s+"ьим";
|
||||||
AF Inst _ APl => s+"ьими";
|
AF Inst _ GPl => s+"ьими";
|
||||||
AF Dat _ (ASg Masc) => s+"ьему";
|
AF Dat _ (GSg Masc) => s+"ьему";
|
||||||
AF Dat _ (ASg Fem) => s+"ьей";
|
AF Dat _ (GSg Fem) => s+"ьей";
|
||||||
AF Dat _ (ASg Neut) => s+"ьему";
|
AF Dat _ (GSg Neut) => s+"ьему";
|
||||||
AF Dat _ APl => s+"ьим";
|
AF Dat _ GPl => s+"ьим";
|
||||||
AF (Prepos _) _ (ASg Masc) => s+"ьем";
|
AF (Prepos _) _ (GSg Masc) => s+"ьем";
|
||||||
AF (Prepos _) _ (ASg Fem) => s+"ьей";
|
AF (Prepos _) _ (GSg Fem) => s+"ьей";
|
||||||
AF (Prepos _) _ (ASg Neut) => s+"ьем";
|
AF (Prepos _) _ (GSg Neut) => s+"ьем";
|
||||||
AF (Prepos _) _ APl => s+"ьих";
|
AF (Prepos _) _ GPl => s+"ьих";
|
||||||
AdvF => s + "ье"
|
AdvF => s + "ье"
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
@@ -1094,72 +1074,72 @@ oper PresentVerb : Type = PresentVF => Str ;
|
|||||||
|
|
||||||
oper presentConjDolzhen: Str -> Str -> PresentVerb = \del, sgP1End ->
|
oper presentConjDolzhen: Str -> Str -> PresentVerb = \del, sgP1End ->
|
||||||
table {
|
table {
|
||||||
PRF APl _ => del + "ны" ;
|
PRF GPl _ => del + "ны" ;
|
||||||
PRF (ASg Masc) _ => del + sgP1End ;
|
PRF (GSg Masc) _ => del + sgP1End ;
|
||||||
PRF (ASg Fem) _ => del + "на" ;
|
PRF (GSg Fem) _ => del + "на" ;
|
||||||
PRF (ASg Neut) _ => del + "но"
|
PRF (GSg Neut) _ => del + "но"
|
||||||
};
|
};
|
||||||
|
|
||||||
-- +++ MG_UR: changed! +++
|
-- +++ MG_UR: changed! +++
|
||||||
oper presentConjMixed: Str -> Str -> PresentVerb = \del, sgP1End ->
|
oper presentConjMixed: Str -> Str -> PresentVerb = \del, sgP1End ->
|
||||||
table {
|
table {
|
||||||
PRF (ASg _) P1 => del+ sgP1End ; -- sgP1End "чу"
|
PRF (GSg _) P1 => del+ sgP1End ; -- sgP1End "чу"
|
||||||
PRF (ASg _) P2 => del+ "чешь" ;
|
PRF (GSg _) P2 => del+ "чешь" ;
|
||||||
PRF (ASg _) P3 => del+ "чет" ;
|
PRF (GSg _) P3 => del+ "чет" ;
|
||||||
PRF APl P1 => del+ "тим" ;
|
PRF GPl P1 => del+ "тим" ;
|
||||||
PRF APl P2 => del+ "тите" ;
|
PRF GPl P2 => del+ "тите" ;
|
||||||
PRF APl P3 => del+ "тят"
|
PRF GPl P3 => del+ "тят"
|
||||||
};
|
};
|
||||||
|
|
||||||
-- +++ MG_UR: changed! (+ д) +++
|
-- +++ MG_UR: changed! (+ д) +++
|
||||||
oper presentConj2: Str -> Str -> PresentVerb = \del, sgP1End ->
|
oper presentConj2: Str -> Str -> PresentVerb = \del, sgP1End ->
|
||||||
table {
|
table {
|
||||||
PRF (ASg _) P1 => del+ sgP1End ; -- sgP1End "жу"
|
PRF (GSg _) P1 => del+ sgP1End ; -- sgP1End "жу"
|
||||||
PRF (ASg _) P2 => del+ "дишь" ;
|
PRF (GSg _) P2 => del+ "дишь" ;
|
||||||
PRF (ASg _) P3 => del+ "дит" ;
|
PRF (GSg _) P3 => del+ "дит" ;
|
||||||
PRF APl P1 => del+ "дим" ;
|
PRF GPl P1 => del+ "дим" ;
|
||||||
PRF APl P2 => del+ "дите" ;
|
PRF GPl P2 => del+ "дите" ;
|
||||||
PRF APl P3 => del+ "дят"
|
PRF GPl P3 => del+ "дят"
|
||||||
};
|
};
|
||||||
|
|
||||||
oper presentConj2a: Str -> Str -> PresentVerb = \del, sgP1End ->
|
oper presentConj2a: Str -> Str -> PresentVerb = \del, sgP1End ->
|
||||||
table {
|
table {
|
||||||
PRF (ASg _) P1 => del+ sgP1End ; -- sgP1End "жу"
|
PRF (GSg _) P1 => del+ sgP1End ; -- sgP1End "жу"
|
||||||
PRF (ASg _) P2 => del+ "ишь" ;
|
PRF (GSg _) P2 => del+ "ишь" ;
|
||||||
PRF (ASg _) P3 => del+ "ит" ;
|
PRF (GSg _) P3 => del+ "ит" ;
|
||||||
PRF APl P1 => del+ "им" ;
|
PRF GPl P1 => del+ "им" ;
|
||||||
PRF APl P2 => del+ "ите" ;
|
PRF GPl P2 => del+ "ите" ;
|
||||||
PRF APl P3 => del+ "ят"
|
PRF GPl P3 => del+ "ят"
|
||||||
};
|
};
|
||||||
|
|
||||||
oper presentConj1E: Str -> Str -> PresentVerb = \del, sgP1End ->
|
oper presentConj1E: Str -> Str -> PresentVerb = \del, sgP1End ->
|
||||||
table {
|
table {
|
||||||
PRF (ASg _) P1 => del+ sgP1End ;
|
PRF (GSg _) P1 => del+ sgP1End ;
|
||||||
PRF (ASg _) P2 => del+ "ёшь" ;
|
PRF (GSg _) P2 => del+ "ёшь" ;
|
||||||
PRF (ASg _) P3 => del+ "ёт" ;
|
PRF (GSg _) P3 => del+ "ёт" ;
|
||||||
PRF APl P1 => del+ "ём" ;
|
PRF GPl P1 => del+ "ём" ;
|
||||||
PRF APl P2 => del+ "ёте" ;
|
PRF GPl P2 => del+ "ёте" ;
|
||||||
PRF APl P3 => del+ sgP1End + "т"
|
PRF GPl P3 => del+ sgP1End + "т"
|
||||||
};
|
};
|
||||||
|
|
||||||
oper presentConj1: Str -> Str -> PresentVerb = \del, sgP1End ->
|
oper presentConj1: Str -> Str -> PresentVerb = \del, sgP1End ->
|
||||||
table {
|
table {
|
||||||
PRF (ASg _) P1 => del+ sgP1End ;
|
PRF (GSg _) P1 => del+ sgP1End ;
|
||||||
PRF (ASg _) P2 => del+ "ешь" ;
|
PRF (GSg _) P2 => del+ "ешь" ;
|
||||||
PRF (ASg _) P3 => del+ "ет" ;
|
PRF (GSg _) P3 => del+ "ет" ;
|
||||||
PRF APl P1 => del+ "ем" ;
|
PRF GPl P1 => del+ "ем" ;
|
||||||
PRF APl P2 => del+ "ете" ;
|
PRF GPl P2 => del+ "ете" ;
|
||||||
PRF APl P3 => del+ sgP1End + "т"
|
PRF GPl P3 => del+ sgP1End + "т"
|
||||||
};
|
};
|
||||||
|
|
||||||
oper presentConj1Moch: Str -> Str -> Str -> PresentVerb = \del, sgP1End, altRoot ->
|
oper presentConj1Moch: Str -> Str -> Str -> PresentVerb = \del, sgP1End, altRoot ->
|
||||||
table {
|
table {
|
||||||
PRF (ASg _) P1 => del + sgP1End ;
|
PRF (GSg _) P1 => del + sgP1End ;
|
||||||
PRF (ASg _) P2 => altRoot + "ешь" ;
|
PRF (GSg _) P2 => altRoot + "ешь" ;
|
||||||
PRF (ASg _) P3 => altRoot + "ет" ;
|
PRF (GSg _) P3 => altRoot + "ет" ;
|
||||||
PRF APl P1 => altRoot + "ем" ;
|
PRF GPl P1 => altRoot + "ем" ;
|
||||||
PRF APl P2 => altRoot + "ете" ;
|
PRF GPl P2 => altRoot + "ете" ;
|
||||||
PRF APl P3 => del+ sgP1End + "т"
|
PRF GPl P3 => del+ sgP1End + "т"
|
||||||
};
|
};
|
||||||
|
|
||||||
-- "PastVerb" takes care of the past tense conjugation.
|
-- "PastVerb" takes care of the past tense conjugation.
|
||||||
@@ -1168,29 +1148,29 @@ param PastVF = PSF GenNum ;
|
|||||||
oper PastVerb : Type = PastVF => Str ;
|
oper PastVerb : Type = PastVF => Str ;
|
||||||
oper pastConj: Str -> PastVerb = \del ->
|
oper pastConj: Str -> PastVerb = \del ->
|
||||||
table {
|
table {
|
||||||
PSF (ASg Masc) => del ;
|
PSF (GSg Masc) => del ;
|
||||||
PSF (ASg Fem) => del +"а" ;
|
PSF (GSg Fem) => del +"а" ;
|
||||||
PSF (ASg Neut) => del+"о" ;
|
PSF (GSg Neut) => del+"о" ;
|
||||||
PSF APl => del+ "и"
|
PSF GPl => del+ "и"
|
||||||
};
|
};
|
||||||
|
|
||||||
oper pastConjDolzhen: Str -> PastVerb = \del ->
|
oper pastConjDolzhen: Str -> PastVerb = \del ->
|
||||||
table {
|
table {
|
||||||
PSF (ASg Masc) => ["был "] + del + "ен" ;
|
PSF (GSg Masc) => ["был "] + del + "ен" ;
|
||||||
PSF (ASg Fem) => ["была "] + del + "на" ;
|
PSF (GSg Fem) => ["была "] + del + "на" ;
|
||||||
PSF (ASg Neut) => ["было "] + del + "но" ;
|
PSF (GSg Neut) => ["было "] + del + "но" ;
|
||||||
PSF APl => ["были "] + del + "ны"
|
PSF GPl => ["были "] + del + "ны"
|
||||||
};
|
};
|
||||||
|
|
||||||
-- further class added by Magda Gerritsen and Ulrich Real
|
-- further class added by Magda Gerritsen and Ulrich Real
|
||||||
oper presentConjForeign: Str -> Str -> PresentVerb = \del, sgP1End ->
|
oper presentConjForeign: Str -> Str -> PresentVerb = \del, sgP1End ->
|
||||||
table {
|
table {
|
||||||
PRF (ASg _) P1 => del+ sgP1End ; -- sgP1End "ю"
|
PRF (GSg _) P1 => del+ sgP1End ; -- sgP1End "ю"
|
||||||
PRF (ASg _) P2 => del+ "ешь" ;
|
PRF (GSg _) P2 => del+ "ешь" ;
|
||||||
PRF (ASg _) P3 => del+ "ет" ;
|
PRF (GSg _) P3 => del+ "ет" ;
|
||||||
PRF APl P1 => del+ "ем" ;
|
PRF GPl P1 => del+ "ем" ;
|
||||||
PRF APl P2 => del+ "ете" ;
|
PRF GPl P2 => del+ "ете" ;
|
||||||
PRF APl P3 => del+ "ют"
|
PRF GPl P3 => del+ "ют"
|
||||||
};
|
};
|
||||||
|
|
||||||
-- "verbDecl" sorts out verbs according to the aspect and voice parameters.
|
-- "verbDecl" sorts out verbs according to the aspect and voice parameters.
|
||||||
@@ -1242,19 +1222,19 @@ oper mkVerbImperfective : Str -> Str -> PresentVerb -> PastVerb -> Verbum =
|
|||||||
VIMP _ P1 => "давайте" ++ add_sya vox inf ;
|
VIMP _ P1 => "давайте" ++ add_sya vox inf ;
|
||||||
VIMP Sg P2 => add_sya vox imper ;
|
VIMP Sg P2 => add_sya vox imper ;
|
||||||
VIMP Pl P2 => add_sya vox (imper+"те") ;
|
VIMP Pl P2 => add_sya vox (imper+"те") ;
|
||||||
VIMP Sg P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF (ASg Masc) P3)) ;
|
VIMP Sg P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF (GSg Masc) P3)) ;
|
||||||
VIMP Pl P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF APl P3)) ;
|
VIMP Pl P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF GPl P3)) ;
|
||||||
|
|
||||||
VSUB gn => add_sya vox (past ! (PSF gn)) ++ "бы";
|
VSUB gn => add_sya vox (past ! (PSF gn)) ++ "бы";
|
||||||
|
|
||||||
VIND (ASg _) (VPresent p) => add_sya vox (presentFuture ! (PRF (ASg Masc) p));
|
VIND (GSg _) (VPresent p) => add_sya vox (presentFuture ! (PRF (GSg Masc) p));
|
||||||
VIND APl (VPresent p) => add_sya vox (presentFuture ! (PRF APl p));
|
VIND GPl (VPresent p) => add_sya vox (presentFuture ! (PRF GPl p));
|
||||||
VIND (ASg _) (VFuture P1) => "буду" ++ add_sya vox inf ;
|
VIND (GSg _) (VFuture P1) => "буду" ++ add_sya vox inf ;
|
||||||
VIND (ASg _) (VFuture P2) => "будешь" ++ add_sya vox inf ;
|
VIND (GSg _) (VFuture P2) => "будешь" ++ add_sya vox inf ;
|
||||||
VIND (ASg _) (VFuture P3) => "будет" ++ add_sya vox inf ;
|
VIND (GSg _) (VFuture P3) => "будет" ++ add_sya vox inf ;
|
||||||
VIND APl (VFuture P1) => "будем" ++ add_sya vox inf ;
|
VIND GPl (VFuture P1) => "будем" ++ add_sya vox inf ;
|
||||||
VIND APl (VFuture P2) => "будете" ++ add_sya vox inf ;
|
VIND GPl (VFuture P2) => "будете" ++ add_sya vox inf ;
|
||||||
VIND APl (VFuture P3) => "будут" ++ add_sya vox inf ;
|
VIND GPl (VFuture P3) => "будут" ++ add_sya vox inf ;
|
||||||
VIND gn VPast => add_sya vox (past ! (PSF gn))
|
VIND gn VPast => add_sya vox (past ! (PSF gn))
|
||||||
} } ;
|
} } ;
|
||||||
asp = Imperfective
|
asp = Imperfective
|
||||||
@@ -1264,19 +1244,19 @@ oper mkVerbPerfective: Str -> Str -> PresentVerb -> PastVerb -> Verbum =
|
|||||||
\inf, imper, presentFuture, past -> { s = table { VFORM vox vf =>
|
\inf, imper, presentFuture, past -> { s = table { VFORM vox vf =>
|
||||||
case vf of {
|
case vf of {
|
||||||
VINF => add_sya vox inf ;
|
VINF => add_sya vox inf ;
|
||||||
VIMP Sg P1 => "давайте" ++ add_sya vox (presentFuture ! (PRF (ASg Masc) P1));
|
VIMP Sg P1 => "давайте" ++ add_sya vox (presentFuture ! (PRF (GSg Masc) P1));
|
||||||
VIMP Pl P1 => "давайте" ++ add_sya vox (presentFuture ! (PRF APl P1));
|
VIMP Pl P1 => "давайте" ++ add_sya vox (presentFuture ! (PRF GPl P1));
|
||||||
VIMP Sg P2 => add_sya vox imper ;
|
VIMP Sg P2 => add_sya vox imper ;
|
||||||
VIMP Pl P2 => add_sya vox (imper+"те") ;
|
VIMP Pl P2 => add_sya vox (imper+"те") ;
|
||||||
VIMP Sg P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF (ASg Masc) P3)) ;
|
VIMP Sg P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF (GSg Masc) P3)) ;
|
||||||
VIMP Pl P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF APl P3)) ;
|
VIMP Pl P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF GPl P3)) ;
|
||||||
|
|
||||||
VSUB gn => add_sya vox (past ! (PSF gn)) ++ "бы" ;
|
VSUB gn => add_sya vox (past ! (PSF gn)) ++ "бы" ;
|
||||||
|
|
||||||
VIND (ASg _) (VPresent _) => nonExist ;
|
VIND (GSg _) (VPresent _) => nonExist ;
|
||||||
VIND APl (VPresent P1) => nonExist ;
|
VIND GPl (VPresent P1) => nonExist ;
|
||||||
VIND APl (VPresent P2) => nonExist ;
|
VIND GPl (VPresent P2) => nonExist ;
|
||||||
VIND APl (VPresent P3) => nonExist ;
|
VIND GPl (VPresent P3) => nonExist ;
|
||||||
VIND gn (VFuture p) => add_sya vox (presentFuture ! (PRF gn p)) ;
|
VIND gn (VFuture p) => add_sya vox (presentFuture ! (PRF gn p)) ;
|
||||||
VIND gn VPast => add_sya vox (past ! (PSF gn))
|
VIND gn VPast => add_sya vox (past ! (PSF gn))
|
||||||
} } ;
|
} } ;
|
||||||
|
|||||||
@@ -8,51 +8,41 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
DetCN kazhduj okhotnik = {
|
DetCN kazhduj okhotnik = {
|
||||||
s = \\c => case kazhduj.c of {
|
s = \\c => case kazhduj.c of {
|
||||||
Nom =>
|
Nom =>
|
||||||
kazhduj.s ! AF (extCase c) okhotnik.anim (gNum okhotnik.g kazhduj.n) ++
|
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g kazhduj.n) ++
|
||||||
okhotnik.s ! NF kazhduj.n (extCase c) ;
|
okhotnik.s ! NF kazhduj.n (extCase c) ;
|
||||||
_ =>
|
_ =>
|
||||||
kazhduj.s ! AF (extCase c) okhotnik.anim (gNum okhotnik.g kazhduj.n) ++
|
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g kazhduj.n) ++
|
||||||
okhotnik.s ! NF kazhduj.n kazhduj.c };
|
okhotnik.s ! NF kazhduj.n kazhduj.c };
|
||||||
n = kazhduj.n ;
|
a = agrP3 kazhduj.n (case kazhduj.g of {PNoGen => PGen okhotnik.g; _ => kazhduj.g});
|
||||||
p = P3 ;
|
|
||||||
pron = False;
|
|
||||||
g = case kazhduj.g of { PNoGen => (PGen okhotnik.g); _ => kazhduj.g };
|
|
||||||
anim = okhotnik.anim
|
anim = okhotnik.anim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UsePN masha = {
|
UsePN masha = {
|
||||||
s = \\c => masha.s ! (extCase c) ;
|
s = \\c => masha.s ! (extCase c);
|
||||||
p = P3; g = PGen masha.g ; anim = masha.anim ;
|
a = agrP3 Sg (PGen masha.g);
|
||||||
n = Sg; nComp = Sg; pron = False} ;
|
anim = masha.anim;
|
||||||
|
nComp = Sg
|
||||||
|
} ;
|
||||||
|
|
||||||
UsePron p = p ** {anim = Inanimate};
|
UsePron p = p ** {anim = Inanimate};
|
||||||
|
|
||||||
PredetNP pred np = {
|
PredetNP pred np = {
|
||||||
s = \\pf => pred.s! (AF (extCase pf) np.anim (gNum (pgen2gen np.g) np.n))++ np.s ! pf ;
|
s = \\pf => pred.s! (AF (extCase pf) np.anim (gennum (pgen2gen np.a.g) np.a.n))++ np.s ! pf ;
|
||||||
n = np.n;
|
a = np.a;
|
||||||
p = np.p;
|
anim = np.anim
|
||||||
g = np.g;
|
|
||||||
anim = np.anim;
|
|
||||||
pron = np.pron
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PPartNP np v2 = {
|
PPartNP np v2 = {
|
||||||
s = \\pf => np.s ! pf ++ v2.s ! VFORM Act VINF ;
|
s = \\pf => np.s ! pf ++ v2.s ! VFORM Act VINF ;
|
||||||
-- no participles in the Verbum type as they behave as adjectives
|
-- no participles in the Verbum type as they behave as adjectives
|
||||||
n = np.n;
|
a = np.a;
|
||||||
p = np.p;
|
anim = np.anim
|
||||||
g = np.g;
|
|
||||||
anim = np.anim;
|
|
||||||
pron = np.pron
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdvNP np adv = {
|
AdvNP np adv = {
|
||||||
s = \\pf => np.s ! pf ++ adv.s ;
|
s = \\pf => np.s ! pf ++ adv.s ;
|
||||||
n = np.n;
|
a = np.a;
|
||||||
p = np.p;
|
anim = np.anim
|
||||||
g = np.g;
|
|
||||||
anim = np.anim;
|
|
||||||
pron = np.pron
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- 1.4 additions AR 17/6/2008
|
-- 1.4 additions AR 17/6/2008
|
||||||
@@ -62,11 +52,8 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
g = Neut ; ----
|
g = Neut ; ----
|
||||||
anim = Inanimate ;
|
anim = Inanimate ;
|
||||||
in {
|
in {
|
||||||
s = \\c => kazhduj.s ! AF (extCase c) anim (gNum g kazhduj.n) ;
|
s = \\c => kazhduj.s ! AF (extCase c) anim (gennum g kazhduj.n) ;
|
||||||
n = kazhduj.n ;
|
a = agrP3 kazhduj.n (case kazhduj.g of {PNoGen => (PGen g); _ => kazhduj.g}) ;
|
||||||
p = P3 ;
|
|
||||||
pron = False;
|
|
||||||
g = case kazhduj.g of { PNoGen => (PGen g); _ => kazhduj.g };
|
|
||||||
anim = anim
|
anim = anim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -102,36 +89,27 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
|
|
||||||
MassNP okhotnik = {
|
MassNP okhotnik = {
|
||||||
s = \\c => okhotnik.s ! NF Sg (extCase c) ;
|
s = \\c => okhotnik.s ! NF Sg (extCase c) ;
|
||||||
n = Sg ;
|
a = agrP3 Sg (PGen okhotnik.g) ;
|
||||||
p = P3 ;
|
|
||||||
pron = False;
|
|
||||||
g = PGen okhotnik.g ;
|
|
||||||
anim = okhotnik.anim
|
anim = okhotnik.anim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
DetArtSg kazhduj okhotnik = {
|
DetArtSg kazhduj okhotnik = {
|
||||||
s = \\c => -- art case always Nom (AR 17/6/2008)
|
s = \\c => -- art case always Nom (AR 17/6/2008)
|
||||||
kazhduj.s ! AF (extCase c) okhotnik.anim (gNum okhotnik.g Sg) ++
|
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g Sg) ++
|
||||||
okhotnik.s ! Sg ! (extCase c) ;
|
okhotnik.s ! Sg ! (extCase c) ;
|
||||||
n = Sg ;
|
a = agrP3 Sg (case kazhduj.g of {PNoGen => PGen okhotnik.g; _ => kazhduj.g}) ;
|
||||||
p = P3 ;
|
|
||||||
pron = False;
|
|
||||||
g = case kazhduj.g of { PNoGen => (PGen okhotnik.g); _ => kazhduj.g };
|
|
||||||
anim = okhotnik.anim
|
anim = okhotnik.anim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
DetArtPl kazhduj okhotnik = {
|
DetArtPl kazhduj okhotnik = {
|
||||||
s = \\c => -- art case always Nom (AR 17/6/2008)
|
s = \\c => -- art case always Nom (AR 17/6/2008)
|
||||||
kazhduj.s ! AF (extCase c) okhotnik.anim (gNum okhotnik.g Pl) ++
|
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g Pl) ++
|
||||||
okhotnik.s ! Pl ! (extCase c) ;
|
okhotnik.s ! Pl ! (extCase c) ;
|
||||||
n = Pl ;
|
n = agrP3 Pl (case kazhduj.g of {PNoGen => PGen okhotnik.g; _ => kazhduj.g}) ;
|
||||||
p = P3 ;
|
|
||||||
pron = False;
|
|
||||||
g = case kazhduj.g of { PNoGen => (PGen okhotnik.g); _ => kazhduj.g };
|
|
||||||
anim = okhotnik.anim
|
anim = okhotnik.anim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PossPron p = {s = \\af => p.s ! mkPronForm (caseAF af) No (Poss (gNum (genAF af) (numAF af) )); c=Nom; g = PNoGen} ;
|
PossPron p = {s = \\af => p.s ! mkPronForm (caseAF af) No (Poss (gennum (genAF af) (numAF af) )); c=Nom; g = PNoGen} ;
|
||||||
|
|
||||||
NumCard c = c ;
|
NumCard c = c ;
|
||||||
NumSg = {s = \\_,_ => [] ; n = Sg} ;
|
NumSg = {s = \\_,_ => [] ; n = Sg} ;
|
||||||
@@ -164,11 +142,8 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
-- of the readings is meaningful.
|
-- of the readings is meaningful.
|
||||||
|
|
||||||
ComplN2 f x = {
|
ComplN2 f x = {
|
||||||
s = \\nf => case x.pron of {
|
s = \\nf => f.s ! nf ++ f.c2.s ++
|
||||||
True => x.s ! (case nf of {NF n c => mkPronForm c No (Poss (gNum f.g n))}) ++ f.s ! nf ;
|
x.s ! (case nf of {NF n c => mkPronForm f.c2.c Yes (Poss (gennum f.g n))}) ;
|
||||||
False => f.s ! nf ++ f.c2.s ++
|
|
||||||
x.s ! (case nf of {NF n c => mkPronForm f.c2.c Yes (Poss (gNum f.g n))})
|
|
||||||
};
|
|
||||||
g = f.g ;
|
g = f.g ;
|
||||||
anim = f.anim
|
anim = f.anim
|
||||||
} ;
|
} ;
|
||||||
@@ -189,7 +164,7 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
-- later, in the chapter on verbs.
|
-- later, in the chapter on verbs.
|
||||||
|
|
||||||
AdjCN ap cn = {
|
AdjCN ap cn = {
|
||||||
s = \\nf => ap.s ! case nf of {NF n c => AF c cn.anim (gNum cn.g n)} ++
|
s = \\nf => ap.s ! case nf of {NF n c => AF c cn.anim (gennum cn.g n)} ++
|
||||||
cn.s ! nf ;
|
cn.s ! nf ;
|
||||||
g = cn.g ;
|
g = cn.g ;
|
||||||
anim = cn.anim
|
anim = cn.anim
|
||||||
@@ -215,7 +190,7 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
RelCN idea x = {
|
RelCN idea x = {
|
||||||
s = \\nf => idea.s ! nf ++ case nf of {NF n c => x.s ! (gNum idea.g n)!c!idea.anim} ;
|
s = \\nf => idea.s ! nf ++ case nf of {NF n c => x.s ! (gennum idea.g n)!c!idea.anim} ;
|
||||||
g = idea.g ;
|
g = idea.g ;
|
||||||
anim = idea.anim
|
anim = idea.anim
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -433,9 +433,9 @@ foreign = Foreign; -- +++ MG_UR: added +++
|
|||||||
oper presentConj: (_,_,_,_,_,_: Str) -> PresentVerb =
|
oper presentConj: (_,_,_,_,_,_: Str) -> PresentVerb =
|
||||||
\sgP1, sgP2, sgP3, plP1, plP2, plP3 ->
|
\sgP1, sgP2, sgP3, plP1, plP2, plP3 ->
|
||||||
table {
|
table {
|
||||||
PRF (ASg _) P1 => sgP1 ;
|
PRF (GSg _) P1 => sgP1 ;
|
||||||
PRF (ASg _) P2 => sgP2 ;
|
PRF (GSg _) P2 => sgP2 ;
|
||||||
PRF (ASg _) P3 => sgP3 ;
|
PRF (GSg _) P3 => sgP3 ;
|
||||||
PRF APl P1 => plP1 ;
|
PRF APl P1 => plP1 ;
|
||||||
PRF APl P2 => plP2 ;
|
PRF APl P2 => plP2 ;
|
||||||
PRF APl P3 => plP3
|
PRF APl P3 => plP3
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ concrete PhraseRus of Phrase = CatRus ** open Prelude, ResRus in {
|
|||||||
UttIP ip = {s = ip.s ! PF Nom No NonPoss} ; --- Acc also
|
UttIP ip = {s = ip.s ! PF Nom No NonPoss} ; --- Acc also
|
||||||
UttIAdv iadv = iadv ;
|
UttIAdv iadv = iadv ;
|
||||||
UttNP np = {s = np.s ! PF Acc No NonPoss} ;
|
UttNP np = {s = np.s ! PF Acc No NonPoss} ;
|
||||||
UttVP vp = {s = vp.s ! ClInfinit ! ASg Masc! P3} ;
|
UttVP vp = {s = vp.s ! ClInfinit ! GSg Masc ! P3} ;
|
||||||
UttAdv adv = adv ;
|
UttAdv adv = adv ;
|
||||||
|
|
||||||
NoPConj = {s = []} ;
|
NoPConj = {s = []} ;
|
||||||
|
|||||||
@@ -29,21 +29,18 @@ concrete QuestionRus of Question = CatRus ** open ResRus, Prelude in {
|
|||||||
|
|
||||||
AdvIP ip adv = {
|
AdvIP ip adv = {
|
||||||
s = \\c => ip.s ! c ++ adv.s ;
|
s = \\c => ip.s ! c ++ adv.s ;
|
||||||
n = ip.n; p=ip.p; g=ip.g; anim=ip.anim; pron=ip.pron
|
a = ip.a; anim=ip.anim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IdetCN kakoj okhotnik =
|
IdetCN kakoj okhotnik =
|
||||||
{s = \\pf => case kakoj.c of {
|
{s = \\pf => case kakoj.c of {
|
||||||
Nom =>
|
Nom =>
|
||||||
kakoj.s ! AF (extCase pf) okhotnik.anim (gNum okhotnik.g kakoj.n) ++
|
kakoj.s ! AF (extCase pf) okhotnik.anim (gennum okhotnik.g kakoj.n) ++
|
||||||
okhotnik.s ! NF kakoj.n (extCase pf) ;
|
okhotnik.s ! NF kakoj.n (extCase pf) ;
|
||||||
_ =>
|
_ =>
|
||||||
kakoj.s ! AF (extCase pf) okhotnik.anim (gNum okhotnik.g kakoj.n) ++
|
kakoj.s ! AF (extCase pf) okhotnik.anim (gennum okhotnik.g kakoj.n) ++
|
||||||
okhotnik.s ! NF kakoj.n kakoj.c };
|
okhotnik.s ! NF kakoj.n kakoj.c };
|
||||||
n = kakoj.n ;
|
a = agrP3 kakoj.n kakoj.g ;
|
||||||
p = P3 ;
|
|
||||||
pron = False;
|
|
||||||
g = kakoj.g ;
|
|
||||||
anim = okhotnik.anim
|
anim = okhotnik.anim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -51,10 +48,7 @@ concrete QuestionRus of Question = CatRus ** open ResRus, Prelude in {
|
|||||||
|
|
||||||
IdetIP kakoj = let anim = Inanimate in
|
IdetIP kakoj = let anim = Inanimate in
|
||||||
{s = \\pf => kakoj.s ! AF (extCase pf) anim (pgNum kakoj.g kakoj.n) ;
|
{s = \\pf => kakoj.s ! AF (extCase pf) anim (pgNum kakoj.g kakoj.n) ;
|
||||||
n = kakoj.n ;
|
a = agrP3 kakoj.n kakoj.g ;
|
||||||
p = P3 ;
|
|
||||||
pron = False;
|
|
||||||
g = kakoj.g ;
|
|
||||||
anim = anim
|
anim = anim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -46,19 +46,6 @@ param
|
|||||||
-- (a big house - big houses).
|
-- (a big house - big houses).
|
||||||
-- The plural never makes a gender distinction.
|
-- The plural never makes a gender distinction.
|
||||||
|
|
||||||
GenNum = ASg Gender | APl ;
|
|
||||||
|
|
||||||
-- Coercions between the compound gen-num type and gender and number:
|
|
||||||
oper
|
|
||||||
gNum : Gender -> Number -> GenNum = \g,n ->
|
|
||||||
case n of
|
|
||||||
{ Sg => case g of
|
|
||||||
{ Fem => ASg Fem ;
|
|
||||||
Masc => ASg Masc ;
|
|
||||||
Neut => ASg Neut } ;
|
|
||||||
Pl => APl
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
-- The Possessive parameter is introduced in order to describe
|
-- The Possessive parameter is introduced in order to describe
|
||||||
-- the possessives of personal pronouns, which are used in the
|
-- the possessives of personal pronouns, which are used in the
|
||||||
@@ -88,14 +75,11 @@ param
|
|||||||
|
|
||||||
param PronForm = PF Case AfterPrep Possessive;
|
param PronForm = PF Case AfterPrep Possessive;
|
||||||
|
|
||||||
oper Pronoun = { s : PronForm => Str ; n : Number ; p : Person ;
|
oper Pronoun = {s : PronForm => Str; a : Agr} ;
|
||||||
g: PronGen ; pron: Bool} ;
|
|
||||||
|
|
||||||
-- Gender is not morphologically determined for first
|
-- Gender is not morphologically determined for first
|
||||||
-- and second person pronouns.
|
-- and second person pronouns.
|
||||||
|
|
||||||
param PronGen = PGen Gender | PNoGen ;
|
|
||||||
|
|
||||||
-- The following coercion is useful:
|
-- The following coercion is useful:
|
||||||
|
|
||||||
oper
|
oper
|
||||||
@@ -113,24 +97,25 @@ oper
|
|||||||
|
|
||||||
CommNoun = {s : NForm => Str ; g : Gender ; anim : Animacy } ;
|
CommNoun = {s : NForm => Str ; g : Gender ; anim : Animacy } ;
|
||||||
|
|
||||||
NounPhrase : Type = { s : PronForm => Str ; n : Number ;
|
NounPhrase : Type = {s : PronForm => Str; a : Agr; anim : Animacy} ;
|
||||||
p : Person ; g: PronGen ; anim : Animacy ; pron: Bool} ;
|
|
||||||
|
|
||||||
mkNP : Number -> CommNoun -> NounPhrase = \n,chelovek ->
|
mkNP : Number -> CommNoun -> NounPhrase = \n,chelovek ->
|
||||||
{s = \\cas => chelovek.s ! NF n (extCase cas) ;
|
{s = \\cas => chelovek.s ! NF n (extCase cas) ;
|
||||||
n = n ; g = PGen chelovek.g ; p = P3 ; pron =False ;
|
a = agrP3 n (PGen chelovek.g);
|
||||||
anim = chelovek.anim
|
anim = chelovek.anim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
det2NounPhrase : Adjective -> NounPhrase = \eto ->
|
det2NounPhrase : Adjective -> NounPhrase = \eto ->
|
||||||
{s = \\pf => eto.s ! (AF (extCase pf) Inanimate (ASg Neut)); n = Sg ; g = PGen Neut ; pron = False ; p = P3 ; anim = Inanimate } ;
|
{s = \\pf => eto.s ! AF (extCase pf) Inanimate (GSg Neut); a = agrP3 Sg (PGen Neut); anim = Inanimate} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
pron2NounPhraseNum : Pronoun -> Animacy -> Number -> NounPhrase = \ona, anim, num ->
|
pron2NounPhraseNum : Pronoun -> Animacy -> Number -> NounPhrase =
|
||||||
{s = ona.s ; n = num ; g = ona.g ;
|
\ona, anim, num -> {
|
||||||
pron = ona.pron; p = ona.p ; anim = anim } ;
|
s = ona.s;
|
||||||
|
a = {n = num; p = ona.a.p; g = ona.a.g};
|
||||||
|
anim = anim
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Agreement of $NP$ is a record. We'll add $Gender$ later.
|
-- Agreement of $NP$ is a record. We'll add $Gender$ later.
|
||||||
-- oper Agr = {n : Number ; p : Person} ;
|
-- oper Agr = {n : Number ; p : Person} ;
|
||||||
@@ -232,8 +217,8 @@ Prep =>"себе"};
|
|||||||
let
|
let
|
||||||
{ ya = Ya.s ! (mkPronForm Nom No NonPoss);
|
{ ya = Ya.s ! (mkPronForm Nom No NonPoss);
|
||||||
khorosho = tebyaNeVizhu.s2;
|
khorosho = tebyaNeVizhu.s2;
|
||||||
vizhu = tebyaNeVizhu.s ! clf !(gNum (pgen2gen Ya.g) Ya.n)! Ya.p;
|
vizhu = tebyaNeVizhu.s ! clf !(gennum (pgen2gen Ya.a.g) Ya.a.n)! Ya.a.p;
|
||||||
tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n
|
tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.a.g) ! Ya.a.n
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
ya ++ khorosho ++ vizhu ++ tebya;
|
ya ++ khorosho ++ vizhu ++ tebya;
|
||||||
@@ -253,19 +238,19 @@ param
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
getActVerbForm : ClForm -> Gender -> Number -> Person -> VerbForm = \clf,g,n, p -> case clf of
|
getActVerbForm : ClForm -> Gender -> Number -> Person -> VerbForm = \clf,g,n, p -> case clf of
|
||||||
{ ClIndic Future _ => VFORM Act (VIND (gNum g n) (VFuture p));
|
{ ClIndic Future _ => VFORM Act (VIND (gennum g n) (VFuture p));
|
||||||
ClIndic PastRus _ => VFORM Act (VIND (gNum g n) VPast);
|
ClIndic PastRus _ => VFORM Act (VIND (gennum g n) VPast);
|
||||||
ClIndic Present _ => VFORM Act (VIND (gNum g n) (VPresent p));
|
ClIndic Present _ => VFORM Act (VIND (gennum g n) (VPresent p));
|
||||||
ClCondit => VFORM Act (VSUB (gNum g n));
|
ClCondit => VFORM Act (VSUB (gennum g n));
|
||||||
ClInfinit => VFORM Act VINF ;
|
ClInfinit => VFORM Act VINF ;
|
||||||
ClImper => VFORM Act (VIMP n p)
|
ClImper => VFORM Act (VIMP n p)
|
||||||
};
|
};
|
||||||
|
|
||||||
getPassVerbForm : ClForm -> Gender -> Number -> Person -> VerbForm = \clf,g,n, p -> case clf of
|
getPassVerbForm : ClForm -> Gender -> Number -> Person -> VerbForm = \clf,g,n, p -> case clf of
|
||||||
{ ClIndic Future _ => VFORM Pass (VIND (gNum g n) (VFuture p));
|
{ ClIndic Future _ => VFORM Pass (VIND (gennum g n) (VFuture p));
|
||||||
ClIndic PastRus _ => VFORM Pass (VIND (gNum g n) VPast);
|
ClIndic PastRus _ => VFORM Pass (VIND (gennum g n) VPast);
|
||||||
ClIndic Present _ => VFORM Pass (VIND (gNum g n) (VPresent p));
|
ClIndic Present _ => VFORM Pass (VIND (gennum g n) (VPresent p));
|
||||||
ClCondit => VFORM Pass (VSUB (gNum g n));
|
ClCondit => VFORM Pass (VSUB (gennum g n));
|
||||||
ClInfinit => VFORM Pass VINF ;
|
ClInfinit => VFORM Pass VINF ;
|
||||||
ClImper => VFORM Pass (VIMP n p)
|
ClImper => VFORM Pass (VIMP n p)
|
||||||
};
|
};
|
||||||
@@ -295,19 +280,19 @@ oper sam: Refl=
|
|||||||
|
|
||||||
pgNum : PronGen -> Number -> GenNum = \g,n ->
|
pgNum : PronGen -> Number -> GenNum = \g,n ->
|
||||||
case n of
|
case n of
|
||||||
{ Sg => ASg (pgen2gen g) ; -- assuming pronoun "I" is a male
|
{ Sg => GSg (pgen2gen g) ; -- assuming pronoun "I" is a male
|
||||||
Pl => APl
|
Pl => GPl
|
||||||
} ;
|
} ;
|
||||||
-- _ => variants {ASg Masc ; ASg Fem} } ;
|
-- _ => variants {GSg Masc ; GSg Fem} } ;
|
||||||
-- "variants" version cause "no term variants" error during linearization
|
-- "variants" version cause "no term variants" error during linearization
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
oper numGNum : GenNum -> Number = \gn ->
|
oper numGNum : GenNum -> Number = \gn ->
|
||||||
case gn of { APl => Pl ; _ => Sg } ;
|
case gn of { GPl => Pl ; _ => Sg } ;
|
||||||
|
|
||||||
oper genGNum : GenNum -> Gender = \gn ->
|
oper genGNum : GenNum -> Gender = \gn ->
|
||||||
case gn of { ASg Fem => Fem; ASg Masc => Masc; _ => Neut } ;
|
case gn of { GSg Fem => Fem; GSg Masc => Masc; _ => Neut } ;
|
||||||
|
|
||||||
oper numAF: AdjForm -> Number = \af ->
|
oper numAF: AdjForm -> Number = \af ->
|
||||||
case af of { AdvF => Sg; AFShort gn => numGNum gn; AF _ _ gn => (numGNum gn) } ;
|
case af of { AdvF => Sg; AFShort gn => numGNum gn; AF _ _ gn => (numGNum gn) } ;
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
|
|||||||
_ => (mkPronForm Nom No NonPoss)
|
_ => (mkPronForm Nom No NonPoss)
|
||||||
});
|
});
|
||||||
ne = case b of {Pos=>""; Neg=>"не"};
|
ne = case b of {Pos=>""; Neg=>"не"};
|
||||||
vizhu = tebyaNeVizhu.s ! clf ! (pgNum Ya.g Ya.n)! Ya.p;
|
vizhu = tebyaNeVizhu.s ! clf ! (pgNum Ya.a.g Ya.a.n)! Ya.a.p;
|
||||||
khorosho = tebyaNeVizhu.s2 ;
|
khorosho = tebyaNeVizhu.s2 ;
|
||||||
tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n
|
tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.a.g) ! Ya.a.n
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
if_then_else Str tebyaNeVizhu.negBefore
|
if_then_else Str tebyaNeVizhu.negBefore
|
||||||
@@ -29,7 +29,7 @@ concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
|
|||||||
PredSCVP sc vp = { s = \\b,clf =>
|
PredSCVP sc vp = { s = \\b,clf =>
|
||||||
let {
|
let {
|
||||||
ne = case b of {Pos=>""; Neg=>"не"};
|
ne = case b of {Pos=>""; Neg=>"не"};
|
||||||
vizhu = vp.s ! clf ! (ASg Neut)! P3;
|
vizhu = vp.s ! clf ! (GSg Neut)! P3;
|
||||||
tebya = vp.s3 ! Neut ! Sg
|
tebya = vp.s3 ! Neut ! Sg
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
@@ -58,7 +58,7 @@ concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
|
|||||||
--- AR 3/11/2007
|
--- AR 3/11/2007
|
||||||
SlashVS ivan vidit tuUlubaeshsya = {
|
SlashVS ivan vidit tuUlubaeshsya = {
|
||||||
s=\\b,clf => ivan.s ! PF Nom No NonPoss ++
|
s=\\b,clf => ivan.s ! PF Nom No NonPoss ++
|
||||||
vidit.s! (getActVerbForm clf (pgen2gen ivan.g) ivan.n ivan.p) ++
|
vidit.s! (getActVerbForm clf (pgen2gen ivan.a.g) ivan.a.n ivan.a.p) ++
|
||||||
[", что"] ++ tuUlubaeshsya.s ;
|
[", что"] ++ tuUlubaeshsya.s ;
|
||||||
s2=tuUlubaeshsya.s2;
|
s2=tuUlubaeshsya.s2;
|
||||||
c=tuUlubaeshsya.c
|
c=tuUlubaeshsya.c
|
||||||
@@ -73,14 +73,14 @@ concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
|
|||||||
_ => []
|
_ => []
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
dont ++ inf.s ! ClImper ! (gNum g n )!P2 ++
|
dont ++ inf.s ! ClImper ! gennum g n ! P2 ++
|
||||||
inf.s2++inf.s3!g!n
|
inf.s2++inf.s3!g!n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
EmbedS s = {s = "что" ++ s.s} ;
|
EmbedS s = {s = "что" ++ s.s} ;
|
||||||
-- In Russian "Whether you go" transformed in "go whether you":
|
-- In Russian "Whether you go" transformed in "go whether you":
|
||||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||||
EmbedVP vp = {s = vp.s2 ++ vp.s!ClInfinit!(ASg Masc) !P3 ++ vp.s3!Masc!Sg} ;
|
EmbedVP vp = {s = vp.s2 ++ vp.s!ClInfinit!(GSg Masc) !P3 ++ vp.s3!Masc!Sg} ;
|
||||||
|
|
||||||
UseCl t p cl = {s = case t.t of {
|
UseCl t p cl = {s = case t.t of {
|
||||||
Cond => cl.s! p.p ! ClCondit ; --# notpresent
|
Cond => cl.s! p.p ! ClCondit ; --# notpresent
|
||||||
|
|||||||
@@ -12,18 +12,18 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
|
|||||||
{
|
{
|
||||||
(ClIndic Present _) => masha.s ! (mkPronForm Nom No NonPoss) ;
|
(ClIndic Present _) => masha.s ! (mkPronForm Nom No NonPoss) ;
|
||||||
(ClIndic PastRus _) => case gn of
|
(ClIndic PastRus _) => case gn of
|
||||||
{ (ASg Fem) =>"была"++masha.s ! (mkPronForm Inst No NonPoss);
|
{ (GSg Fem) =>"была"++masha.s ! (mkPronForm Inst No NonPoss);
|
||||||
(ASg Masc) =>"был" ++ masha.s!(mkPronForm Inst No NonPoss);
|
(GSg Masc) =>"был" ++ masha.s!(mkPronForm Inst No NonPoss);
|
||||||
(ASg Neut) =>"было" ++ masha.s!(mkPronForm Inst No NonPoss);
|
(GSg Neut) =>"было" ++ masha.s!(mkPronForm Inst No NonPoss);
|
||||||
APl => "были" ++ masha.s ! (mkPronForm Inst No NonPoss)
|
GPl => "были" ++ masha.s ! (mkPronForm Inst No NonPoss)
|
||||||
};
|
};
|
||||||
(ClIndic Future _) => case gn of
|
(ClIndic Future _) => case gn of
|
||||||
{ APl => case p of
|
{ GPl => case p of
|
||||||
{ P3 => "будут"++masha.s ! (mkPronForm Inst No NonPoss);
|
{ P3 => "будут"++masha.s ! (mkPronForm Inst No NonPoss);
|
||||||
P2 => "будете"++masha.s !(mkPronForm Inst No NonPoss);
|
P2 => "будете"++masha.s !(mkPronForm Inst No NonPoss);
|
||||||
P1 => "будем"++masha.s ! (mkPronForm Inst No NonPoss)
|
P1 => "будем"++masha.s ! (mkPronForm Inst No NonPoss)
|
||||||
};
|
};
|
||||||
(ASg _) => case p of
|
(GSg _) => case p of
|
||||||
{ P3=>"будет"++masha.s!(mkPronForm Inst No NonPoss) ;
|
{ P3=>"будет"++masha.s!(mkPronForm Inst No NonPoss) ;
|
||||||
P2 => "будешь"++ masha.s ! (mkPronForm Inst No NonPoss) ;
|
P2 => "будешь"++ masha.s ! (mkPronForm Inst No NonPoss) ;
|
||||||
P1=> "буду"++ masha.s ! (mkPronForm Inst No NonPoss)
|
P1=> "буду"++ masha.s ! (mkPronForm Inst No NonPoss)
|
||||||
@@ -46,30 +46,30 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
|
|||||||
CompAP zloj ={
|
CompAP zloj ={
|
||||||
s= \\clf,gn,p => case clf of {
|
s= \\clf,gn,p => case clf of {
|
||||||
-- person is ignored !
|
-- person is ignored !
|
||||||
ClInfinit => "быть" ++ zloj.s ! AF Inst Animate (ASg Masc) ;
|
ClInfinit => "быть" ++ zloj.s ! AF Inst Animate (GSg Masc) ;
|
||||||
ClImper => case gn of
|
ClImper => case gn of
|
||||||
{ (ASg _) => "будь" ++ zloj.s ! AF Inst Animate (ASg Masc);
|
{ (GSg _) => "будь" ++ zloj.s ! AF Inst Animate (GSg Masc);
|
||||||
APl => "будьте" ++ zloj.s ! AF Inst Animate APl
|
GPl => "будьте" ++ zloj.s ! AF Inst Animate GPl
|
||||||
};
|
};
|
||||||
-- infinitive does not save GenNum,
|
-- infinitive does not save GenNum,
|
||||||
-- but indicative does for the sake of adjectival predication !
|
-- but indicative does for the sake of adjectival predication !
|
||||||
ClIndic Present _ => zloj.s ! AF Nom Animate gn ;
|
ClIndic Present _ => zloj.s ! AF Nom Animate gn ;
|
||||||
ClIndic PastRus _ => case gn of
|
ClIndic PastRus _ => case gn of
|
||||||
{ (ASg Fem) => "была" ++ zloj.s! AF Nom Animate (ASg Fem);
|
{ (GSg Fem) => "была" ++ zloj.s! AF Nom Animate (GSg Fem);
|
||||||
(ASg Masc) => "был" ++ zloj.s! AF Nom Animate (ASg Masc);
|
(GSg Masc) => "был" ++ zloj.s! AF Nom Animate (GSg Masc);
|
||||||
(ASg Neut) => "был" ++ zloj.s! AF Nom Animate (ASg Neut);
|
(GSg Neut) => "был" ++ zloj.s! AF Nom Animate (GSg Neut);
|
||||||
APl => "были" ++ zloj.s! AF Nom Animate APl
|
GPl => "были" ++ zloj.s! AF Nom Animate GPl
|
||||||
};
|
};
|
||||||
ClIndic Future _ => case gn of
|
ClIndic Future _ => case gn of
|
||||||
{ APl => case p of
|
{ GPl => case p of
|
||||||
{ P3 => "будут" ++ zloj.s! AF Nom Animate APl;
|
{ P3 => "будут" ++ zloj.s! AF Nom Animate GPl;
|
||||||
P2 => "будете" ++ zloj.s! AF Nom Animate APl;
|
P2 => "будете" ++ zloj.s! AF Nom Animate GPl;
|
||||||
P1 => "будем" ++ zloj.s! AF Nom Animate APl
|
P1 => "будем" ++ zloj.s! AF Nom Animate GPl
|
||||||
} ;
|
} ;
|
||||||
(ASg _) => case p of
|
(GSg _) => case p of
|
||||||
{P3 => "будет" ++ zloj.s! AF Nom Animate (ASg (genGNum gn));
|
{P3 => "будет" ++ zloj.s! AF Nom Animate (GSg (genGNum gn));
|
||||||
P2 => "будешь"++ zloj.s! AF Nom Animate (ASg (genGNum gn));
|
P2 => "будешь"++ zloj.s! AF Nom Animate (GSg (genGNum gn));
|
||||||
P1=> "буду" ++ zloj.s! AF Nom Animate (ASg (genGNum gn))
|
P1=> "буду" ++ zloj.s! AF Nom Animate (GSg (genGNum gn))
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
ClCondit => ""
|
ClCondit => ""
|
||||||
@@ -94,20 +94,20 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
|
|||||||
CompAdv zloj =
|
CompAdv zloj =
|
||||||
{ s= \\clf,gn,p => case clf of {
|
{ s= \\clf,gn,p => case clf of {
|
||||||
ClImper => case gn of
|
ClImper => case gn of
|
||||||
{ ASg _ => "будь" ++ zloj.s; -- person is ignored !
|
{ GSg _ => "будь" ++ zloj.s; -- person is ignored !
|
||||||
APl => "будьте" ++ zloj.s
|
GPl => "будьте" ++ zloj.s
|
||||||
};
|
};
|
||||||
ClInfinit => "быть" ++ zloj.s;
|
ClInfinit => "быть" ++ zloj.s;
|
||||||
ClIndic Present _ => zloj.s ;
|
ClIndic Present _ => zloj.s ;
|
||||||
ClIndic PastRus _ => case gn of
|
ClIndic PastRus _ => case gn of
|
||||||
{ (ASg Fem) => "была" ++ zloj.s;
|
{ (GSg Fem) => "была" ++ zloj.s;
|
||||||
(ASg Masc) => "был" ++ zloj.s;
|
(GSg Masc) => "был" ++ zloj.s;
|
||||||
(ASg Neut) => "было" ++ zloj.s;
|
(GSg Neut) => "было" ++ zloj.s;
|
||||||
APl => "были" ++ zloj.s
|
GPl => "были" ++ zloj.s
|
||||||
};
|
};
|
||||||
ClIndic Future _ => case gn of
|
ClIndic Future _ => case gn of
|
||||||
{ (ASg _) => "будет" ++ zloj.s;
|
{ (GSg _) => "будет" ++ zloj.s;
|
||||||
APl => "будут" ++ zloj.s
|
GPl => "будут" ++ zloj.s
|
||||||
};
|
};
|
||||||
ClCondit => ""
|
ClCondit => ""
|
||||||
} ;
|
} ;
|
||||||
@@ -253,13 +253,13 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
|
|||||||
w = Act;
|
w = Act;
|
||||||
negBefore = True;
|
negBefore = True;
|
||||||
s2 = "";
|
s2 = "";
|
||||||
s3 = \\g,n => molodoj.s!(AF Inst Animate (gNum g n))
|
s3 = \\g,n => molodoj.s!(AF Inst Animate (gennum g n))
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SlashV2A obechat molodoj =
|
SlashV2A obechat molodoj =
|
||||||
{s = \\clf,gn,p =>
|
{s = \\clf,gn,p =>
|
||||||
obechat.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++
|
obechat.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++
|
||||||
molodoj.s ! AF Inst Inanimate (ASg Neut) ;
|
molodoj.s ! AF Inst Inanimate (GSg Neut) ;
|
||||||
---- AR 17/6; AF Inst tu.anim (pgNum tu.g tu.n) ;
|
---- AR 17/6; AF Inst tu.anim (pgNum tu.g tu.n) ;
|
||||||
asp = obechat.asp ;
|
asp = obechat.asp ;
|
||||||
w = Act;
|
w = Act;
|
||||||
|
|||||||
@@ -3,4 +3,20 @@ resource CommonSlavic = ParamX ** open Prelude in {
|
|||||||
param
|
param
|
||||||
Gender = Masc | Fem | Neut ;
|
Gender = Masc | Fem | Neut ;
|
||||||
Animacy = Animate | Inanimate ;
|
Animacy = Animate | Inanimate ;
|
||||||
|
|
||||||
|
GenNum = GSg Gender | GPl ;
|
||||||
|
|
||||||
|
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
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user