mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-24 18:46:28 -06:00
REPLACED old Russian RG completely
This commit is contained in:
+168
-141
@@ -1,154 +1,181 @@
|
||||
--# -path=.:../abstract:../common:../../prelude
|
||||
|
||||
concrete StructuralRus of Structural = CatRus **
|
||||
open ResRus, MorphoRus, (P = ParadigmsRus), Prelude, NounRus in {
|
||||
|
||||
flags optimize=all ; coding=utf8 ;
|
||||
concrete StructuralRus of Structural = CatRus **
|
||||
open ParadigmsRus, ResRus, MorphoRus, (X = ConstructX), Coordination, Prelude in {
|
||||
|
||||
lin
|
||||
-- First mount the numerals.
|
||||
-- UseNumeral i = i ;
|
||||
i_Pron = personalPron (Ag MSg P1) ;
|
||||
we_Pron = personalPron (Ag GPl P1) ;
|
||||
youSg_Pron = personalPron (Ag MSg P2) ;
|
||||
youPl_Pron = personalPron (Ag GPl P2) ;
|
||||
youPol_Pron = youPl_Pron ;
|
||||
he_Pron = personalPron (Ag MSg P3) ;
|
||||
she_Pron = personalPron (Ag FSg P3) ;
|
||||
it_Pron = personalPron (Ag NSg P3) ;
|
||||
they_Pron = personalPron (Ag GPl P3) ;
|
||||
|
||||
-- Then an alphabetical list of structural words
|
||||
whatSg_IP = what_sg ;
|
||||
whatPl_IP = what_pl ;
|
||||
whoSg_IP = who_sg ;
|
||||
whoPl_IP = who_pl ;
|
||||
|
||||
which_IQuant = (adjFormsAdjective (makeAdjectiveForms "который" "" "1a" PrefFull)) ** {
|
||||
preferShort=PrefFull ;
|
||||
g=Neut ;
|
||||
c=Nom
|
||||
} ;
|
||||
this_Quant = (adjFormsAdjective this_forms) ** {
|
||||
preferShort=PrefFull ;
|
||||
g=Neut ;
|
||||
c=Nom
|
||||
} ;
|
||||
that_Quant = (adjFormsAdjective that_forms) ** {
|
||||
preferShort=PrefFull ;
|
||||
g=Neut ;
|
||||
c=Nom
|
||||
} ;
|
||||
no_Quant = (adjFormsAdjective (makeAdjectiveForms "никакой" "" "3b" PrefFull)) ** {
|
||||
preferShort=PrefFull ;
|
||||
g=Neut ;
|
||||
c=Nom
|
||||
} ;
|
||||
|
||||
above_Prep = {s="над" ; c=Ins; hasPrep=True} ;
|
||||
after_Prep = {s="после" ; c=Gen; hasPrep=True };
|
||||
before_Prep = {s="перед" ; c=Ins; hasPrep=True};
|
||||
behind_Prep = {s="за" ; c=Ins; hasPrep=True };
|
||||
between_Prep = {s="между" ; c=Ins; hasPrep=True};
|
||||
by8agent_Prep = {s=["с помощью"] ; c=Gen; hasPrep=True};
|
||||
by8means_Prep = {s=["с помощью"] ; c=Gen; hasPrep=True};
|
||||
during_Prep = {s=["в течение"] ; c=Gen; hasPrep=True};
|
||||
except_Prep = {s=["за исключением"] ; c=Gen; hasPrep=True};
|
||||
for_Prep = {s="для" ; c=Gen ; hasPrep=True};
|
||||
from_Prep = {s="от" ; c=Gen ; hasPrep=True} ;
|
||||
in8front_Prep = {s="перед" ; c=Ins; hasPrep=True};
|
||||
in_Prep = {s="в" ; c=Loc ; hasPrep=True} ;
|
||||
on_Prep = {s="на" ; c=Loc ; hasPrep=True};
|
||||
part_Prep = {s="" ; c=Nom ; hasPrep=False }; -- missing in Russian???
|
||||
possess_Prep = {s="" ; c=Gen ; hasPrep=False};
|
||||
through_Prep = {s="через" ; c=Acc ; hasPrep=True};
|
||||
to_Prep = {s="к" ; c=Dat ; hasPrep=True} ;
|
||||
under_Prep = {s="под" ; c=Ins ; hasPrep=True};
|
||||
without_Prep = {s="без" ; c=Gen; hasPrep=True };
|
||||
|
||||
or_Conj = mkConj "или" Sg ;
|
||||
and_Conj = mkConj "и" Pl ;
|
||||
both7and_DConj = mkConj "как" (comma ++ "так и") Pl ;
|
||||
either7or_DConj = mkConj "либо" (comma ++ "либо") Sg ;
|
||||
if_then_Conj = mkConj "если" (comma ++ "то") Sg ;
|
||||
|
||||
with_Prep = {s="с" ; c=Ins; hasPrep=True};
|
||||
|
||||
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;
|
||||
|
||||
everywhere_Adv = mkAdv "везде" ;
|
||||
here_Adv = mkAdv "здесь" ;
|
||||
here7to_Adv = mkAdv "сюда" ;
|
||||
here7from_Adv = mkAdv "отсюда" ;
|
||||
quite_Adv = mkAdv "довольно" ;
|
||||
somewhere_Adv = mkAdv "где-нибудь" ;
|
||||
there_Adv = mkAdv "там" ;
|
||||
there7to_Adv = mkAdv "туда" ;
|
||||
there7from_Adv = mkAdv "оттуда" ;
|
||||
|
||||
how_IAdv = ss "как" ;
|
||||
how8much_IAdv = ss "сколько" ;
|
||||
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;
|
||||
so_AdA = ss "так";
|
||||
|
||||
have_not_V3 = P.mkV3 (P.mkV P.imperfective "нет" "нет" "нет" "нет" "нет" "нет" "не было" "не будь" "нет") "" "у" Gen Gen;
|
||||
less_CAdv = X.mkCAdv "менее" "чем" ;
|
||||
more_CAdv = X.mkCAdv "более" "чем" ;
|
||||
as_CAdv = X.mkCAdv "так же" "как и" ;
|
||||
|
||||
--- 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;
|
||||
can8know_VV = {v=can; modal=\\a=>[]} ;
|
||||
can_VV = {v=can; modal=\\a=>[]} ;
|
||||
must_VV = {v=nullVerb; modal=adjFormsToShort (makeAdjectiveForms "должный" "" "1*a" PrefFull)} ;
|
||||
want_VV = {v=want; modal=\\a=>[]} ;
|
||||
|
||||
-- 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
|
||||
every_Det = {
|
||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "каждый" "" "1*a" PrefFull)).s ! GSg g;
|
||||
g = Masc ;
|
||||
c = Nom ;
|
||||
size = Num1 ;
|
||||
} ;
|
||||
someSg_Det = {
|
||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PrefFull)).s ! GSg g;
|
||||
g = Masc ;
|
||||
c = Nom ;
|
||||
size = Num1 ;
|
||||
} ;
|
||||
somePl_Det = {
|
||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PrefFull)).s ! GPl;
|
||||
g = Masc ;
|
||||
c = Nom ;
|
||||
size = NumAll ;
|
||||
} ;
|
||||
|
||||
lin language_title_Utt = ss "Русский" ;
|
||||
|
||||
oper
|
||||
sconsonant : pattern Str = #(("с"|"з"|"ж"|"ш"|"л"|"ль"|"р"|"м"|"в"|"С"|"З"|"Ж"|"Ш"|"Л"|"Ль"|"Р"|"М"|"В"|"ЛЬ") +
|
||||
("б" | "в" | "г" | "д" | "ж" | "з" | "й" | "к" | "л" | "м" | "н" | "п" | "р" | "с" | "т" | "ф" | "х" | "ц" | "ч" | "ш" | "щ" |
|
||||
"Б" | "В" | "Г" | "Д" | "Ж" | "З" | "Й" | "К" | "Л" | "М" | "Н" | "П" | "Р" | "С" | "Т" | "Ф" | "Х" | "Ц" | "Ч" | "Ш" | "Щ")) ;
|
||||
}
|
||||
few_Det = { -- numeral! TODO: мало ? немного ?
|
||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "немногий" "" "3a" PrefFull)).s ! GPl;
|
||||
g = Masc ;
|
||||
c = Nom ;
|
||||
size = NumAll ;
|
||||
} ;
|
||||
|
||||
many_Det, much_Det = {
|
||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "многий" "" "3a" PrefFull)).s ! GPl;
|
||||
g = Neut ;
|
||||
c = Gen ;
|
||||
size = NumAll
|
||||
} ;
|
||||
|
||||
only_Predet = (adjFormsAdjective (noShorts only_Pron)) ** {size=Num1} ;
|
||||
most_Predet = (makeAdjectiveFromNoun (nounFormsNoun (guessNounForms "большинство"))) ** {size=Num5} ;
|
||||
all_Predet = (adjFormsAdjective (noShorts all_Pron)) ** {size=NumAll};
|
||||
not_Predet = (adjFormsAdjective (mkA "не" "" "0")) ** {size=Num1} ;
|
||||
|
||||
how8many_IDet = {
|
||||
s=\\g,anim,cas => case <anim,cas> of {
|
||||
<_,Nom|VocRus|Ptv> => "сколько" ;
|
||||
<_,Gen|Pre|Loc> => "скольких" ;
|
||||
<_,Dat> => "скольким" ;
|
||||
<_,Ins> => "сколькими" ;
|
||||
<Inanimate,Acc> => "сколько" ;
|
||||
<Animate,Acc> => "скольких" -- also as Nom?
|
||||
} ;
|
||||
g=Neut ;
|
||||
size=NumAll ; --it depends???
|
||||
c=Nom --???
|
||||
} ;
|
||||
|
||||
almost_AdA = ss "почти" ;
|
||||
almost_AdN = ss "почти" ;
|
||||
always_AdV = ss "всегда" ;
|
||||
at_least_AdN = ss "по меньшей мере" ; -- TODO: ?
|
||||
at_most_AdN = ss "самое большее" ; -- TODO: ?
|
||||
too_AdA = ss "слишком" ;
|
||||
very_AdA = ss "очень" ;
|
||||
|
||||
everybody_NP = lin NP everybody ;
|
||||
everything_NP = lin NP everything ;
|
||||
something_NP = lin NP something ;
|
||||
somebody_NP = lin NP somebody ;
|
||||
nothing_NP = lin NP nothing ;
|
||||
nobody_NP = lin NP nobody ;
|
||||
|
||||
but_PConj = ss "но" ;
|
||||
otherwise_PConj = ss "иначе" ;
|
||||
therefore_PConj = ss "следовательно" ;
|
||||
|
||||
although_Subj = ss "хотя" ;
|
||||
because_Subj = ss ["потому что"] ;
|
||||
if_Subj = ss "если" ;
|
||||
when_Subj = ss "когда" ;
|
||||
that_Subj = ss "что" ; -- TODO: ?
|
||||
|
||||
have_V2 = dirV2 (mkV Imperfective "иметь" "имею" "имеет");
|
||||
|
||||
language_title_Utt = ss "русский" ;
|
||||
yes_Utt = ss ["да"] ;
|
||||
no_Utt = ss ["нет"] ;
|
||||
}
|
||||
Reference in New Issue
Block a user