diff --git a/src/russian/DictRus.gf b/src/russian/DictRus.gf index 6a98f338a..ccfa98cbf 100644 --- a/src/russian/DictRus.gf +++ b/src/russian/DictRus.gf @@ -4138,8 +4138,8 @@ lin skoree_Adv = mkAdv skoryj_A.comp ; skoraja_N = mkN skoryj_A feminine inanimate ; - uvidennyi_A = mkA (uvidetq_V ** {pppss="увиден"}) Pass Past ; --# notpresent - uvidevshyi_A = mkA (uvidetq_V ** {pppss="увиден"}) Act Past ; --# notpresent + uvidennyi_A = mkA (uvidetq_V ** {pppss="увиден"; ppps="увиден"}) Pass Past ; --# notpresent + uvidevshyi_A = mkA (uvidetq_V ** {pppss="увиден"; ppps="увиден"}) Act Past ; --# notpresent vedshij_A = mkA vesti_V Act Past ;--# notpresent vedomyj_A = mkA vesti_V Pass Pres ; @@ -4153,4 +4153,7 @@ lin napravlennyj_A = mkA napravitq_V Pass Past ; --# notpresent okazavshijsja_A = mkA okazatqsja_V Act Past ; --# notpresent + + vzjvshij_A = mkA vzjatq_V Act Past ; --# notpresent + vzjatyj_A = mkA vzjatq_V Pass Past ; --# notpresent } \ No newline at end of file diff --git a/src/russian/DictRusAbs.gf b/src/russian/DictRusAbs.gf index cffc44437..d84ed4527 100644 --- a/src/russian/DictRusAbs.gf +++ b/src/russian/DictRusAbs.gf @@ -4135,4 +4135,6 @@ fun napravivshij_A : A ; napravlennyj_A : A ; okazavshijsja_A : A ; + vzjatyj_A : A ; + vzjvshij_A : A ; } \ No newline at end of file diff --git a/src/russian/ExtraRus.gf b/src/russian/ExtraRus.gf index 77a228043..764e1a8e5 100644 --- a/src/russian/ExtraRus.gf +++ b/src/russian/ExtraRus.gf @@ -179,6 +179,7 @@ oper isg2=""; isg2refl="" ; ipl1=""; + ppps="явленн"; --* pppss="явлен"; --* prtr="существуя"; --* ptr="существовав"; --* @@ -198,6 +199,7 @@ oper isg2=""; isg2refl="" ; ipl1=""; + ppps=["не явленн"]; --* pppss=["не явлен"]; --* prtr=["не существуя"]; --* ptr=["не существовав"]; --* diff --git a/src/russian/InflectionRus.gf b/src/russian/InflectionRus.gf index cdef39470..801f2046c 100644 --- a/src/russian/InflectionRus.gf +++ b/src/russian/InflectionRus.gf @@ -873,7 +873,8 @@ oper } ; VerbPassPastPart : Type = { - pppss : Str + ppps : Str ; -- full form stem + pppss : Str -- short stem } ; VerbTransgressive : Type = { @@ -987,6 +988,7 @@ oper isg2=imp.isg2 ; isg2refl=imp.isg2refl ; ipl1=imp.ipl1 ; + ppps=ppp.ppps ; pppss=ppp.pppss ; prtr=tr.prtr ; ptr=tr.ptr @@ -1045,6 +1047,14 @@ oper makeVerbPassPastPart : ConjType -> Str -> Str -> Str -> Str -> VerbPassPastPart = \ct, infs, sg1, sg3, psgm -> { + ppps=case of { -- TODO + <9|11|12|14|15|16,_> => case psgm of {s+"л"=>s+"т"; _=>psgm+"т"} ; + <4,_> => sg1 + "енн" ; -- TODO: ён + <5,s+("е"|"ё")> => sg1 + "енн" ; -- TODO: ён + <7|8,_> => sg3 + "енн" ; -- TODO: ён + <3|10,_> => infs + "т" ; + _ => infs + "нн" + } ; pppss=case of { <9|11|12|14|15|16,_> => case psgm of {s+"л"=>s+"т"; _=>psgm+"т"} ; <4,_> => sg1 + "ен" ; -- TODO: ён @@ -1090,6 +1100,7 @@ oper isg2=com + "ти"; isg2refl=com + "тись"; ipl1=[]; + ppps=com + "тим"; -- incorrect, but prevents empty pppss=com + "тим"; -- incorrect, but prevents empty prtr=com + "тя"; ptr=com + "тев"; @@ -1119,6 +1130,7 @@ oper isg2=com + "ги"; isg2refl=com + "гись"; ipl1=[]; + ppps=com + "ган"; -- incorrect, but prevents parsing problems pppss=com + "ган"; -- incorrect, but prevents parsing problems prtr=com + "жа"; -- * ptr=com + "жав"; @@ -1148,6 +1160,7 @@ oper isg2=com + "шь"; isg2refl=com + "шься"; ipl1=[]; + ppps=com + "денн"; -- * pppss=com + "ден"; -- * prtr=com + "дя"; ptr=com + "в"; @@ -1176,6 +1189,7 @@ oper isg2=com + "й"; isg2refl=com + "йся"; ipl1=[]; + ppps=com + "нн"; -- * pppss=com + "н"; -- * prtr=com + "вая"; ptr=com + "в"; @@ -1205,7 +1219,8 @@ oper isg2=com + "удь"; isg2refl=com + "удься"; ipl1=[]; - pppss="ыт"; -- * + ppps=com + "ыт"; -- * + pppss=com + "ыт"; -- * prtr=com + "ывая"; ptr=com + "ыв"; asp=asp; @@ -1235,7 +1250,8 @@ oper isg2=com + "ди"; isg2refl=com + "дись"; ipl1=[]; - pppss="ден"; -- * + ppps=com + "денн"; -- * + pppss="com + ден"; -- * prtr=com + "дя"; ptr=[]; asp=asp; diff --git a/src/russian/LexiconRus.gf b/src/russian/LexiconRus.gf index dd981dc22..f6f57808d 100644 --- a/src/russian/LexiconRus.gf +++ b/src/russian/LexiconRus.gf @@ -254,7 +254,7 @@ lin science_N = mkN "наука" ; scratch_V2 = mkV2 (mkV imperfective "чесать" "чешу" "чешет"); sea_N = mkN "море" neuter inanimate "2c" ; - see_V2 = (mkV2plus (mkV2 (mkV imperfective transitive "видеть" "вижу" "видит" "5a"))) ** {pppss="виден"} ; + see_V2 = (mkV2plus (mkV2 (mkV imperfective transitive "видеть" "вижу" "видит" "5a"))) ** {pppss="виден"; ppps="виденн"} ; seed_N = mkN "семя" neuter inanimate "8°c" ; seek_V2 = mkV2 (mkV imperfective "искать" "ищу" "ищет"); sell_V3 = tvDirDir (mkV imperfective "продавать" "продаю" "продаёт"); diff --git a/src/russian/ParadigmsRus.gf b/src/russian/ParadigmsRus.gf index 79ec97107..f93ed8257 100644 --- a/src/russian/ParadigmsRus.gf +++ b/src/russian/ParadigmsRus.gf @@ -306,8 +306,8 @@ oper = \v,voice,t -> let refl = case v.refl of {Reflexive => "ся" ; _ => ""} in case of { - => lin A ( --# notpresent TODO: very rough. Cover more cases - guessAdjectiveForms (v.pppss + "ный") ** { --# notpresent + => lin A ( --# notpresent TODO: check + guessAdjectiveForms (v.ppps + "ый") ** { --# notpresent sm=v.pppss ; --# notpresent sf=v.pppss + "а"; --# notpresent sn=v.pppss + "о"; --# notpresent diff --git a/src/russian/ParamRus.gf b/src/russian/ParamRus.gf index 87d75fd09..9317064d0 100644 --- a/src/russian/ParamRus.gf +++ b/src/russian/ParamRus.gf @@ -94,7 +94,8 @@ oper prsg1, prsg2, prsg3, prpl1, prpl2, prpl3, psgm, psgs, isg2, ipl1, isg2refl, - pppss, -- past passive participle. Here only short stem + ppps, -- past passive participle, stem + pppss, -- past passive participle, short stem prtr, ptr -- present and past transgressives (converbs) : Str ; fut : SpecialFuture ; diff --git a/src/russian/ResRus.gf b/src/russian/ResRus.gf index bbecb2c85..02dd347f4 100644 --- a/src/russian/ResRus.gf +++ b/src/russian/ResRus.gf @@ -658,6 +658,7 @@ oper isg2="будь"; isg2refl="явись" ; -- ? ipl1="давайте будем"; + ppps="явленн"; --* pppss="явлен"; --* prtr="будучи"; ptr="быв"; @@ -723,6 +724,7 @@ oper isg2refl="будь способны" ; -- * isg2="будь способен"; -- some improvisation here ipl1="давайте будем способны"; -- maybe, special like for future? + ppps=""; --* pppss=""; --* prtr="могши"; --* ptr="могши"; @@ -747,6 +749,7 @@ oper isg2="желай"; isg2refl="желайся" ; ipl1="давайте будем хотеть"; + ppps="хотим"; -- * pppss="хотим"; -- * prtr="хотя"; ptr="хотев"; @@ -761,7 +764,7 @@ oper prsg1, prsg2, prsg3, prpl1, prpl2, prpl3, psgm, psgs, isg2, isg2refl, ipl1, - pppss, + ppps, pppss, prtr, ptr =""; fut=NullFuture ; asp=Imperfective; diff --git a/src/russian/test_rus_grammar.gfs b/src/russian/test_rus_grammar.gfs index ec99f6cb9..3df5fdc28 100644 --- a/src/russian/test_rus_grammar.gfs +++ b/src/russian/test_rus_grammar.gfs @@ -151,6 +151,9 @@ gt UseCl (TTAnt TPres ASimul) PPos (PredVP (AdvNP (UsePron he_Pron) ( PositAdvAd gt UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (ComplVA become_VA (AdAP (PositAdAAdj clean_A) (PositA old_A))))) | l -treebank gt UttAdv (ComparAdvAdj rather_CAdv warm_A (UsePron he_Pron)) | l -treebank -unlextext +gt UseCl (TTAnt TPres ASimul) PPos (PredVP (MassNP (AdjCN (PositA vzjvshij_A) (UseN apple_N))) (UseV fall_V)) | l -treebank -unlextext +gt UseCl (TTAnt TPres ASimul) PPos (PredVP (MassNP (AdjCN (PositA vzjatyj_A) (UseN apple_N))) (UseV fall_V)) | l -treebank -unlextext + gt CountNP (ConjDet or_Conj (BaseDAP (DetDAP every_Det) (DetDAP many_Det))) (MassNP (UseN city_N)) |l -treebank gt UseCl ? ? (married_Cl (MassNP (UseN man_N)) (MassNP (UseN woman_N))) |l -treebank