mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-12 00:20:11 -06:00
155 lines
6.9 KiB
Plaintext
155 lines
6.9 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 = {
|
||
s = \\c,a,g => kazhdujDet.s ! AF c a (gennum g Sg) ;
|
||
n = Sg ; g = PNoGen ; c = Nom ; size = nom} ;
|
||
everybody_NP = DetCN (DetQuant IndefArt NumPl) (UseN ((eEnd_Decl "вс")**{lock_N=<>})) ;
|
||
everything_NP = UsePron (pronVseInanimate ** {lock_Pron=<>}) ;
|
||
everywhere_Adv = ss "везде" ;
|
||
few_Det = {
|
||
s = \\c,a,g => nemnogoSgDet.s ! AF c a (gennum g Sg) ;
|
||
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 Masc ;
|
||
if_Subj = ss "если" ;
|
||
in8front_Prep = { s = "перед" ; c = Inst};
|
||
in_Prep = { s = "в" ; c = Prepos PrepVNa } ;
|
||
it_Pron = pronOno ;
|
||
less_CAdv = {s="менее"; p=""} ;
|
||
many_Det = {
|
||
s = \\c,a,g => mnogoSgDet.s ! AF c a (gennum g Sg) ;
|
||
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 = {
|
||
s = \\c,a,g => mnogoSgDet.s ! AF c a (gennum g Sg) ;
|
||
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 = {
|
||
s = \\c,a,g => nekotorujDet.s ! AF c a (gennum g Sg) ;
|
||
n = Sg ; g = PNoGen ; c= Nom ; size = nom} ;
|
||
somePl_Det = {
|
||
s = \\c,a,g => nekotorujDet.s ! AF c a (gennum g Pl) ;
|
||
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 Masc;
|
||
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 = pre {#sconsonant => "со" ; ("щ"|"Щ") => "со" ; _ => "с"} ; c = Inst} ;
|
||
without_Prep = { s = "без" ; c = Gen};
|
||
youPl_Pron = pronVu Masc;
|
||
yes_Utt = ss ["Да"] ;
|
||
youSg_Pron = pronTu Masc;
|
||
youPol_Pron = pronVu Masc;
|
||
|
||
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 "Русский" ;
|
||
|
||
oper
|
||
sconsonant : pattern Str = #(("с"|"з"|"ж"|"ш"|"л"|"ль"|"р"|"м"|"в"|"С"|"З"|"Ж"|"Ш"|"Л"|"Ль"|"Р"|"М"|"В"|"ЛЬ") +
|
||
("б" | "в" | "г" | "д" | "ж" | "з" | "й" | "к" | "л" | "м" | "н" | "п" | "р" | "с" | "т" | "ф" | "х" | "ц" | "ч" | "ш" | "щ" |
|
||
"Б" | "В" | "Г" | "Д" | "Ж" | "З" | "Й" | "К" | "Л" | "М" | "Н" | "П" | "Р" | "С" | "Т" | "Ф" | "Х" | "Ц" | "Ч" | "Ш" | "Щ")) ;
|
||
}
|