diff --git a/src/russian/LexiconRus.gf b/src/russian/LexiconRus.gf index 2c682068..904c8089 100644 --- a/src/russian/LexiconRus.gf +++ b/src/russian/LexiconRus.gf @@ -21,7 +21,7 @@ lin bank_N = mkN "банк" ; bark_N = mkN "кора"; beautiful_A = mkA "красивый"; - become_VA = regV perfective second "станов" "лю" "стал" "стань" "стать" ; + become_VA = regV perfective secondA "станов" "лю" "стал" "стань" "стать" ; beer_N = mkIndeclinableNoun "пиво" neuter inanimate ; beg_V2V = dirV2 (mkV imperfective "прошу" "просишь" "просит" "просим" "просите" "просят" "просил" "проси" "просить" ); belly_N = mkN "живот" ; diff --git a/src/russian/MorphoRus.gf b/src/russian/MorphoRus.gf index aa245da4..f56c8ed1 100644 --- a/src/russian/MorphoRus.gf +++ b/src/russian/MorphoRus.gf @@ -1228,6 +1228,14 @@ oper presentConj1Moch: Str -> Str -> Str -> PresentVerb = \del, sgP1End, altRoot PRF GPl P3 => del+ sgP1End + "т" }; +oper pastConjMoch: Str -> PastVerb = \del -> + table { + PSF (GSg Masc) => del ; + PSF (GSg Fem) => del +"ла" ; + PSF (GSg Neut) => del+"ло" ; + PSF GPl => del+ "ли" + }; + -- "PastVerb" takes care of the past tense conjugation. param PastVF = PSF GenNum ; @@ -1274,7 +1282,7 @@ oper verbDecl: Aspect -> Conjugation -> Str -> Str -> Str -> Str -> Str -> Verbu Dolzhen => ; Foreign => } in let patt = case a of { - Perfective => mkVerbImperfective; + Perfective => mkVerbPerfective; Imperfective => mkVerbImperfective } in patt inf imperSgP2 (conj.p1 del sgP1End) (conj.p2 sgMascPast) ; @@ -1283,14 +1291,14 @@ oper verbDecl: Aspect -> Conjugation -> Str -> Str -> Str -> Str -> Str -> Verbu oper verbDeclMoch: Aspect -> Conjugation -> Str -> Str -> Str -> Str ->Str -> Str -> Verbum = \a, c, del, sgP1End, sgMascPast, imperSgP2, inf, altRoot -> let patt = case a of { - Perfective => mkVerbImperfective; + Perfective => mkVerbPerfective; Imperfective => mkVerbImperfective } in - patt inf imperSgP2 (presentConj1Moch del sgP1End altRoot) (pastConj sgMascPast); + patt inf imperSgP2 (presentConj1Moch del sgP1End altRoot) (pastConjMoch sgMascPast); oper add_sya : Voice -> Str -> Str = \v,x -> case v of { Act => x ; - Pas => case Predef.dp 2 x of { + Pas => case Predef.dp 1 x of { "а" | "е" | "ё" | "и" | "о" | "у" | "ы" | "э" | "ю" | "я" => x + "сь" ; _ => x + "ся" } @@ -1339,10 +1347,8 @@ oper mkVerbPerfective: Str -> Str -> PresentVerb -> PastVerb -> Verbum = VSUB gn => add_sya vox (past ! (PSF gn)) ++ "бы" ; - VIND (GSg _) (VPresent _) => nonExist ; - VIND GPl (VPresent P1) => nonExist ; - VIND GPl (VPresent P2) => nonExist ; - VIND GPl (VPresent P3) => nonExist ; + VIND (GSg _) (VPresent p) => (presentFuture ! (PRF (GSg Masc) p)); -- these are not correct, + VIND GPl (VPresent p) => (presentFuture ! (PRF GPl p)) ; -- but used elsewhere VIND gn (VFuture p) => add_sya vox (presentFuture ! (PRF gn p)) ; VIND gn VPast => add_sya vox (past ! (PSF gn)) } } ;