Files
gf-rgl/src/russian/MorphoRus.gf
2020-08-16 17:31:42 +03:00

55 lines
3.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
resource MorphoRus = ResRus ** open Prelude in {
flags coding=utf8 ;
oper
to_exist = guessVerbForms Imperfective Intransitive "существовать" "существую" "существует";
everybody = pronFormsPronoun vse ;
everything = pronFormsPronoun vse_ina ;
what_sg = doChPron "ч" (Ag (GSg Neut) P3) Inanimate ;
what_pl = doChPron "ч" (Ag GPl P3) Inanimate ;
something = pronFormsPronoun ((appendToIP what_sg (BIND ++ "-то")) ** {nPrefix=False}) ;
nothing = pronFormsPronoun ((doChPron "нич" (Ag (GSg Neut) P3) Inanimate) ** {nPrefix=False}) ;
nechto = pronFormsPronoun ((doChPron "неч" (Ag (GSg Neut) P3) Inanimate) ** {nPrefix=False}) ;
who_sg = doKPron "к" (Ag (GSg Masc) P3) Animate ;
who_pl = doKPron "к" (Ag GPl P3) Animate ;
somebody = pronFormsPronoun ((appendToIP who_sg (BIND ++ "-то")) ** {nPrefix=False}) ;
nobody = pronFormsPronoun ((doKPron "ник" (Ag (GSg Masc) P3) Animate) ** {nPrefix=False}) ;
anybody = pronFormsPronoun ((doKPron "нек" (Ag (GSg Masc) P3) Animate) ** {nPrefix=False}) ;
such = adjFormsAdjective (makeAdjectiveForms "такой" "" "3b" PreferFull) ;
-- Situations, when prepositions are modified (approximate, full rules may be much more complex)
sconsonant : pattern Str = #(("с"|"з"|"ж"|"ш"|"С"|"З"|"Ж"|"Ш") +
("б"|"в"|"г"|"д"|"ж"|"з"|"й"|"к"|"л"|"м"|"н"|"п"|"р"|"с"|"т"|"ф"|"х"|"ц"|"ч"|"ш"|"щ" |
"Б"|"В"|"Г"|"Д"|"Ж"|"З"|"Й"|"К"|"Л"|"М"|"Н"|"П"|"Р"|"С"|"Т"|"Ф"|"Х"|"Ц"|"Ч"|"Ш"|"Щ")) ;
vconsonant : pattern Str = #(("в"|"ф"|"В"|"Ф") +
("б"|"в"|"г"|"д"|"ж"|"з"|"й"|"к"|"л"|"м"|"н"|"п"|"р"|"с"|"т"|"ф"|"х"|"ц"|"ч"|"ш"|"щ" |
"Б"|"В"|"Г"|"Д"|"Ж"|"З"|"Й"|"К"|"Л"|"М"|"Н"|"П"|"Р"|"С"|"Т"|"Ф"|"Х"|"Ц"|"Ч"|"Ш"|"Щ")) ;
s_prep_mod : Str = pre {
#sconsonant => "со" ;
("льв"|"льд"|"льн"|"лба"|"мха"|"рва"|"рта"|"лбом"|"мхом"|"рвом"|"ртом"|"мной"|"мною") => "со" ;
("вш"|"всем"|"всех"|"всей"|"всею"|"всег"|"всяк"|"всяческ"|"вторник"|"втор"|"многи"|"многом"|"многог") => "со" ;
("щ"|"Щ") => "со" ;
_ => "с"
} ;
v_prep_mod : Str = pre {#vconsonant => "во" ; ("мног"|"множ"|"все"|"весь"|"имя"|"мне") => "во" ; _ => "в"} ;
k_prep_dat_mod : Str = pre {
("льву"|"льду"|"льну"|"лбу"|"мху"|"рву"|"ржи"|"рту"|"всякому"|"всему"|"всяческому"|"вторнику"|"второму"|"многому") => "ко" ;
_ => "к"
} ;
ot_prep_gen_mod : Str = pre {
("льва"|"льда"|"льна"|"лба"|"мха"|"рва"|"ржи"|"рта") => "ото" ;
_ => "от"
} ;
pod_prep_mod : Str = pre {
("львом"|"льдом"|"льном"|"лбом"|"мхом"|"рвом"|"ртом") => "подо" ;
_ => "под"
} ;
above_prep_ins_mod : Str = pre {
("львом"|"льдом"|"льном"|"лбом"|"мхом"|"рвом"|"ртом") => "надо" ;
_ => "над"
} ;
o_prep_pre_mod : Str = pre { -- rules are approximate
("всем"|"всём"|"мне"|"всех"|"всей") => "обо" ;
("а"|"и"|"о"|"у"|"э"|"А"|"И"|"О"|"У"|"Э") => "об" ;
_ => "о"} ;
}