diff --git a/src/abstract/Structural.gf b/src/abstract/Structural.gf index 2a54bbd70..95b4fad53 100644 --- a/src/abstract/Structural.gf +++ b/src/abstract/Structural.gf @@ -122,6 +122,8 @@ abstract Structural = Cat ** { as_CAdv : CAdv ; have_V2 : V2 ; + have_V3 : V3 ; + have_not_V3 : V3; fun language_title_Utt : Utt ; diff --git a/src/russian/LexiconRus.gf b/src/russian/LexiconRus.gf index 03849b277..1fd7f6b13 100644 --- a/src/russian/LexiconRus.gf +++ b/src/russian/LexiconRus.gf @@ -157,7 +157,7 @@ lin important_A = mkA "важный" ; industry_N = mkN "промышленность" ; iron_N = mkN "железо" ; - john_PN = mkPN "Иван" Masc Animate ; + john_PN = mkPN "Иван" Masc Sg Animate ; jump_V = regV imperfective first "прыга" "ю" "прыгал" "прыгай" "прыгать" ; kill_V2 = dirV2 (regV imperfective first "убива" "ю" "убивал" "убивай" "убивать" ) ; king_N = mkN "король" "короля" "королю" "короля" "королем" "короле" "короле" "короли" "королей" "королям" "королей" "королями" "королях" masculine animate ; @@ -211,7 +211,7 @@ lin paint_V2A = dirV2 (regV imperfective first "рису" "ю" "рисовал" "рисуй" "рисовать" ) ; --- palace_N = nDvorec "двор" ; -- +++ MG_UR: added +++ paper_N = mkN "бумага" ; - paris_PN = mkPN "Париж" Masc Inanimate ; + paris_PN = mkPN "Париж" Masc Sg Inanimate ; peace_N = mkN "мир" ; pen_N = mkN "ручка" ; person_N = mkN "лицo" animate ; -- irregular @@ -317,7 +317,7 @@ lin think_V = regV imperfective first "дума" "ю" "думал" "думай" "думать" ; throw_V2 = dirV2 (regV imperfective first "броса" "ю" "бросал" "бросай" "бросать" ) ; tie_V2 = dirV2 (regV imperfective first "вяж" "у" "вязал" "вяжи" "вязать") ; --- today_Adv = ; + today_Adv = mkAdv "сегодня" ; tongue_N = mkN "язык" ; tooth_N = mkN "зуб" ; train_N = mkN "поезд" ; @@ -353,7 +353,7 @@ lin wood_N = mkN "дерево" ; worm_N = mkN "черв" ; write_V2 = dirV2 (regV imperfective first "пиш" "у" "писал" "пиши" "писать" ); - year_N = mkN "годь" ; + year_N = mkN "год" ; yellow_A = mkA "жёлтый" ; young_A = mkA "молодой" "моложе"; } diff --git a/src/russian/MorphoRus.gf b/src/russian/MorphoRus.gf index 4020f48f0..4a6a72c73 100644 --- a/src/russian/MorphoRus.gf +++ b/src/russian/MorphoRus.gf @@ -34,7 +34,7 @@ oper pronTu : Pronoun = Prepos _ => "тебе" } } in pronYaTu nonPoss "тво" P2 ; --- Pronouns ya, tu, svoj +-- Pronouns ya, ty, svoj oper pronYaTu : { s : Case => Str } -> Str -> Person -> Pronoun = \nonPoss, mo, pers -> { s = table { @@ -1313,4 +1313,15 @@ oper ProperName : Type = {s : Case => Str ; g : Gender ; anim : Animacy} ; (Prepos _) => masha + "е" }; g = Fem ; anim = anim }; + -- Люберцы, Нидерланды + mkProperNamePl : Str -> Animacy -> ProperName = \lubercy, anim -> + let a : Str = case lubercy of {_+("ч"|"щ"|"ш"|"ж") => "а"; _ => "о" } in + { s = table { Nom => lubercy + "ы"; + Gen => lubercy + a + "в"; + Dat => lubercy + "ам"; + Acc => lubercy + "ы"; + Inst => lubercy + "ей"; + (Prepos _) => lubercy + "ах" }; + g = Neut ; anim = anim }; + }; diff --git a/src/russian/ParadigmsRus.gf b/src/russian/ParadigmsRus.gf index 5ec414fda..0fb2f0f40 100644 --- a/src/russian/ParadigmsRus.gf +++ b/src/russian/ParadigmsRus.gf @@ -101,7 +101,7 @@ oper -- Proper names. - mkPN : Str -> Gender -> Animacy -> PN ; -- "Иван", "Маша" + mkPN : Str -> Gender -> Number -> Animacy -> PN ; -- "Иван", "Маша" nounPN : N -> PN ; @@ -130,6 +130,7 @@ oper -- Adjectives with irregular comparative. mkA : (positive, comparative : Str) -> A ; + } ; -- Two-place adjectives need a preposition and a case as extra arguments. @@ -361,10 +362,13 @@ foreign = Foreign; -- +++ MG_UR: added +++ mkN3 f p2 p3 = (UseN f) ** {c2 = p2; c3 = p3; lock_N3 = <>} ; - mkPN = \ivan, g, anim -> - case g of { - Masc => mkProperNameMasc ivan anim ; - _ => mkProperNameFem ivan anim + mkPN = \ivan, g, n, anim -> + case n of { + Sg => case g of { + Masc => mkProperNameMasc ivan anim ; + _ => mkProperNameFem ivan anim + } ; + Pl => mkProperNamePl ivan anim } ** {lock_PN =<>}; nounPN n = {s=\\c => n.s! NF Sg c; anim=n.anim; g=n.g; lock_PN=<>}; @@ -377,7 +381,7 @@ foreign = Foreign; -- +++ MG_UR: added +++ makeCN = UseN; - makeNP = \x,y,z -> UsePN (mkPN x y z) ; + makeNP = \x,y,z -> UsePN (mkPN x y singular z) ; mkA = overload { mkA : (positive : Str) -> A = mk1A ; @@ -397,6 +401,12 @@ foreign = Foreign; -- +++ MG_UR: added +++ stem => mkAdjDeg (adjInvar stem) comparative } ; + -- mkParticiple : VP -> AP = \v, voice -> + -- case voice of { + -- Act => ; + -- Pass => ; + -- } ; + -- khaki, mini, hindi, netto adjInvar : Str -> Adjective = \stem -> { s = \\_ => stem } ; diff --git a/src/russian/StructuralRus.gf b/src/russian/StructuralRus.gf index 8dd4792db..be5daa8fa 100644 --- a/src/russian/StructuralRus.gf +++ b/src/russian/StructuralRus.gf @@ -47,6 +47,7 @@ lin here7from_Adv = ss "отсюда" ; how_IAdv = ss "как" ; how8many_IDet = skolkoSgDet ** {n = Pl; g = (PGen Neut); c= Gen}; + how8much_IAdv = ss "сколько" ; i_Pron = pronYa ; if_Subj = ss "если" ; in8front_Prep = { s = "перед" ; c = Inst}; @@ -114,6 +115,9 @@ lin youPol_Pron = pronVu; 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} ; diff --git a/src/russian/SymbolRus.gf b/src/russian/SymbolRus.gf index 9eed7763f..87caab222 100644 --- a/src/russian/SymbolRus.gf +++ b/src/russian/SymbolRus.gf @@ -2,30 +2,9 @@ concrete SymbolRus of Symbol = CatRus ** open Prelude, ResRus in { -{- TODO! -lin - SymbPN i = {s = addGenitiveS i.s ; g = Neutr} ; - IntPN i = {s = addGenitiveS i.s ; g = Neutr} ; - FloatPN i = {s = addGenitiveS i.s ; g = Neutr} ; - NumPN i = {s = i.s ; g = Neutr} ; - CNIntNP cn i = { - s = \\c => cn.s ! Sg ! Nom ++ (addGenitiveS i.s) ! c ; - a = agrgP3 Sg cn.g - } ; - CNSymbNP det cn xs = { - s = \\c => det.s ++ cn.s ! det.n ! Nom ++ (addGenitiveS xs.s) ! c ; - a = agrgP3 det.n cn.g - } ; - CNNumNP cn i = { - s = \\c => cn.s ! Sg ! Nom ++ i.s ! c ; - a = agrgP3 Sg cn.g - } ; - - SymbS sy = sy ; - - SymbNum sy = { s = addGenitiveS sy.s ; n = Pl ; hasCard = True } ; - SymbOrd sy = { s = \\c => sy.s ++ (regGenitiveS "th")!c} ; --} +{- TODO! -} +-- lin +-- SymbPN i = {s = i.s ; g = Neut } ; lincat @@ -37,5 +16,4 @@ lin -- BaseSymb = infixSS "and" ; ConsSymb = infixSS "," ; - } diff --git a/src/russian/VerbRus.gf b/src/russian/VerbRus.gf index 024c78466..916ad30c6 100644 --- a/src/russian/VerbRus.gf +++ b/src/russian/VerbRus.gf @@ -53,7 +53,8 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in { }; -- infinitive does not save GenNum, -- but indicative does for the sake of adjectival predication ! - ClIndic Present _ => zloj.s ! AF Nom Animate gn ; +-- ClIndic Present _ => zloj.s ! AF Nom Animate gn ; + ClIndic Present _ => zloj.s ! AFShort gn ; ClIndic PastRus _ => case gn of { (GSg Fem) => "была" ++ zloj.s! AF Nom Animate (GSg Fem); (GSg Masc) => "был" ++ zloj.s! AF Nom Animate (GSg Masc);