diff --git a/src/russian/AdjectiveRus.gf b/src/russian/AdjectiveRus.gf index a0d25a4c..8f9ae89a 100644 --- a/src/russian/AdjectiveRus.gf +++ b/src/russian/AdjectiveRus.gf @@ -20,10 +20,10 @@ lin -- : AP -> SC -> AP ; -- good that she is here SentAP ap sc = ap ** {s = \\gn,a,c => ap.s ! gn ! a ! c ++ [", "] ++ sc.s ; isPost = True} ; - -- : A -> NP -> AP ; -- warmer than I - теплее меня + -- : A -> NP -> AP ; -- warmer than I - теплее меня ComparA a np = { s = \\gn,anim,cas => a.comp ++ (applyPrep {s="" ; c=Gen ; hasPrep=False} np) ; -- True? - short = \\ag=>a.comp ++ (applyPrep {s="" ; c=Gen ; hasPrep=True} np) ; + short = \\ag=>a.comp ++ (applyPrep {s="" ; c=Gen ; hasPrep=False} np) ; isPost = False ; preferShort = PrefShort } ; @@ -33,8 +33,8 @@ lin -- : A2 -> NP -> AP ; -- married to him - замужем за ним (NB: gender change requires different word!) ComplA2 a2 np = let af=adjFormsAdjective a2 in { - s = \\gn,anim,cas => af.s ! gn ! anim ! (a2.c.c) ++ a2.c.s ++ np.s ! (a2.c.c) ; - short = \\a=>af.short ! a ++ a2.c.s ++ np.s ! (a2.c.c) ; + s = \\gn,anim,cas => af.s ! gn ! anim ! (a2.c.c) ++ applyPrep a2.c np ; + short = \\a=>af.short ! a ++ applyPrep a2.c np ; isPost = False ; preferShort = a2.preferShort } ; diff --git a/src/russian/ConstructionRus.gf b/src/russian/ConstructionRus.gf index 1afaf576..cb075bfa 100644 --- a/src/russian/ConstructionRus.gf +++ b/src/russian/ConstructionRus.gf @@ -1,6 +1,6 @@ concrete ConstructionRus of Construction = CatRus ** open Predef, SyntaxRus, SymbolicRus, (P=ParadigmsRus), ResRus, Prelude, - QuestionRus, SentenceRus, AdverbRus, AdjectiveRus, VerbRus, IdiomRus, (E=ExtendRus), (EX=ExtraRus) in { + QuestionRus, SentenceRus, AdverbRus, AdjectiveRus, VerbRus, (N=NounRus), IdiomRus, (E=ExtendRus), (EX=ExtraRus) in { lin hungry_VP = mkVP (P.mkA "голодный" "" "1*a/c'" PrefShort) ; @@ -11,7 +11,7 @@ lin ready_VP = mkVP (P.mkA "готовый" "" "1a" PrefFull) ; -- : NP -> QCl ; -- what is x's name / wie heisst x (Ger) - what_name_QCl np = E.PredIAdvVP how_IAdv (ComplSlash (SlashV2a (P.mkV2 (P.mkV Imperfective "звать" "зову" "зовёт") Gen)) np) ; + what_name_QCl np = E.PredIAdvVP how_IAdv (ComplSlash (SlashV2a (P.mkV2 (P.mkV Imperfective "звать" "зову" "зовёт") Acc)) np) ; -- languages lincat @@ -29,17 +29,14 @@ oper mkLanguage : Str -> Str -> N = \s,zi -> P.mkN s Masc Inanimate zi; } ; mkHour : Str -> Symb = \s -> lin Symb {s=s} ; + cardCN : Card -> N -> NP = \card,n -> (N.DetCN ((DetArtCard N.IndefArt card)**{type=NormalDet}) (N.UseN n)) ; lin -- : Card -> Timeunit -> Adv ; -- (for) three hours - timeunitAdv card time = P.mkAdv ((mkNP time).s ! Nom) ; + timeunitAdv card time = P.mkAdv ((cardCN card time).s ! Nom) ; -- : Card -> Card -> Timeunit -> Adv ; -- (cats live) ten to twenty years - timeunitRange l u time = { - -- TODO: Fancier logic. Also reqrite with applyPrep - s = from_Prep.s ++ (P.mkAdv ((mkNP ).s ! from_Prep.c)).s - ++ EX.on_to_Prep.s ++ (P.mkAdv ((mkNP time).s ! EX.on_to_Prep.c)).s - } ; + timeunitRange l u time = P.mkAdv (applyPrep from_Prep (cardCN l (ellNoun time)) ++ applyPrep EX.on_to_Prep (cardCN u time)) ; oneHour = mkHour "1" ; twoHour = mkHour "2" ; diff --git a/src/russian/LexiconRus.gf b/src/russian/LexiconRus.gf index cb91de2d..de1501aa 100644 --- a/src/russian/LexiconRus.gf +++ b/src/russian/LexiconRus.gf @@ -28,7 +28,7 @@ lin big_A = (mkAltShort (mkA "большой" "больше") (mkA "великий")) ; bike_N = mkN "велосипед" ; bird_N = mkN "птица" feminine animate ; - bite_V2 = mkV2 (mkV imperfective "кусать" "кусаю"); + bite_V2 = mkV2 (mkV imperfective "кусать" "кусаю") ; black_A = (mkAltShort (mkA "чёрный") (mkA "черный")) ; -- workaround TODO: Any way to remove yo from stem? blood_N = mkN "кровь" ; blow_V = mkV imperfective "дуть" "дую" "дует"; @@ -246,7 +246,7 @@ lin rub_V2 = mkV2 (mkV imperfective "тереть" "тру" "трёт"); rubber_N = mkN "резина" ; rule_N = mkN "правило" ; - run_V = mkV imperfective intransitive "бегать" "бегу"; + run_V = mkV imperfective intransitive "бегать" "бегу" "бежит" ; salt_N = mkN "соль" ; sand_N = (mkNplus (mkN "песок" masculine inanimate "3*b")) ** {sptv="песку"} ; say_VS = mkV imperfective "говорить" "говорю" "говорит" ; diff --git a/src/russian/NounRus.gf b/src/russian/NounRus.gf index a78946cd..75ce59e4 100644 --- a/src/russian/NounRus.gf +++ b/src/russian/NounRus.gf @@ -218,7 +218,7 @@ lin preferShort=PrefFull } ; -- DefArt = adjFormsAdjective the_forms ** {preferShort=PrefFull ; g=Neut ; c=Nom} ; - -- : Quant ; -- a (house), (houses) + -- : Quant ; -- a (house), (houses) IndefArt = { s=\\gn,anim,cas=>[] ; type=EmptyIndef ; diff --git a/src/russian/ParadigmsRus.gf b/src/russian/ParadigmsRus.gf index 57efda67..1690c891 100644 --- a/src/russian/ParadigmsRus.gf +++ b/src/russian/ParadigmsRus.gf @@ -188,7 +188,7 @@ oper mkV2 : V -> V2 = \vf -> lin V2 (vf ** {c={s=[] ; c=Acc ; hasPrep=False}}) ; mkV2 : V -> Case -> V2 - = \vf, c -> lin V2 (vf ** {c={s=[] ; c=c ; hasPrep=True}}) ; + = \vf, c -> lin V2 (vf ** {c={s=[] ; c=c ; hasPrep=False}}) ; mkV2 : V -> Prep -> V2 = \vf, prep -> lin V2 (vf ** {c=prep}) ; diff --git a/src/russian/RelativeRus.gf b/src/russian/RelativeRus.gf index fed76c3f..2c9607b1 100644 --- a/src/russian/RelativeRus.gf +++ b/src/russian/RelativeRus.gf @@ -16,7 +16,7 @@ lin } ; -- : RP -> ClSlash -> RCl ; -- whom John loves RelSlash rp cls = { - subj=\\gn,anim,cas => cls.c.s ++ (rp.s ! gn ! Inanimate ! cls.c.c) ++ cls.subj ; + subj=\\gn,anim,cas => cls.c.s ++ (rp.s ! gn ! anim ! cls.c.c) ++ cls.subj ; adv=\\a=>cls.adv ; verb=cls.verb ; dep=cls.dep ; diff --git a/src/russian/SentenceRus.gf b/src/russian/SentenceRus.gf index bcf5feca..52fdaf23 100644 --- a/src/russian/SentenceRus.gf +++ b/src/russian/SentenceRus.gf @@ -24,9 +24,8 @@ lin -- : Temp -> Pol -> RCl -> RS ; -- that had not slept UseRCl temp pol rcl = { s = \\gn,anim,cas => - let parts = R.verbAgr rcl.verb Ind temp.t rcl.a pol.p in - temp.s ++ parts.p1 ++ pol.s ++ rcl.subj ! gn ! anim ! Nom ++ rcl.adv ! rcl.a ++ parts.p2 ++ rcl.dep ++ rcl.compl ! rcl.a ; - c = Nom + let parts = R.verbAgr rcl.verb Ind temp.t (genNumAgrP3 gn) pol.p in + temp.s ++ parts.p1 ++ rcl.subj ! gn ! anim ! Nom ++ rcl.adv ! (genNumAgrP3 gn) ++ pol.s ++ parts.p2 ++ rcl.dep ++ rcl.compl ! (genNumAgrP3 gn) } ; -- : Temp -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen diff --git a/src/russian/VerbRus.gf b/src/russian/VerbRus.gf index ceab2093..7f6168ec 100644 --- a/src/russian/VerbRus.gf +++ b/src/russian/VerbRus.gf @@ -53,14 +53,14 @@ lin } ; -- : V2 -> VPSlash ; -- love (it) - SlashV2a v2 = {adv=\\a=>[] ; verb=v2 ; dep=[] ; compl=\\_ => [] ; c=v2.c} ; -- looses complement info? + SlashV2a v2 = {adv=\\a=>[] ; verb=v2 ; dep=[] ; compl=\\_ => [] ; c=v2.c} ; -- : V3 -> NP -> VPSlash ; -- give it (to her) Slash2V3 v3 np = { adv=\\a=>[] ; verb=v3 ; dep=[] ; - compl=\\a=> v3.c.s ++ np.s ! v3.c.c; + compl=\\a=> applyPrep v3.c np ; c=v3.c2 } ; @@ -69,7 +69,7 @@ lin adv=\\a=>[] ; verb=v3 ; dep=[] ; - compl=\\a=> v3.c2.s ++ np.s ! v3.c2.c; + compl=\\a=> applyPrep v3.c2 np ; c=v3.c } ; diff --git a/src/russian/todo.txt b/src/russian/todo.txt index 31fe208c..e9948f0d 100644 --- a/src/russian/todo.txt +++ b/src/russian/todo.txt @@ -3,14 +3,11 @@ > l UttS (AdvS (AdAdv quite_Adv (ComparAdvAdj less_CAdv narrow_A everything_NP)) (UseCl (TTAnt TPres ASimul) PNeg (ExistNP something_NP))) довольно менее узко , чем всё что &+ -то не существует -Lang: DetCN (DetQuantOrd (PossPron he_Pron) (NumCard (NumDigits (IDig D_0))) (OrdSuperl bad_A)) (RelCN (ConjCN both7and_DConj (BaseCN (UseN2 mother_N2) (UseN lamp_N))) (UseRCl (TTAnt TPast ASimul) PNeg (RelCl (ImpersCl ready_VP)))) -LangRus: 0 его самых плохих как матерей , так и ламп , не таких , что бы &+ ли готовым +> l UseCl (TTAnt TPres AAnter) PNeg (CleftNP (PredetNP not_Predet (CountNP somePl_Det everybody_NP)) (UseRCl (TTAnt TFut AAnter) PNeg (RelVP IdRP ready_VP))) +это не некоторые из всех не , не которые будут готовыми -Lang: AdvS there7from_Adv (UseCl (TTAnt TFut AAnter) PPos (CleftNP everybody_NP (UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP in8front_Prep (languageNP polish_Language) IdRP) (SlashPrep (PredVP somebody_NP hungry_VP) through_Prep))))) -LangRus: оттуда все это , через польского перед которыми кто &+ -то голоден - -AllRusAbs: UseCl (TTAnt TPres AAnter) PNeg (CleftNP (PredetNP not_Predet (CountNP somePl_Det everybody_NP)) (UseRCl (TTAnt TFut AAnter) PNeg (RelVP IdRP ready_VP))) -AllRus: не некоторые из всех не это , не которые будут готовыми +> l UseCl (TTAnt TPres AAnter) PNeg (CleftNP (PredetNP only_Predet (CountNP somePl_Det everybody_NP)) (UseRCl (TTAnt TFut AAnter) PNeg (RelVP IdRP ready_VP))) +это единственные некоторые из всех не , не которые будут готовыми > l PrepNP above_Prep (UsePron i_Pron) над мной @@ -23,15 +20,7 @@ AllRus: складываем &+ те всех в кого &+ -то пит Inherent number for nouns. eg, for geonames or pluralia tantum. -** UseCl (TTAnt TPres ASimul) PPos (CleftNP (UsePron she_Pron) (UseRCl (TTAnt TCond ASimul) PPos (RelSlash IdRP (SlashVP somebody_NP (SlashV2a write_V2))))) -LangRus-NEW> она это , которую кто &+ -то писал бы -LangRus-OLD> это она , которую кто-то пишет - -** UseCl (TTAnt TPres ASimul) PPos (CleftNP (UsePron she_Pron) (UseRCl (TTAnt TPres ASimul) PPos (RelVP (FunRP with_Prep somebody_NP IdRP) thirsty_VP))) -LangRus-NEW> она это, кто-то с которой хочет пить -LangRus-OLD> это она , кто-то с которой хочет пить - -** UseCl (TTAnt TPres ASimul) PPos (ImpersCl (ReflVP (SlashV2A paint_V2A (PositA ∅)))) +** UseCl (TTAnt TPres ASimul) PPos (ImpersCl (ReflVP (SlashV2A paint_V2A (PositA hot_A)))) LangRus-NEW> рисует горячее себя LangRus-OLD> рисует горячим себя @@ -40,8 +29,3 @@ AllRusAbs> l UseCl (TTAnt TPres ASimul) PPos (ImpersCl (ReflVP (SlashV2A paint_V AllRusAbs> p "рисуешь горячий себя" UseCl (TTAnt TPres ASimul) PPos (GenericCl (ReflVP (SlashV2A paint_V2A (PositA hot_A)))) - -** UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (SlashV2A paint_V2A (PositA hot_A)) (UsePron she_Pron))) -LangRus-NEW> рисуешь горячую неё -LangRus-OLD> ты рисуешь горячим её -