forked from GitHub/gf-core
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.
138 lines
6.0 KiB
Plaintext
138 lines
6.0 KiB
Plaintext
--# -path=.:../abstract:../common:../../prelude
|
||
|
||
concrete StructuralRus of Structural = CatRus **
|
||
open ResRus, MorphoRus, (P = ParadigmsRus), Prelude, NounRus in {
|
||
|
||
flags optimize=all ; coding=utf8 ;
|
||
|
||
lin
|
||
-- First mount the numerals.
|
||
-- UseNumeral i = i ;
|
||
|
||
-- Then an alphabetical list of structural words
|
||
|
||
above_Prep = { s = "над" ; c = Inst} ;
|
||
after_Prep = { s = "после" ; c = Gen };
|
||
-- all8mass_Det = vesDet ** {n = Sg; g = PNoGen; c = Nom} ;
|
||
all_Predet = vseDetPl ** { g = PNoGen; c = Nom; size = nom} ;
|
||
almost_AdA = {s= "почти"} ;
|
||
almost_AdN = {s= "почти"} ;
|
||
although_Subj = ss "хотя" ;
|
||
always_AdV = ss "всегда" ;
|
||
and_Conj = {s1 = [] ; s2 = "и" ; n = Pl} ;
|
||
because_Subj = ss ["потому что"] ;
|
||
before_Prep ={ s = "перед" ; c = Inst};
|
||
behind_Prep = { s = "за" ; c = Inst };
|
||
between_Prep = { s = "между" ; c = Inst};
|
||
both7and_DConj = sd2 "как" [", так и"] ** {n = Pl} ;
|
||
but_PConj = ss "но" ;
|
||
by8agent_Prep = { s = ["с помощью"] ; c = Gen};
|
||
by8means_Prep = { s = ["с помощью"] ; c = Gen};
|
||
can8know_VV = verbMoch ;
|
||
can_VV = verbMoch ;
|
||
during_Prep = { s = ["в течение"] ; c = Gen};
|
||
either7or_DConj = sd2 "либо" [", либо"] ** {n = Sg} ;
|
||
-- comma is not visible in GUI!
|
||
every_Det = kazhdujDet ** {n = Sg ; g = PNoGen; c= Nom; size = nom} ;
|
||
everybody_NP = mkNP Pl (UseN ((eEnd_Decl "вс")**{lock_N=<>})) ;
|
||
everything_NP = UsePron (pronVseInanimate ** {lock_Pron=<>}) ;
|
||
everywhere_Adv = ss "везде" ;
|
||
few_Det = nemnogoSgDet **{lock_Det= <>; n= Sg; g = PNoGen; c = Nom; size = plg};
|
||
--- DEPREC first_Ord = (uy_j_EndDecl "перв" ) ** {lock_A = <>}; --AStaruyj
|
||
for_Prep = { s = "для" ; c = Gen };
|
||
from_Prep = { s = "от" ; c = Gen };
|
||
he_Pron = pronOn ;
|
||
here_Adv = ss "здесь" ;
|
||
here7to_Adv = ss "сюда" ;
|
||
here7from_Adv = ss "отсюда" ;
|
||
how_IAdv = ss "как" ;
|
||
how8many_IDet = skolkoSgDet ** {n = Pl; g = (PGen Neut); c= Gen};
|
||
how8much_IAdv = ss "сколько" ;
|
||
i_Pron = pronYa ;
|
||
if_Subj = ss "если" ;
|
||
in8front_Prep = { s = "перед" ; c = Inst};
|
||
in_Prep = { s = "в" ; c = Prepos PrepVNa } ;
|
||
it_Pron = pronOno ;
|
||
less_CAdv = {s="менее"; p=""} ;
|
||
many_Det = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen; size = plg} ;
|
||
more_CAdv = {s="более"; p=""} ;
|
||
most_Predet = bolshinstvoSgDet ** {n = Sg; g = (PGen Neut); c= Gen; size = plg} ;
|
||
-- inanimate, Sg: "большинство телефонов безмолству-ет"
|
||
-- most8many_Det = bolshinstvoPlDet ** {n = Pl; g = (PGen Neut); c= Gen} ;
|
||
-- animate, Pl: "большинство учащихся хорошо подготовлен-ы"
|
||
much_Det = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen; size = plg} ; -- same as previous
|
||
must_VV = verbDolzhen ;
|
||
no_Utt = ss ["Нет"] ;
|
||
on_Prep = { s = "на" ; c = Prepos PrepVNa };
|
||
--- DEPREC one_Quant = odinDet ** {lock_QuantSg = <>; n= Sg; g = PNoGen; c = Nom };
|
||
--AStaruyj :
|
||
only_Predet = (uy_j_EndDecl "единственн" ) ** {lock_Predet = <>; n= Sg; g = PNoGen; c = Nom; size = nom };
|
||
or_Conj = {s1= [] ; s2 = "или" ; n = Sg} ;
|
||
otherwise_PConj = ss "иначе" ;
|
||
part_Prep = { s = "" ; c = Nom}; -- missing in Russian
|
||
please_Voc = ss "пожалуйста" ;
|
||
possess_Prep = { s = "" ; c = Gen}; --- ?? AR 19/2/2004
|
||
quite_Adv = ss "довольно" ;
|
||
she_Pron = pronOna ;
|
||
so_AdA = ss "так";
|
||
somebody_NP = UsePron (pronKtoTo** {lock_Pron = <>});
|
||
someSg_Det = nekotorujDet ** {n = Sg; g = PNoGen; c= Nom; size = nom} ;
|
||
somePl_Det = nekotorujDet ** {n = Pl; g = PNoGen; c= Nom; size = nom} ;
|
||
something_NP = UsePron (pronChtoTo** {lock_Pron=<> }) ;
|
||
somewhere_Adv = ss "где-нибудь" ;
|
||
that_Quant = totDet ** {n = Sg; g = PNoGen; c= Nom; size = nom} ;
|
||
there_Adv = ss "там" ;
|
||
there7to_Adv = ss "туда" ;
|
||
there7from_Adv = ss "оттуда" ;
|
||
therefore_PConj = ss "следовательно" ;
|
||
they_Pron = pronOni;
|
||
this_Quant = etotDet ** {n = Sg; g = PNoGen; c= Nom; size = nom} ;
|
||
through_Prep = { s = "через" ; c = Acc };
|
||
to_Prep = { s = "к" ; c = Dat };
|
||
too_AdA = ss "слишком" ;
|
||
under_Prep = { s = "под" ; c = Inst };
|
||
very_AdA = ss "очень" ;
|
||
want_VV = verbKhotet ;
|
||
we_Pron = pronMu ;
|
||
whatPl_IP = pron2NounPhraseNum pronChto Inanimate Pl;
|
||
whatSg_IP = pron2NounPhraseNum pronChto Inanimate Sg;
|
||
when_IAdv = ss "когда" ;
|
||
when_Subj = ss "когда" ;
|
||
where_IAdv = ss "где" ;
|
||
which_IQuant = {
|
||
s = \\_ => kotorujDet.s ;
|
||
g = PNoGen;
|
||
c= Nom
|
||
} ;
|
||
whoPl_IP = pron2NounPhraseNum pronKto Animate Pl;
|
||
whoSg_IP = pron2NounPhraseNum pronKto Animate Sg;
|
||
why_IAdv = ss "почему" ;
|
||
with_Prep = { s = "с" ; c = Inst};
|
||
without_Prep = { s = "без" ; c = Gen};
|
||
youPl_Pron = pronVu;
|
||
yes_Utt = ss ["Да"] ;
|
||
youSg_Pron = pronTu;
|
||
youPol_Pron = pronVu;
|
||
|
||
have_V2= P.dirV2 (P.regV P.imperfective P.first "име" "ю" "имел" "имей" "иметь" );
|
||
have_V3 = P.mkV3 (P.mkV P.imperfective "есть" "есть" "есть" "есть" "есть" "есть" "был" "будь" "есть") "" "у" Nom Gen;
|
||
|
||
have_not_V3 = P.mkV3 (P.mkV P.imperfective "нет" "нет" "нет" "нет" "нет" "нет" "не было" "не будь" "нет") "" "у" Gen Gen;
|
||
|
||
--- NoDet = nikakojDet ** {n = Sg; g = PNoGen; c= Nom} ;
|
||
--- AnyDet = lubojDet ** {n = Sg; g = PNoGen; c= Nom} ;
|
||
--- AnyNumDet = mkDeterminerNum (lubojDet ** {n = Pl; g = PNoGen; c= Nom} );
|
||
--- NoNumDet = mkDeterminerNum (nikakojDet ** {n = Pl; g = PNoGen; c= Nom} );
|
||
---NobodyNP = UsePron pronNikto Animate;
|
||
---NothingNP = UsePron pronNichto Inanimate;
|
||
|
||
-- In case of "neither.. no" expression double negation is not
|
||
-- only possible, but also required in Russian.
|
||
-- There is no means of control for this however in the resource grammar.
|
||
--- NeitherNor = sd2 "ни" [", ни"] ** {n = Sg} ;
|
||
--- NowhereNP = ss "нигде" ;
|
||
--- AgentPrep = { s = "" ; c = Nom}; -- missing in Russian
|
||
|
||
lin language_title_Utt = ss "Русский" ;
|
||
}
|