mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-22 19:22:50 -06:00
The final fix of noun phrases with cardinal numbers in Russian
The support for variation of the noun depending on what cardinal it is
used with seems to be complete by now ("one child - two children -
five children" - Russian has different plural forms for "a child" when
counting). The case agreement in noun phrases that have additional
determiners besides numerals ("three little blind mice") is fixed too.
This commit is contained in:
@@ -58,15 +58,14 @@ concrete CatRus of Cat = CommonX ** open ResRus, Prelude in {
|
|||||||
-- Gender parameter is due to multiple determiners (Numerals in Russian)
|
-- Gender parameter is due to multiple determiners (Numerals in Russian)
|
||||||
-- like "mnogo"
|
-- like "mnogo"
|
||||||
-- The determined noun has the case parameter specific for the determiner
|
-- The determined noun has the case parameter specific for the determiner
|
||||||
-- 'q' is for 'quantity', quantity determiners demand genitive for the noun
|
|
||||||
|
|
||||||
Det = {s : AdjForm => Str; n: Number; g: PronGen; c: Case; q: Bool} ;
|
Det = {s : AdjForm => Str; n: Number; g: PronGen; c: Case; size: Size} ;
|
||||||
Predet, Quant = {s : AdjForm => Str; g: PronGen; c: Case; q: Bool} ;
|
Predet, Quant = {s : AdjForm => Str; g: PronGen; c: Case; size: Size} ;
|
||||||
|
|
||||||
-- Numeral
|
-- Numeral
|
||||||
|
|
||||||
Num, Numeral, Card = {s : Gender => Animacy => Case => Str ; n : Number} ;
|
Num, Numeral, Card = {s : Gender => Animacy => Case => Str ; n : Number ; size: Size} ;
|
||||||
Digits = {s : Str ; n : Number} ; ----
|
Digits = {s : Str ; n : Number ; size: Size} ; ----
|
||||||
|
|
||||||
-- Structural
|
-- Structural
|
||||||
-- The conjunction has an inherent number, which is used when conjoining
|
-- The conjunction has an inherent number, which is used when conjoining
|
||||||
|
|||||||
@@ -346,18 +346,18 @@ Paradigms:
|
|||||||
let i = iAfter stem in
|
let i = iAfter stem in
|
||||||
let o = oAfter stem in
|
let o = oAfter stem in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg Nom => stem ;
|
NF Sg Nom _ => stem ;
|
||||||
NF Sg Gen => stem+"а" ;
|
NF Sg Gen _ => stem+"а" ;
|
||||||
NF Sg Dat => stem+"у" ;
|
NF Sg Dat _ => stem+"у" ;
|
||||||
NF Sg Acc => stem ;
|
NF Sg Acc _ => stem ;
|
||||||
NF Sg Inst => stem+o+"м" ;
|
NF Sg Inst _ => stem+o+"м" ;
|
||||||
NF Sg (Prepos _) => stem+"е" ;
|
NF Sg (Prepos _) _ => stem+"е" ;
|
||||||
NF Pl Nom => stem+i ;
|
NF Pl Nom _ => stem+i ;
|
||||||
NF Pl Gen => stem+case stem of { _+("ш"|"ж"|"ч"|"щ") => "ей"; _ => "ов" } ;
|
NF Pl Gen _ => stem+case stem of { _+("ш"|"ж"|"ч"|"щ") => "ей"; _ => "ов" } ;
|
||||||
NF Pl Dat => stem+"ам" ;
|
NF Pl Dat _ => stem+"ам" ;
|
||||||
NF Pl Acc => stem+i ;
|
NF Pl Acc _ => stem+i ;
|
||||||
NF Pl Inst => stem+"ами" ;
|
NF Pl Inst _ => stem+"ами" ;
|
||||||
NF Pl (Prepos _) => stem+"ах" };
|
NF Pl (Prepos _) _ => stem+"ах" };
|
||||||
g = Masc; anim = Inanimate };
|
g = Masc; anim = Inanimate };
|
||||||
|
|
||||||
-- 1. Hard regular neuter inanimate, e.g. pravilo.
|
-- 1. Hard regular neuter inanimate, e.g. pravilo.
|
||||||
@@ -367,18 +367,18 @@ Paradigms:
|
|||||||
oper nRegHardNeut : Str ->CommNoun= \stem ->
|
oper nRegHardNeut : Str ->CommNoun= \stem ->
|
||||||
let o = oAfter stem in
|
let o = oAfter stem in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg Nom => stem+o ;
|
NF Sg Nom _ => stem+o ;
|
||||||
NF Sg Gen => stem+"а" ;
|
NF Sg Gen _ => stem+"а" ;
|
||||||
NF Sg Dat => stem+"у" ;
|
NF Sg Dat _ => stem+"у" ;
|
||||||
NF Sg Acc => stem+o ;
|
NF Sg Acc _ => stem+o ;
|
||||||
NF Sg Inst => stem+o+"м" ;
|
NF Sg Inst _ => stem+o+"м" ;
|
||||||
NF Sg (Prepos _) => stem+"е" ;
|
NF Sg (Prepos _) _ => stem+"е" ;
|
||||||
NF Pl Nom => stem+case stem of { _+"к" => "и" ; _ => "а" } ;
|
NF Pl Nom _ => stem+case stem of { _+"к" => "и" ; _ => "а" } ;
|
||||||
NF Pl Gen => stem ;
|
NF Pl Gen _ => stem ;
|
||||||
NF Pl Dat => stem+"ам" ;
|
NF Pl Dat _ => stem+"ам" ;
|
||||||
NF Pl Acc => stem+"а" ;
|
NF Pl Acc _ => stem+"а" ;
|
||||||
NF Pl Inst => stem+"ами" ;
|
NF Pl Inst _ => stem+"ами" ;
|
||||||
NF Pl (Prepos _) => stem+"ах" };
|
NF Pl (Prepos _) _ => stem+"ах" };
|
||||||
g = Neut; anim = Inanimate };
|
g = Neut; anim = Inanimate };
|
||||||
|
|
||||||
-- 1. Hard regular feminine inanimate, e.g. karta.
|
-- 1. Hard regular feminine inanimate, e.g. karta.
|
||||||
@@ -389,77 +389,77 @@ Paradigms:
|
|||||||
let i = iAfter stem in
|
let i = iAfter stem in
|
||||||
let o = oAfter stem in
|
let o = oAfter stem in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg Nom => stem+"а" ;
|
NF Sg Nom _ => stem+"а" ;
|
||||||
NF Sg Gen => stem+i ;
|
NF Sg Gen _ => stem+i ;
|
||||||
NF Sg Dat => stem+"е" ;
|
NF Sg Dat _ => stem+"е" ;
|
||||||
NF Sg Acc => stem+"у" ;
|
NF Sg Acc _ => stem+"у" ;
|
||||||
NF Sg Inst => stem+o+"й" ;
|
NF Sg Inst _ => stem+o+"й" ;
|
||||||
NF Sg (Prepos _) => stem+"е" ;
|
NF Sg (Prepos _) _ => stem+"е" ;
|
||||||
NF Pl Nom => stem+i ;
|
NF Pl Nom _ => stem+i ;
|
||||||
NF Pl Gen => stem ;
|
NF Pl Gen _ => stem ;
|
||||||
NF Pl Dat => stem+"ам" ;
|
NF Pl Dat _ => stem+"ам" ;
|
||||||
NF Pl Acc => stem+i ;
|
NF Pl Acc _ => stem+i ;
|
||||||
NF Pl Inst => stem+"ами" ;
|
NF Pl Inst _ => stem+"ами" ;
|
||||||
NF Pl (Prepos _) => stem+"ах" };
|
NF Pl (Prepos _) _ => stem+"ах" };
|
||||||
g = Fem; anim = Inanimate };
|
g = Fem; anim = Inanimate };
|
||||||
|
|
||||||
-- 2. Soft regular masculine inanimate, e.g. vichr'
|
-- 2. Soft regular masculine inanimate, e.g. vichr'
|
||||||
oper nRegSoftMasc : Str ->CommNoun= \stem ->
|
oper nRegSoftMasc : Str ->CommNoun= \stem ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg Nom => stem+"ь";
|
NF Sg Nom _ => stem+"ь";
|
||||||
NF Sg Gen => stem+"я" ;
|
NF Sg Gen _ => stem+"я" ;
|
||||||
NF Sg Dat => stem+"ю" ;
|
NF Sg Dat _ => stem+"ю" ;
|
||||||
NF Sg Acc => stem+"ь" ;
|
NF Sg Acc _ => stem+"ь" ;
|
||||||
NF Sg Inst => stem+"ем" ;
|
NF Sg Inst _ => stem+"ем" ;
|
||||||
NF Sg (Prepos _) => stem+"е" ;
|
NF Sg (Prepos _) _ => stem+"е" ;
|
||||||
NF Pl Nom => stem+"и" ;
|
NF Pl Nom _ => stem+"и" ;
|
||||||
NF Pl Gen => stem+"ей" ;
|
NF Pl Gen _ => stem+"ей" ;
|
||||||
NF Pl Dat => stem+"ям" ;
|
NF Pl Dat _ => stem+"ям" ;
|
||||||
NF Pl Acc => stem+"и" ;
|
NF Pl Acc _ => stem+"и" ;
|
||||||
NF Pl Inst => stem+"ями" ;
|
NF Pl Inst _ => stem+"ями" ;
|
||||||
NF Pl (Prepos _) => stem+"ях" };
|
NF Pl (Prepos _) _ => stem+"ях" };
|
||||||
g = Masc; anim = Inanimate };
|
g = Masc; anim = Inanimate };
|
||||||
|
|
||||||
-- 2. Soft regular neuter inanimate, e.g. more
|
-- 2. Soft regular neuter inanimate, e.g. more
|
||||||
oper nRegSoftNeut : Str ->CommNoun= \stem ->
|
oper nRegSoftNeut : Str ->CommNoun= \stem ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg Nom => stem+"е";
|
NF Sg Nom _ => stem+"е";
|
||||||
NF Sg Gen => stem+"я" ;
|
NF Sg Gen _ => stem+"я" ;
|
||||||
NF Sg Dat => stem+"ю" ;
|
NF Sg Dat _ => stem+"ю" ;
|
||||||
NF Sg Acc => stem+"е" ;
|
NF Sg Acc _ => stem+"е" ;
|
||||||
NF Sg Inst => stem+"ем" ;
|
NF Sg Inst _ => stem+"ем" ;
|
||||||
NF Sg (Prepos _) => stem+"е" ;
|
NF Sg (Prepos _) _ => stem+"е" ;
|
||||||
NF Pl Nom => stem+"я" ;
|
NF Pl Nom _ => stem+"я" ;
|
||||||
NF Pl Gen => stem+"ей" ;
|
NF Pl Gen _ => stem+"ей" ;
|
||||||
NF Pl Dat => stem+"ям" ;
|
NF Pl Dat _ => stem+"ям" ;
|
||||||
NF Pl Acc => stem+"я" ;
|
NF Pl Acc _ => stem+"я" ;
|
||||||
NF Pl Inst => stem+"ями" ;
|
NF Pl Inst _ => stem+"ями" ;
|
||||||
NF Pl (Prepos _) => stem+"ях" };
|
NF Pl (Prepos _) _ => stem+"ях" };
|
||||||
g = Neut; anim = Inanimate };
|
g = Neut; anim = Inanimate };
|
||||||
|
|
||||||
-- 2. Soft regular feminine inanimate, e.g. burya
|
-- 2. Soft regular feminine inanimate, e.g. burya
|
||||||
oper nRegSoftFem : Str ->CommNoun= \stem ->
|
oper nRegSoftFem : Str ->CommNoun= \stem ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg Nom => stem+"я";
|
NF Sg Nom _ => stem+"я";
|
||||||
NF Sg Gen => stem+"и" ;
|
NF Sg Gen _ => stem+"и" ;
|
||||||
NF Sg Dat => stem+"е" ;
|
NF Sg Dat _ => stem+"е" ;
|
||||||
NF Sg Acc => stem+"ю" ;
|
NF Sg Acc _ => stem+"ю" ;
|
||||||
NF Sg Inst => stem+"ей" ;
|
NF Sg Inst _ => stem+"ей" ;
|
||||||
NF Sg (Prepos _) => stem+"е" ;
|
NF Sg (Prepos _) _ => stem+"е" ;
|
||||||
NF Pl Nom => stem+"и" ;
|
NF Pl Nom _ => stem+"и" ;
|
||||||
NF Pl Gen => stem+"ь" ;
|
NF Pl Gen _ => stem+"ь" ;
|
||||||
NF Pl Dat => stem+"ям" ;
|
NF Pl Dat _ => stem+"ям" ;
|
||||||
NF Pl Acc => stem+"и" ;
|
NF Pl Acc _ => stem+"и" ;
|
||||||
NF Pl Inst => stem+"ями" ;
|
NF Pl Inst _ => stem+"ями" ;
|
||||||
NF Pl (Prepos _) => stem+"ях" };
|
NF Pl (Prepos _) _ => stem+"ях" };
|
||||||
g = Fem; anim = Inanimate };
|
g = Fem; anim = Inanimate };
|
||||||
|
|
||||||
-- 6. Masc ending in -Vй (V = vowel)
|
-- 6. Masc ending in -Vй (V = vowel)
|
||||||
oper nDecl6Masc : Str ->CommNoun= \stem ->
|
oper nDecl6Masc : Str ->CommNoun= \stem ->
|
||||||
let n = nRegSoftMasc stem in
|
let n = nRegSoftMasc stem in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg (Nom|Acc) => stem+"й";
|
NF Sg (Nom|Acc) _ => stem+"й";
|
||||||
NF Pl Gen => stem+"ев" ;
|
NF Pl Gen _ => stem+"ев" ;
|
||||||
sf => n.s!sf };
|
sf => n.s!sf };
|
||||||
g = n.g; anim = n.anim };
|
g = n.g; anim = n.anim };
|
||||||
|
|
||||||
@@ -467,7 +467,7 @@ Paradigms:
|
|||||||
oper nDecl6Neut : Str ->CommNoun= \stem ->
|
oper nDecl6Neut : Str ->CommNoun= \stem ->
|
||||||
let n = nRegSoftNeut stem in
|
let n = nRegSoftNeut stem in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Pl Gen => stem+"й" ;
|
NF Pl Gen _ => stem+"й" ;
|
||||||
sf => n.s!sf };
|
sf => n.s!sf };
|
||||||
g = n.g; anim = n.anim };
|
g = n.g; anim = n.anim };
|
||||||
|
|
||||||
@@ -475,7 +475,7 @@ Paradigms:
|
|||||||
oper nDecl6Fem : Str ->CommNoun= \stem ->
|
oper nDecl6Fem : Str ->CommNoun= \stem ->
|
||||||
let n = nRegSoftFem stem in
|
let n = nRegSoftFem stem in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Pl Gen => stem+"й" ;
|
NF Pl Gen _ => stem+"й" ;
|
||||||
sf => n.s!sf };
|
sf => n.s!sf };
|
||||||
g = n.g; anim = n.anim };
|
g = n.g; anim = n.anim };
|
||||||
|
|
||||||
@@ -483,7 +483,7 @@ Paradigms:
|
|||||||
oper nDecl7Masc : Str ->CommNoun= \stem ->
|
oper nDecl7Masc : Str ->CommNoun= \stem ->
|
||||||
let n = nDecl6Masc stem in
|
let n = nDecl6Masc stem in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg (Prepos _) => stem+"и" ;
|
NF Sg (Prepos _) _ => stem+"и" ;
|
||||||
sf => n.s!sf };
|
sf => n.s!sf };
|
||||||
g = n.g; anim = n.anim };
|
g = n.g; anim = n.anim };
|
||||||
|
|
||||||
@@ -491,7 +491,7 @@ Paradigms:
|
|||||||
oper nDecl7Neut : Str ->CommNoun= \stem ->
|
oper nDecl7Neut : Str ->CommNoun= \stem ->
|
||||||
let n = nDecl6Neut stem in
|
let n = nDecl6Neut stem in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg (Prepos _) => stem+"и" ;
|
NF Sg (Prepos _) _ => stem+"и" ;
|
||||||
sf => n.s!sf };
|
sf => n.s!sf };
|
||||||
g = n.g; anim = n.anim };
|
g = n.g; anim = n.anim };
|
||||||
|
|
||||||
@@ -499,7 +499,7 @@ Paradigms:
|
|||||||
oper nDecl7Fem : Str ->CommNoun= \stem ->
|
oper nDecl7Fem : Str ->CommNoun= \stem ->
|
||||||
let n = nDecl6Fem stem in
|
let n = nDecl6Fem stem in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg (Dat|Prepos _) => stem+"и" ;
|
NF Sg (Dat|Prepos _) _ => stem+"и" ;
|
||||||
sf => n.s!sf };
|
sf => n.s!sf };
|
||||||
g = n.g; anim = n.anim };
|
g = n.g; anim = n.anim };
|
||||||
|
|
||||||
@@ -508,35 +508,35 @@ Paradigms:
|
|||||||
oper nDecl8 : Str ->CommNoun= \stem ->
|
oper nDecl8 : Str ->CommNoun= \stem ->
|
||||||
let a : Str = case stem of { _+("ч"|"щ"|"ш"|"ж") => "а"; _ => "я" } in
|
let a : Str = case stem of { _+("ч"|"щ"|"ш"|"ж") => "а"; _ => "я" } in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg Nom => stem+"ь";
|
NF Sg Nom _ => stem+"ь";
|
||||||
NF Sg Gen => stem+"и" ;
|
NF Sg Gen _ => stem+"и" ;
|
||||||
NF Sg Dat => stem+"и" ;
|
NF Sg Dat _ => stem+"и" ;
|
||||||
NF Sg Acc => stem+"ь" ;
|
NF Sg Acc _ => stem+"ь" ;
|
||||||
NF Sg Inst => stem+"ью" ;
|
NF Sg Inst _ => stem+"ью" ;
|
||||||
NF Sg (Prepos _) => stem+"и" ;
|
NF Sg (Prepos _) _ => stem+"и" ;
|
||||||
NF Pl Nom => stem+"и" ;
|
NF Pl Nom _ => stem+"и" ;
|
||||||
NF Pl Gen => stem+"ей" ;
|
NF Pl Gen _ => stem+"ей" ;
|
||||||
NF Pl Dat => stem+a+"м" ;
|
NF Pl Dat _ => stem+a+"м" ;
|
||||||
NF Pl Acc => stem+"и" ;
|
NF Pl Acc _ => stem+"и" ;
|
||||||
NF Pl Inst => stem+a+"ми" ;
|
NF Pl Inst _ => stem+a+"ми" ;
|
||||||
NF Pl (Prepos _) => stem+a+"х" };
|
NF Pl (Prepos _) _ => stem+a+"х" };
|
||||||
g = Fem; anim = Inanimate };
|
g = Fem; anim = Inanimate };
|
||||||
|
|
||||||
-- 9. Neut ending in -мя
|
-- 9. Neut ending in -мя
|
||||||
oper nDecl9 : Str ->CommNoun= \stem ->
|
oper nDecl9 : Str ->CommNoun= \stem ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg Nom => stem+"мя";
|
NF Sg Nom _ => stem+"мя";
|
||||||
NF Sg Gen => stem+"мени" ;
|
NF Sg Gen _ => stem+"мени" ;
|
||||||
NF Sg Dat => stem+"мени" ;
|
NF Sg Dat _ => stem+"мени" ;
|
||||||
NF Sg Acc => stem+"мя" ;
|
NF Sg Acc _ => stem+"мя" ;
|
||||||
NF Sg Inst => stem+"менем" ;
|
NF Sg Inst _ => stem+"менем" ;
|
||||||
NF Sg (Prepos _) => stem+"мени" ;
|
NF Sg (Prepos _) _ => stem+"мени" ;
|
||||||
NF Pl Nom => stem+"мена" ;
|
NF Pl Nom _ => stem+"мена" ;
|
||||||
NF Pl Gen => stem+"мён" ;
|
NF Pl Gen _ => stem+"мён" ;
|
||||||
NF Pl Dat => stem+"менам" ;
|
NF Pl Dat _ => stem+"менам" ;
|
||||||
NF Pl Acc => stem+"мена" ;
|
NF Pl Acc _ => stem+"мена" ;
|
||||||
NF Pl Inst => stem+"менами" ;
|
NF Pl Inst _ => stem+"менами" ;
|
||||||
NF Pl (Prepos _) => stem+"менах" };
|
NF Pl (Prepos _) _ => stem+"менах" };
|
||||||
g = Fem; anim = Inanimate };
|
g = Fem; anim = Inanimate };
|
||||||
|
|
||||||
-- 10. Masc in -oнoк
|
-- 10. Masc in -oнoк
|
||||||
@@ -551,8 +551,8 @@ Paradigms:
|
|||||||
|
|
||||||
oper nSplitSgPl : CommNoun -> CommNoun -> CommNoun = \x, y ->
|
oper nSplitSgPl : CommNoun -> CommNoun -> CommNoun = \x, y ->
|
||||||
{s = table {
|
{s = table {
|
||||||
NF Sg c => x.s!(NF Sg c) ;
|
NF Sg c size => x.s!(NF Sg c size) ;
|
||||||
NF Pl c => y.s!(NF Pl c)
|
NF Pl c size => y.s!(NF Pl c size)
|
||||||
} ;
|
} ;
|
||||||
g = x.g ; anim = y.anim
|
g = x.g ; anim = y.anim
|
||||||
} ;
|
} ;
|
||||||
@@ -560,18 +560,18 @@ 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 (GSg g) ;
|
NF Sg c _ => a.s!AF c Inanimate (GSg g) ;
|
||||||
NF Pl c => a.s!AF c Inanimate GPl };
|
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.
|
||||||
oper nAnimate : CommNoun -> CommNoun = \n ->
|
oper nAnimate : CommNoun -> CommNoun = \n ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg Acc => case n.g of {
|
NF Sg Acc size => case n.g of {
|
||||||
Masc => n.s!(NF Sg Gen);
|
Masc => n.s!(NF Sg Gen size);
|
||||||
_ => n.s!(NF Sg Acc)
|
_ => n.s!(NF Sg Acc size)
|
||||||
};
|
};
|
||||||
NF Pl Acc => n.s!(NF Pl Gen);
|
NF Pl Acc size => n.s!(NF Pl Gen size);
|
||||||
sf => n.s!sf } ;
|
sf => n.s!sf } ;
|
||||||
g = n.g ;
|
g = n.g ;
|
||||||
anim = Animate
|
anim = Animate
|
||||||
@@ -582,90 +582,90 @@ oper
|
|||||||
|
|
||||||
oper nullEndInAnimateDeclStul: Str -> CommNoun = \brat ->
|
oper nullEndInAnimateDeclStul: Str -> CommNoun = \brat ->
|
||||||
{s = table
|
{s = table
|
||||||
{ NF Sg Nom => brat ;
|
{ NF Sg Nom _ => brat ;
|
||||||
NF Sg Gen => brat+"а" ;
|
NF Sg Gen _ => brat+"а" ;
|
||||||
NF Sg Dat => brat+"у" ;
|
NF Sg Dat _ => brat+"у" ;
|
||||||
NF Sg Acc => brat +"а";
|
NF Sg Acc _ => brat +"а";
|
||||||
NF Sg Inst => brat+"ом" ;
|
NF Sg Inst _ => brat+"ом" ;
|
||||||
NF Sg (Prepos _) => brat+"е" ;
|
NF Sg (Prepos _) _ => brat+"е" ;
|
||||||
NF Pl Nom => brat+"ья" ;
|
NF Pl Nom _ => brat+"ья" ;
|
||||||
NF Pl Gen => brat+"ьев" ;
|
NF Pl Gen _ => brat+"ьев" ;
|
||||||
NF Pl Dat => brat+"ьям" ;
|
NF Pl Dat _ => brat+"ьям" ;
|
||||||
NF Pl Acc => brat +"ьев";
|
NF Pl Acc _ => brat +"ьев";
|
||||||
NF Pl Inst => brat+"ьями" ;
|
NF Pl Inst _ => brat+"ьями" ;
|
||||||
NF Pl (Prepos _) => brat+"ьяах"
|
NF Pl (Prepos _) _ => brat+"ьяах"
|
||||||
} ;
|
} ;
|
||||||
g = Masc ; anim = Inanimate
|
g = Masc ; anim = Inanimate
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper nullEndAnimateDeclBrat: Str -> CommNoun = \brat ->
|
oper nullEndAnimateDeclBrat: Str -> CommNoun = \brat ->
|
||||||
{s = table
|
{s = table
|
||||||
{ NF Sg Nom => brat ;
|
{ NF Sg Nom _ => brat ;
|
||||||
NF Sg Gen => brat+"а" ;
|
NF Sg Gen _ => brat+"а" ;
|
||||||
NF Sg Dat => brat+"у" ;
|
NF Sg Dat _ => brat+"у" ;
|
||||||
NF Sg Acc => brat +"а";
|
NF Sg Acc _ => brat +"а";
|
||||||
NF Sg Inst => brat+"ом" ;
|
NF Sg Inst _ => brat+"ом" ;
|
||||||
NF Sg (Prepos _) => brat+"е" ;
|
NF Sg (Prepos _) _ => brat+"е" ;
|
||||||
NF Pl Nom => brat+"ья" ;
|
NF Pl Nom _ => brat+"ья" ;
|
||||||
NF Pl Gen => brat+"ьев" ;
|
NF Pl Gen _ => brat+"ьев" ;
|
||||||
NF Pl Dat => brat+"ьям" ;
|
NF Pl Dat _ => brat+"ьям" ;
|
||||||
NF Pl Acc => brat +"ьев";
|
NF Pl Acc _ => brat +"ьев";
|
||||||
NF Pl Inst => brat+"ьями" ;
|
NF Pl Inst _ => brat+"ьями" ;
|
||||||
NF Pl (Prepos _) => brat+"ьяах"
|
NF Pl (Prepos _) _ => brat+"ьяах"
|
||||||
} ;
|
} ;
|
||||||
g = Masc ; anim = Animate
|
g = Masc ; anim = Animate
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper irregPl_StemInAnimateDecl: Str -> CommNoun = \derev ->
|
oper irregPl_StemInAnimateDecl: Str -> CommNoun = \derev ->
|
||||||
{ s = table
|
{ s = table
|
||||||
{ NF Sg Nom => derev+"о" ;
|
{ NF Sg Nom _ => derev+"о" ;
|
||||||
NF Sg Gen => derev+"а" ;
|
NF Sg Gen _ => derev+"а" ;
|
||||||
NF Sg Dat => derev+"у" ;
|
NF Sg Dat _ => derev+"у" ;
|
||||||
NF Sg Acc => derev +"о";
|
NF Sg Acc _ => derev +"о";
|
||||||
NF Sg Inst => derev+"ом" ;
|
NF Sg Inst _ => derev+"ом" ;
|
||||||
NF Sg (Prepos _) => derev+"е" ;
|
NF Sg (Prepos _) _ => derev+"е" ;
|
||||||
NF Pl Nom => derev+"ья" ;
|
NF Pl Nom _ => derev+"ья" ;
|
||||||
NF Pl Gen => derev+"ьев" ;
|
NF Pl Gen _ => derev+"ьев" ;
|
||||||
NF Pl Dat => derev+"ьям" ;
|
NF Pl Dat _ => derev+"ьям" ;
|
||||||
NF Pl Acc => derev +"ья" ;
|
NF Pl Acc _ => derev +"ья" ;
|
||||||
NF Pl Inst => derev+"ьями" ;
|
NF Pl Inst _ => derev+"ьями" ;
|
||||||
NF Pl (Prepos _) => derev+"ьяах"
|
NF Pl (Prepos _) _ => derev+"ьяах"
|
||||||
} ;
|
} ;
|
||||||
g = Masc ; anim = Inanimate
|
g = Masc ; anim = Inanimate
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper kg_oEnd_SgDecl: Str -> CommNoun = \mnog ->
|
oper kg_oEnd_SgDecl: Str -> CommNoun = \mnog ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF _ Nom => mnog+"о" ;
|
NF _ Nom _ => mnog+"о" ;
|
||||||
NF _ Gen => mnog +"их";
|
NF _ Gen _ => mnog +"их";
|
||||||
NF _ Dat => mnog+"им" ;
|
NF _ Dat _ => mnog+"им" ;
|
||||||
NF _ Acc => mnog+"о" ;
|
NF _ Acc _ => mnog+"о" ;
|
||||||
NF _ Inst => mnog+"ими" ;
|
NF _ Inst _ => mnog+"ими" ;
|
||||||
NF _ (Prepos _) => mnog+"их"
|
NF _ (Prepos _) _ => mnog+"их"
|
||||||
} ;
|
} ;
|
||||||
g = Neut ; anim = Inanimate
|
g = Neut ; anim = Inanimate
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper oEnd_PlDecl: Str -> CommNoun = \menshinstv ->
|
oper oEnd_PlDecl: Str -> CommNoun = \menshinstv ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF _ Nom => menshinstv+"а" ;
|
NF _ Nom _ => menshinstv+"а" ;
|
||||||
NF _ Gen => menshinstv;
|
NF _ Gen _ => menshinstv;
|
||||||
NF _ Dat => menshinstv+"ам" ;
|
NF _ Dat _ => menshinstv+"ам" ;
|
||||||
NF _ Acc => menshinstv+"ва" ;
|
NF _ Acc _ => menshinstv+"ва" ;
|
||||||
NF _ Inst => menshinstv+"ами" ;
|
NF _ Inst _ => menshinstv+"ами" ;
|
||||||
NF _ (Prepos _) => menshinstv+"вах"
|
NF _ (Prepos _) _ => menshinstv+"вах"
|
||||||
} ;
|
} ;
|
||||||
g = Neut ; anim = Inanimate
|
g = Neut ; anim = Inanimate
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper oEnd_SgDecl: Str -> CommNoun = \bolshinstv ->
|
oper oEnd_SgDecl: Str -> CommNoun = \bolshinstv ->
|
||||||
{s = table {
|
{s = table {
|
||||||
NF _ Nom => bolshinstv+"о" ;
|
NF _ Nom _ => bolshinstv+"о" ;
|
||||||
NF _ Gen => bolshinstv+"а" ;
|
NF _ Gen _ => bolshinstv+"а" ;
|
||||||
NF _ Dat => bolshinstv+"у" ;
|
NF _ Dat _ => bolshinstv+"у" ;
|
||||||
NF _ Acc => bolshinstv+"о" ;
|
NF _ Acc _ => bolshinstv+"о" ;
|
||||||
NF _ Inst => bolshinstv+"ом" ;
|
NF _ Inst _ => bolshinstv+"ом" ;
|
||||||
NF _ (Prepos _) => bolshinstv+"е"
|
NF _ (Prepos _) _ => bolshinstv+"е"
|
||||||
} ;
|
} ;
|
||||||
g = Neut ; anim = Inanimate
|
g = Neut ; anim = Inanimate
|
||||||
} ;
|
} ;
|
||||||
@@ -677,18 +677,18 @@ oper oEnd_SgDecl: Str -> CommNoun = \bolshinstv ->
|
|||||||
|
|
||||||
oper eEnd_Decl: Str -> CommNoun = \vs ->
|
oper eEnd_Decl: Str -> CommNoun = \vs ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
NF Sg Nom => vs+"е" ;
|
NF Sg Nom _ => vs+"е" ;
|
||||||
NF Sg Gen => vs+"ех" ;
|
NF Sg Gen _ => vs+"ех" ;
|
||||||
NF Sg Dat => vs+"ем" ;
|
NF Sg Dat _ => vs+"ем" ;
|
||||||
NF Sg Acc => vs+"ех" ;
|
NF Sg Acc _ => vs+"ех" ;
|
||||||
NF Sg Inst => vs+"еми" ;
|
NF Sg Inst _ => vs+"еми" ;
|
||||||
NF Sg (Prepos _) => vs+"ех" ;
|
NF Sg (Prepos _) _ => vs+"ех" ;
|
||||||
NF Pl Nom => vs+"е" ;
|
NF Pl Nom _ => vs+"е" ;
|
||||||
NF Pl Gen => vs +"ех";
|
NF Pl Gen _ => vs +"ех";
|
||||||
NF Pl Dat => vs+"ем" ;
|
NF Pl Dat _ => vs+"ем" ;
|
||||||
NF Pl Acc => vs+ "ех" ;
|
NF Pl Acc _ => vs+ "ех" ;
|
||||||
NF Pl Inst => vs+"еми" ;
|
NF Pl Inst _ => vs+"еми" ;
|
||||||
NF Pl (Prepos _) => vs+"ех"
|
NF Pl (Prepos _) _ => vs+"ех"
|
||||||
} ;
|
} ;
|
||||||
g = Neut ; anim = Inanimate
|
g = Neut ; anim = Inanimate
|
||||||
} ;
|
} ;
|
||||||
@@ -803,7 +803,7 @@ oper eEnd_Decl: Str -> CommNoun = \vs ->
|
|||||||
|
|
||||||
vseDetPl: Adjective = extAdjFromSubst (eEnd_Decl "вс") ;
|
vseDetPl: Adjective = extAdjFromSubst (eEnd_Decl "вс") ;
|
||||||
extAdjFromSubst: CommNoun -> Adjective = \ vse ->
|
extAdjFromSubst: CommNoun -> Adjective = \ vse ->
|
||||||
{s = \\af => vse.s ! NF (numAF af) (caseAF af) } ;
|
{s = \\af => vse.s ! NF (numAF af) (caseAF af) plg } ;
|
||||||
|
|
||||||
|
|
||||||
oper totDet: Adjective = {s = table {
|
oper totDet: Adjective = {s = table {
|
||||||
|
|||||||
@@ -6,23 +6,31 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
DetCN kazhduj okhotnik = {
|
DetCN kazhduj okhotnik = {
|
||||||
s = \\c => case kazhduj.q of {
|
s = \\c => case kazhduj.size of {
|
||||||
False =>
|
nom =>
|
||||||
case kazhduj.c of {
|
case kazhduj.c of {
|
||||||
Nom =>
|
Nom =>
|
||||||
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum 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) nom ;
|
||||||
_ =>
|
_ =>
|
||||||
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum 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 nom } ;
|
||||||
True =>
|
sgg =>
|
||||||
case kazhduj.c of {
|
case kazhduj.c of {
|
||||||
Nom =>
|
Nom =>
|
||||||
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g kazhduj.n) ++
|
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g kazhduj.n) ++
|
||||||
okhotnik.s ! NF kazhduj.n Gen ;
|
okhotnik.s ! NF Sg Gen sgg;
|
||||||
_ =>
|
_ =>
|
||||||
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g kazhduj.n) ++
|
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g kazhduj.n) ++
|
||||||
okhotnik.s ! NF kazhduj.n Gen }
|
okhotnik.s ! NF Pl kazhduj.c sgg } ;
|
||||||
|
plg =>
|
||||||
|
case kazhduj.c of {
|
||||||
|
Nom =>
|
||||||
|
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g kazhduj.n) ++
|
||||||
|
okhotnik.s ! NF Pl Gen plg ;
|
||||||
|
_ =>
|
||||||
|
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g kazhduj.n) ++
|
||||||
|
okhotnik.s ! NF Pl kazhduj.c plg }
|
||||||
};
|
};
|
||||||
n = kazhduj.n ;
|
n = kazhduj.n ;
|
||||||
p = P3 ;
|
p = P3 ;
|
||||||
@@ -86,8 +94,7 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
n = num.n ;
|
n = num.n ;
|
||||||
g = quant.g;
|
g = quant.g;
|
||||||
c = quant.c;
|
c = quant.c;
|
||||||
-- q = notB (isNil (num.s ! Nom ! Masc))
|
size = quant.size
|
||||||
q = False;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
DetQuant quant num = {
|
DetQuant quant num = {
|
||||||
@@ -95,8 +102,7 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
n = num.n ;
|
n = num.n ;
|
||||||
g = quant.g;
|
g = quant.g;
|
||||||
c = quant.c;
|
c = quant.c;
|
||||||
-- q = notB (isNil (num.s ! Nom ! Masc))
|
size = num.size
|
||||||
q = False;
|
|
||||||
} ;
|
} ;
|
||||||
{-
|
{-
|
||||||
DetArtOrd quant num ord = {
|
DetArtOrd quant num ord = {
|
||||||
@@ -116,7 +122,7 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
-- MassDet = {s = \\_=>[] ; c=Nom; g = PNoGen; n = Sg} ;
|
-- MassDet = {s = \\_=>[] ; c=Nom; g = PNoGen; n = Sg} ;
|
||||||
|
|
||||||
MassNP okhotnik = {
|
MassNP okhotnik = {
|
||||||
s = \\c => okhotnik.s ! NF Sg (extCase c) ;
|
s = \\c => okhotnik.s ! NF Sg (extCase c) nom ;
|
||||||
n = Sg ;
|
n = Sg ;
|
||||||
p = P3 ;
|
p = P3 ;
|
||||||
pron = False;
|
pron = False;
|
||||||
@@ -146,11 +152,11 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
anim = okhotnik.anim
|
anim = okhotnik.anim
|
||||||
} ;
|
} ;
|
||||||
-}
|
-}
|
||||||
PossPron p = {s = \\af => p.s ! mkPronForm (caseAF af) No (Poss (gennum (genAF af) (numAF af) )); c=Nom; g = PNoGen; q = False} ;
|
PossPron p = {s = \\af => p.s ! mkPronForm (caseAF af) No (Poss (gennum (genAF af) (numAF af) )); c=Nom; g = PNoGen; size = nom} ;
|
||||||
|
|
||||||
NumCard c = c ;
|
NumCard c = c ;
|
||||||
NumSg = {s = \\_,_,_ => [] ; n = Sg} ;
|
NumSg = {s = \\_,_,_ => [] ; n = Sg ; size = sgg} ;
|
||||||
NumPl = {s = \\_,_,_ => [] ; n = Pl} ;
|
NumPl = {s = \\_,_,_ => [] ; n = Pl ; size = plg} ;
|
||||||
|
|
||||||
OrdNumeral numeral = variants {} ; ---- TODO; needed to compile Constructors
|
OrdNumeral numeral = variants {} ; ---- TODO; needed to compile Constructors
|
||||||
OrdDigits numeral = variants {} ; ---- TODO; needed to compile Constructors
|
OrdDigits numeral = variants {} ; ---- TODO; needed to compile Constructors
|
||||||
@@ -158,14 +164,14 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
-- {s = \\ af => (uy_j_EndDecl (numeral.s ! caseAF af ! genAF af)).s!af} ;
|
-- {s = \\ af => (uy_j_EndDecl (numeral.s ! caseAF af ! genAF af)).s!af} ;
|
||||||
|
|
||||||
NumNumeral n = n ;
|
NumNumeral n = n ;
|
||||||
NumDigits n = {s = \\_,_,_ => n.s ; n = n.n} ;
|
NumDigits n = {s = \\_,_,_ => n.s ; n = n.n ; size = n.size } ;
|
||||||
|
|
||||||
AdNum adn num = {s = \\c,a,n => adn.s ++ num.s!c!a!n ; n = num.n} ;
|
AdNum adn num = {s = \\c,a,n => adn.s ++ num.s!c!a!n ; n = num.n ; size = num.size} ;
|
||||||
|
|
||||||
OrdSuperl a = {s = a.s!Posit};
|
OrdSuperl a = {s = a.s!Posit};
|
||||||
|
|
||||||
DefArt = {s = \\_=>[] ; c=Nom; g = PNoGen; q = False };
|
DefArt = {s = \\_=>[] ; c=Nom; g = PNoGen; size = nom };
|
||||||
IndefArt = { s = \\_=>[] ; c=Nom; g = PNoGen; q = False };
|
IndefArt = { s = \\_=>[] ; c=Nom; g = PNoGen; size = nom };
|
||||||
|
|
||||||
UseN noun = noun ;
|
UseN noun = noun ;
|
||||||
UseN2 noun = noun ;
|
UseN2 noun = noun ;
|
||||||
@@ -180,9 +186,9 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
|
|||||||
|
|
||||||
ComplN2 f x = {
|
ComplN2 f x = {
|
||||||
s = \\nf => case x.pron of {
|
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 ;
|
True => x.s ! (case nf of {NF n c size => mkPronForm c No (Poss (gennum f.g n))}) ++ f.s ! nf ;
|
||||||
False => f.s ! nf ++ f.c2.s ++
|
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))})
|
x.s ! (case nf of {NF n c size => mkPronForm f.c2.c Yes (Poss (gennum f.g n))})
|
||||||
};
|
};
|
||||||
g = f.g ;
|
g = f.g ;
|
||||||
anim = f.anim
|
anim = f.anim
|
||||||
@@ -220,7 +226,8 @@ 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 (gennum cn.g n)} ++
|
s = \\nf => ap.s ! case nf of {NF Sg Gen sgg => AF Nom cn.anim GPl ;
|
||||||
|
NF n c size => 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
|
||||||
@@ -246,14 +253,14 @@ 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 ! (gennum idea.g n)!c!idea.anim} ;
|
s = \\nf => idea.s ! nf ++ case nf of {NF n c size => x.s ! (gennum idea.g n)!c!idea.anim} ;
|
||||||
g = idea.g ;
|
g = idea.g ;
|
||||||
anim = idea.anim
|
anim = idea.anim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
---- AR 17/12/2008
|
---- AR 17/12/2008
|
||||||
ApposCN cn s = {
|
ApposCN cn s = {
|
||||||
s = \\nf => cn.s ! nf ++ s.s ! (case nf of {NF n c => PF c No NonPoss}) ;
|
s = \\nf => cn.s ! nf ++ s.s ! (case nf of {NF n c size => PF c No NonPoss}) ;
|
||||||
g = cn.g ;
|
g = cn.g ;
|
||||||
anim = cn.anim
|
anim = cn.anim
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ lincat Digit = {s : DForm => Gender => Animacy => Case => Str ; size : Size} ;
|
|||||||
lincat Sub10 = {s : Place => DForm => Gender => Animacy => Case => Str ; size : Size} ;
|
lincat Sub10 = {s : Place => DForm => Gender => Animacy => Case => Str ; size : Size} ;
|
||||||
lincat Sub100 = {s : Place => Gender => Animacy => Case => Str ; size : Size} ;
|
lincat Sub100 = {s : Place => Gender => Animacy => Case => Str ; size : Size} ;
|
||||||
lincat Sub1000 = {s : Place => Gender => Animacy => Case => Str ; size : Size} ;
|
lincat Sub1000 = {s : Place => Gender => Animacy => Case => Str ; size : Size} ;
|
||||||
lincat Sub1000000 = {s : Gender => Animacy => Case => Str} ;
|
lincat Sub1000000 = {s : Gender => Animacy => Case => Str ; size : Size} ;
|
||||||
|
|
||||||
lin num x = {s = \\ g,a,c => x.s ! g ! a ! c; n = Pl}; ---- n TODO ; Size? AR 18/12/2007
|
lin num x = {s = \\ g,a,c => x.s ! g ! a ! c; n = Pl ; size = x.size};
|
||||||
|
|
||||||
lin n2 =
|
lin n2 =
|
||||||
{s = table {unit => \\ g, a, c =>
|
{s = table {unit => \\ g, a, c =>
|
||||||
@@ -201,7 +201,7 @@ lin pot110 =
|
|||||||
lin pot111 =
|
lin pot111 =
|
||||||
{s = \\ p => nadsat "один" ; size = plg} ; --- 11
|
{s = \\ p => nadsat "один" ; size = plg} ; --- 11
|
||||||
lin pot1to19 d =
|
lin pot1to19 d =
|
||||||
{s = table {_ => d.s ! teen} ; size = plg} ;
|
{s = table {_ => d.s ! teen} ; size = d.size} ;
|
||||||
lin pot0as1 n =
|
lin pot0as1 n =
|
||||||
{s = table {p => n.s ! p ! unit} ; size = n.size} ;
|
{s = table {p => n.s ! p ! unit} ; size = n.size} ;
|
||||||
lin pot1 d =
|
lin pot1 d =
|
||||||
@@ -215,11 +215,11 @@ lin pot2 d =
|
|||||||
lin pot2plus d e =
|
lin pot2plus d e =
|
||||||
{s = \\ p, g, a, c => d.s ! p ! hund ! g ! a ! c ++ e.s ! indep ! g ! a ! c ; size = e.size} ;
|
{s = \\ p, g, a, c => d.s ! p ! hund ! g ! a ! c ++ e.s ! indep ! g ! a ! c ; size = e.size} ;
|
||||||
lin pot2as3 n =
|
lin pot2as3 n =
|
||||||
{s = n.s ! indep} ;
|
{s = n.s ! indep ; size = n.size} ;
|
||||||
lin pot3 n =
|
lin pot3 n =
|
||||||
{s = \\ g, a, c => n.s ! attr ! Fem ! a ! c ++ mille ! n.size} ;
|
{s = \\ g, a, c => n.s ! attr ! Fem ! a ! c ++ mille ! n.size ; size = n.size} ;
|
||||||
lin pot3plus n m =
|
lin pot3plus n m =
|
||||||
{s = \\ g, a, c => n.s ! attr ! Fem ! a ! c ++ mille ! n.size ++ m.s ! indep ! g ! a ! c} ;
|
{s = \\ g, a, c => n.s ! attr ! Fem ! a ! c ++ mille ! n.size ++ m.s ! indep ! g ! a ! c ; size = m.size} ;
|
||||||
|
|
||||||
--- TODO
|
--- TODO
|
||||||
--- raz/odin
|
--- raz/odin
|
||||||
@@ -230,36 +230,39 @@ lin pot3plus n m =
|
|||||||
Dig = TDigit ;
|
Dig = TDigit ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
IDig d = {s = d.s ; n = d.n} ;
|
IDig d = {s = d.s ; n = d.n ; size = d.size} ;
|
||||||
|
|
||||||
IIDig d i = {
|
IIDig d i = {
|
||||||
s = d.s ++ i.s ;
|
s = d.s ++ i.s ;
|
||||||
n = Pl
|
n = Pl ;
|
||||||
|
size = i.size
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
D_0 = mkDig "0" ;
|
D_0 = mk2Dig "0" plg ;
|
||||||
D_1 = mk3Dig "1" "1" Sg ; ----
|
D_1 = mk4Dig "1" "1" Sg nom ; ----
|
||||||
D_2 = mkDig "2" ;
|
D_2 = mk2Dig "2" sgg ;
|
||||||
D_3 = mkDig "3" ;
|
D_3 = mk2Dig "3" sgg ;
|
||||||
D_4 = mkDig "4" ;
|
D_4 = mk2Dig "4" sgg ;
|
||||||
D_5 = mkDig "5" ;
|
D_5 = mk2Dig "5" plg ;
|
||||||
D_6 = mkDig "6" ;
|
D_6 = mk2Dig "6" plg ;
|
||||||
D_7 = mkDig "7" ;
|
D_7 = mk2Dig "7" plg ;
|
||||||
D_8 = mkDig "8" ;
|
D_8 = mk2Dig "8" plg ;
|
||||||
D_9 = mkDig "9" ;
|
D_9 = mk2Dig "9" plg ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
|
mk3Dig : Str -> Str -> Size -> TDigit = \c,o,size -> mk4Dig c o Pl size ;
|
||||||
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "o") ;
|
mk2Dig : Str -> Size -> TDigit = \c,size -> mk3Dig c (c + "o") size ;
|
||||||
|
|
||||||
mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> {
|
mk4Dig : Str -> Str -> Number -> Size -> TDigit = \c,o,n,size -> {
|
||||||
s = c ; ---- gender
|
s = c ; ---- gender
|
||||||
n = n
|
n = n ;
|
||||||
|
size = size
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
TDigit = {
|
TDigit = {
|
||||||
n : Number ;
|
n : Number ;
|
||||||
s : Str
|
s : Str ;
|
||||||
|
size : Size
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ foreign = Foreign; -- +++ MG_UR: added +++
|
|||||||
|
|
||||||
mkIndeclinableNoun = \s,g, anim ->
|
mkIndeclinableNoun = \s,g, anim ->
|
||||||
{
|
{
|
||||||
s = table { NF _ _ => s } ;
|
s = table { NF _ _ _ => s } ;
|
||||||
g = g ;
|
g = g ;
|
||||||
anim = anim
|
anim = anim
|
||||||
} ** {lock_N = <>};
|
} ** {lock_N = <>};
|
||||||
@@ -296,19 +296,19 @@ foreign = Foreign; -- +++ MG_UR: added +++
|
|||||||
nomPl, genPl, datPl, accPl, instPl, preposPl, g, anim ->
|
nomPl, genPl, datPl, accPl, instPl, preposPl, g, anim ->
|
||||||
{
|
{
|
||||||
s = table {
|
s = table {
|
||||||
NF Sg Nom => nomSg ;
|
NF Sg Nom _ => nomSg ;
|
||||||
NF Sg Gen => genSg ;
|
NF Sg Gen _ => genSg ;
|
||||||
NF Sg Dat => datSg ;
|
NF Sg Dat _ => datSg ;
|
||||||
NF Sg Acc => accSg ;
|
NF Sg Acc _ => accSg ;
|
||||||
NF Sg Inst => instSg ;
|
NF Sg Inst _ => instSg ;
|
||||||
NF Sg (Prepos PrepOther) => preposSg ;
|
NF Sg (Prepos PrepOther) _ => preposSg ;
|
||||||
NF Sg (Prepos PrepVNa) => prepos2Sg ;
|
NF Sg (Prepos PrepVNa) _ => prepos2Sg ;
|
||||||
NF Pl Nom => nomPl ;
|
NF Pl Nom _ => nomPl ;
|
||||||
NF Pl Gen => genPl ;
|
NF Pl Gen _ => genPl ;
|
||||||
NF Pl Dat => datPl ;
|
NF Pl Dat _ => datPl ;
|
||||||
NF Pl Acc => accPl ;
|
NF Pl Acc _ => accPl ;
|
||||||
NF Pl Inst => instPl ;
|
NF Pl Inst _ => instPl ;
|
||||||
NF Pl (Prepos _) => preposPl
|
NF Pl (Prepos _) _ => preposPl
|
||||||
} ;
|
} ;
|
||||||
g = g ;
|
g = g ;
|
||||||
anim = anim
|
anim = anim
|
||||||
@@ -370,7 +370,7 @@ foreign = Foreign; -- +++ MG_UR: added +++
|
|||||||
} ;
|
} ;
|
||||||
Pl => mkProperNamePl ivan anim
|
Pl => mkProperNamePl ivan anim
|
||||||
} ** {lock_PN =<>};
|
} ** {lock_PN =<>};
|
||||||
nounPN n = {s=\\c => n.s! NF Sg c; anim=n.anim; g=n.g; lock_PN=<>};
|
nounPN n = {s=\\c => n.s! NF Sg c nom; anim=n.anim; g=n.g; lock_PN=<>};
|
||||||
|
|
||||||
-- On the top level, it is maybe $CN$ that is used rather than $N$, and
|
-- On the top level, it is maybe $CN$ that is used rather than $N$, and
|
||||||
-- $NP$ rather than $PN$.
|
-- $NP$ rather than $PN$.
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ concrete PhraseRus of Phrase = CatRus ** open Prelude, ResRus in {
|
|||||||
UttNP np = {s = np.s ! PF Acc No NonPoss} ;
|
UttNP np = {s = np.s ! PF Acc No NonPoss} ;
|
||||||
UttVP vp = {s = vp.s ! ClInfinit ! GSg Masc ! P3} ;
|
UttVP vp = {s = vp.s ! ClInfinit ! GSg Masc ! P3} ;
|
||||||
UttAdv adv = adv ;
|
UttAdv adv = adv ;
|
||||||
UttCN n = {s = n.s ! NF Sg Nom} ;
|
UttCN n = {s = n.s ! NF Sg Nom nom} ;
|
||||||
UttCard n = {s = n.s ! Neut ! Inanimate ! Nom} ;
|
UttCard n = {s = n.s ! Neut ! Inanimate ! Nom} ;
|
||||||
UttAP ap = {s = ap.s ! AF Nom Inanimate (GSg Neut)} ; ---- gennum ? (AR)
|
UttAP ap = {s = ap.s ! AF Nom Inanimate (GSg Neut)} ; ---- gennum ? (AR)
|
||||||
|
|
||||||
|
|||||||
@@ -36,10 +36,10 @@ concrete QuestionRus of Question = CatRus ** open ResRus, Prelude in {
|
|||||||
{s = \\pf => case kakoj.c of {
|
{s = \\pf => case kakoj.c of {
|
||||||
Nom =>
|
Nom =>
|
||||||
kakoj.s ! AF (extCase pf) okhotnik.anim (gennum 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) nom ;
|
||||||
_ =>
|
_ =>
|
||||||
kakoj.s ! AF (extCase pf) okhotnik.anim (gennum 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 plg };
|
||||||
n = kakoj.n ;
|
n = kakoj.n ;
|
||||||
p = P3 ;
|
p = P3 ;
|
||||||
pron = False;
|
pron = False;
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ param
|
|||||||
-- Anteriority = Simul | Anter ;
|
-- Anteriority = Simul | Anter ;
|
||||||
ClForm = ClIndic RusTense Anteriority | ClCondit | ClInfinit | ClImper;
|
ClForm = ClIndic RusTense Anteriority | ClCondit | ClInfinit | ClImper;
|
||||||
-- "naked infinitive" clauses
|
-- "naked infinitive" clauses
|
||||||
|
-- DetForm = NonNum | Few | Many ;
|
||||||
|
|
||||||
-- A number of Russian nouns have common gender. They can
|
-- A number of Russian nouns have common gender. They can
|
||||||
-- denote both males and females: "умница" (a clever person), "инженер" (an engineer).
|
-- denote both males and females: "умница" (a clever person), "инженер" (an engineer).
|
||||||
@@ -77,7 +78,7 @@ oper
|
|||||||
-- For the sake of shorter description these parameters are
|
-- For the sake of shorter description these parameters are
|
||||||
-- combined in the type SubstForm.
|
-- combined in the type SubstForm.
|
||||||
param
|
param
|
||||||
NForm = NF Number Case ;
|
NForm = NF Number Case Size ;
|
||||||
|
|
||||||
|
|
||||||
-- Real parameter types (i.e. ones on which words and phrases depend)
|
-- Real parameter types (i.e. ones on which words and phrases depend)
|
||||||
@@ -124,7 +125,9 @@ oper
|
|||||||
p : Person ; g: PronGen ; anim : Animacy ; pron: Bool} ;
|
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) (case n of {
|
||||||
|
Sg => nom ;
|
||||||
|
Pl => plg });
|
||||||
n = n ; g = PGen chelovek.g ; p = P3 ; pron =False ;
|
n = n ; g = PGen chelovek.g ; p = P3 ; pron =False ;
|
||||||
anim = chelovek.anim
|
anim = chelovek.anim
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ lin
|
|||||||
above_Prep = { s = "над" ; c = Inst} ;
|
above_Prep = { s = "над" ; c = Inst} ;
|
||||||
after_Prep = { s = "после" ; c = Gen };
|
after_Prep = { s = "после" ; c = Gen };
|
||||||
-- all8mass_Det = vesDet ** {n = Sg; g = PNoGen; c = Nom} ;
|
-- all8mass_Det = vesDet ** {n = Sg; g = PNoGen; c = Nom} ;
|
||||||
all_Predet = vseDetPl ** { g = PNoGen; c = Nom; q = False} ;
|
all_Predet = vseDetPl ** { g = PNoGen; c = Nom; size = nom} ;
|
||||||
almost_AdA = {s= "почти"} ;
|
almost_AdA = {s= "почти"} ;
|
||||||
almost_AdN = {s= "почти"} ;
|
almost_AdN = {s= "почти"} ;
|
||||||
although_Subj = ss "хотя" ;
|
although_Subj = ss "хотя" ;
|
||||||
@@ -33,11 +33,11 @@ lin
|
|||||||
during_Prep = { s = ["в течение"] ; c = Gen};
|
during_Prep = { s = ["в течение"] ; c = Gen};
|
||||||
either7or_DConj = sd2 "либо" [", либо"] ** {n = Sg} ;
|
either7or_DConj = sd2 "либо" [", либо"] ** {n = Sg} ;
|
||||||
-- comma is not visible in GUI!
|
-- comma is not visible in GUI!
|
||||||
every_Det = kazhdujDet ** {n = Sg ; g = PNoGen; c= Nom; q = False} ;
|
every_Det = kazhdujDet ** {n = Sg ; g = PNoGen; c= Nom; size = nom} ;
|
||||||
everybody_NP = mkNP Pl (UseN ((eEnd_Decl "вс")**{lock_N=<>})) ;
|
everybody_NP = mkNP Pl (UseN ((eEnd_Decl "вс")**{lock_N=<>})) ;
|
||||||
everything_NP = UsePron (pronVseInanimate ** {lock_Pron=<>}) ;
|
everything_NP = UsePron (pronVseInanimate ** {lock_Pron=<>}) ;
|
||||||
everywhere_Adv = ss "везде" ;
|
everywhere_Adv = ss "везде" ;
|
||||||
few_Det = nemnogoSgDet **{lock_Det= <>; n= Sg; g = PNoGen; c = Nom; q = True};
|
few_Det = nemnogoSgDet **{lock_Det= <>; n= Sg; g = PNoGen; c = Nom; size = plg};
|
||||||
--- DEPREC first_Ord = (uy_j_EndDecl "перв" ) ** {lock_A = <>}; --AStaruyj
|
--- DEPREC first_Ord = (uy_j_EndDecl "перв" ) ** {lock_A = <>}; --AStaruyj
|
||||||
for_Prep = { s = "для" ; c = Gen };
|
for_Prep = { s = "для" ; c = Gen };
|
||||||
from_Prep = { s = "от" ; c = Gen };
|
from_Prep = { s = "от" ; c = Gen };
|
||||||
@@ -54,19 +54,19 @@ lin
|
|||||||
in_Prep = { s = "в" ; c = Prepos PrepVNa } ;
|
in_Prep = { s = "в" ; c = Prepos PrepVNa } ;
|
||||||
it_Pron = pronOno ;
|
it_Pron = pronOno ;
|
||||||
less_CAdv = {s="менее"; p=""} ;
|
less_CAdv = {s="менее"; p=""} ;
|
||||||
many_Det = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen; q = True} ;
|
many_Det = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen; size = plg} ;
|
||||||
more_CAdv = {s="более"; p=""} ;
|
more_CAdv = {s="более"; p=""} ;
|
||||||
most_Predet = bolshinstvoSgDet ** {n = Sg; g = (PGen Neut); c= Gen; q = True} ;
|
most_Predet = bolshinstvoSgDet ** {n = Sg; g = (PGen Neut); c= Gen; size = plg} ;
|
||||||
-- inanimate, Sg: "большинство телефонов безмолству-ет"
|
-- inanimate, Sg: "большинство телефонов безмолству-ет"
|
||||||
-- most8many_Det = bolshinstvoPlDet ** {n = Pl; g = (PGen Neut); c= Gen} ;
|
-- most8many_Det = bolshinstvoPlDet ** {n = Pl; g = (PGen Neut); c= Gen} ;
|
||||||
-- animate, Pl: "большинство учащихся хорошо подготовлен-ы"
|
-- animate, Pl: "большинство учащихся хорошо подготовлен-ы"
|
||||||
much_Det = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen; q = True} ; -- same as previous
|
much_Det = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen; size = plg} ; -- same as previous
|
||||||
must_VV = verbDolzhen ;
|
must_VV = verbDolzhen ;
|
||||||
no_Utt = ss ["Нет"] ;
|
no_Utt = ss ["Нет"] ;
|
||||||
on_Prep = { s = "на" ; c = Prepos PrepVNa };
|
on_Prep = { s = "на" ; c = Prepos PrepVNa };
|
||||||
--- DEPREC one_Quant = odinDet ** {lock_QuantSg = <>; n= Sg; g = PNoGen; c = Nom };
|
--- DEPREC one_Quant = odinDet ** {lock_QuantSg = <>; n= Sg; g = PNoGen; c = Nom };
|
||||||
--AStaruyj :
|
--AStaruyj :
|
||||||
only_Predet = (uy_j_EndDecl "единственн" ) ** {lock_Predet = <>; n= Sg; g = PNoGen; c = Nom; q = False };
|
only_Predet = (uy_j_EndDecl "единственн" ) ** {lock_Predet = <>; n= Sg; g = PNoGen; c = Nom; size = nom };
|
||||||
or_Conj = {s1= [] ; s2 = "или" ; n = Sg} ;
|
or_Conj = {s1= [] ; s2 = "или" ; n = Sg} ;
|
||||||
otherwise_PConj = ss "иначе" ;
|
otherwise_PConj = ss "иначе" ;
|
||||||
part_Prep = { s = "" ; c = Nom}; -- missing in Russian
|
part_Prep = { s = "" ; c = Nom}; -- missing in Russian
|
||||||
@@ -76,17 +76,17 @@ lin
|
|||||||
she_Pron = pronOna ;
|
she_Pron = pronOna ;
|
||||||
so_AdA = ss "так";
|
so_AdA = ss "так";
|
||||||
somebody_NP = UsePron (pronKtoTo** {lock_Pron = <>});
|
somebody_NP = UsePron (pronKtoTo** {lock_Pron = <>});
|
||||||
someSg_Det = nekotorujDet ** {n = Sg; g = PNoGen; c= Nom; q = False} ;
|
someSg_Det = nekotorujDet ** {n = Sg; g = PNoGen; c= Nom; size = nom} ;
|
||||||
somePl_Det = nekotorujDet ** {n = Pl; g = PNoGen; c= Nom; q = False} ;
|
somePl_Det = nekotorujDet ** {n = Pl; g = PNoGen; c= Nom; size = nom} ;
|
||||||
something_NP = UsePron (pronChtoTo** {lock_Pron=<> }) ;
|
something_NP = UsePron (pronChtoTo** {lock_Pron=<> }) ;
|
||||||
somewhere_Adv = ss "где-нибудь" ;
|
somewhere_Adv = ss "где-нибудь" ;
|
||||||
that_Quant = totDet ** {n = Sg; g = PNoGen; c= Nom; q = False} ;
|
that_Quant = totDet ** {n = Sg; g = PNoGen; c= Nom; size = nom} ;
|
||||||
there_Adv = ss "там" ;
|
there_Adv = ss "там" ;
|
||||||
there7to_Adv = ss "туда" ;
|
there7to_Adv = ss "туда" ;
|
||||||
there7from_Adv = ss "оттуда" ;
|
there7from_Adv = ss "оттуда" ;
|
||||||
therefore_PConj = ss "следовательно" ;
|
therefore_PConj = ss "следовательно" ;
|
||||||
they_Pron = pronOni;
|
they_Pron = pronOni;
|
||||||
this_Quant = etotDet ** {n = Sg; g = PNoGen; c= Nom; q = False} ;
|
this_Quant = etotDet ** {n = Sg; g = PNoGen; c= Nom; size = nom} ;
|
||||||
through_Prep = { s = "через" ; c = Acc };
|
through_Prep = { s = "через" ; c = Acc };
|
||||||
to_Prep = { s = "к" ; c = Dat };
|
to_Prep = { s = "к" ; c = Dat };
|
||||||
too_AdA = ss "слишком" ;
|
too_AdA = ss "слишком" ;
|
||||||
|
|||||||
@@ -9,21 +9,21 @@ lin
|
|||||||
FloatPN i = {s = table {_ => i.s} ; g = Neut; anim = Inanimate } ;
|
FloatPN i = {s = table {_ => i.s} ; g = Neut; anim = Inanimate } ;
|
||||||
NumPN n = {s = table {_ => n.s ! Neut ! Inanimate ! Nom} ; g = Neut; anim = Inanimate } ;
|
NumPN n = {s = table {_ => n.s ! Neut ! Inanimate ! Nom} ; g = Neut; anim = Inanimate } ;
|
||||||
|
|
||||||
CNIntNP cn i = {s = \\cas => cn.s ! NF Sg (extCase cas) ++ i.s;
|
CNIntNP cn i = {s = \\cas => cn.s ! NF Sg (extCase cas) nom ++ i.s;
|
||||||
n = Sg ; p = P3 ;
|
n = Sg ; p = P3 ;
|
||||||
g = PGen cn.g ; anim = cn.anim ; pron = False } ;
|
g = PGen cn.g ; anim = cn.anim ; pron = False } ;
|
||||||
CNNumNP cn n = {s = \\cas => cn.s ! NF Sg (extCase cas)
|
CNNumNP cn n = {s = \\cas => cn.s ! NF Sg (extCase cas) nom
|
||||||
++ n.s ! cn.g ! cn. anim ! (extCase cas) ;
|
++ n.s ! cn.g ! cn. anim ! (extCase cas) ;
|
||||||
n = Sg ; p = P3 ;
|
n = Sg ; p = P3 ;
|
||||||
g = PGen cn.g ; anim = cn.anim ; pron = False } ;
|
g = PGen cn.g ; anim = cn.anim ; pron = False } ;
|
||||||
|
|
||||||
CNSymbNP d cn ss = {s = \\cas => cn.s ! NF Sg (extCase cas);
|
CNSymbNP d cn ss = {s = \\cas => cn.s ! NF Sg (extCase cas) nom;
|
||||||
n = Sg ; p = P3 ;
|
n = Sg ; p = P3 ;
|
||||||
g = PGen cn.g ; anim = cn.anim ; pron = False } ;
|
g = PGen cn.g ; anim = cn.anim ; pron = False } ;
|
||||||
|
|
||||||
SymbS sy = sy ;
|
SymbS sy = sy ;
|
||||||
|
|
||||||
SymbNum sy = { s = \\_,_,_=>sy.s; n=Pl };
|
SymbNum sy = { s = \\_,_,_=>sy.s; n=Pl ; size = plg };
|
||||||
|
|
||||||
SymbOrd sy = { s = \\af => sy.s } ;
|
SymbOrd sy = { s = \\af => sy.s } ;
|
||||||
|
|
||||||
|
|||||||
@@ -87,19 +87,19 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
|
|||||||
CompCN zloj ={
|
CompCN zloj ={
|
||||||
s= \\clf,gn,p =>
|
s= \\clf,gn,p =>
|
||||||
let num = numGenNum gn ;
|
let num = numGenNum gn ;
|
||||||
zlojsg = zloj.s ! NF Sg Nom ;
|
zlojsg = zloj.s ! NF Sg Nom nom ;
|
||||||
zlojpl = zloj.s ! NF Pl Nom
|
zlojpl = zloj.s ! NF Pl Nom plg
|
||||||
in
|
in
|
||||||
case clf of {
|
case clf of {
|
||||||
-- person is ignored !
|
-- person is ignored !
|
||||||
ClInfinit => "быть" ++ zloj.s ! NF Sg Inst ;
|
ClInfinit => "быть" ++ zloj.s ! NF Sg Inst nom ;
|
||||||
ClImper => case gn of
|
ClImper => case gn of
|
||||||
{ (GSg _) => "будь" ++ zloj.s ! NF Sg Inst ;
|
{ (GSg _) => "будь" ++ zloj.s ! NF Sg Inst plg ;
|
||||||
GPl => "будьте" ++ zloj.s ! NF Pl Inst
|
GPl => "будьте" ++ zloj.s ! NF Pl Inst plg
|
||||||
};
|
};
|
||||||
-- 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 ! NF num Nom ;
|
ClIndic Present _ => zloj.s ! NF num Nom nom ;
|
||||||
ClIndic PastRus _ => case gn of
|
ClIndic PastRus _ => case gn of
|
||||||
{ (GSg Fem) => "была" ++ zlojsg ;
|
{ (GSg Fem) => "была" ++ zlojsg ;
|
||||||
(GSg Masc) => "был" ++ zlojsg ;
|
(GSg Masc) => "был" ++ zlojsg ;
|
||||||
|
|||||||
Reference in New Issue
Block a user