From 7dd461ab15b1b10bde074c9eb3ba45d52798a5ee Mon Sep 17 00:00:00 2001 From: bjorn Date: Wed, 25 Jun 2008 13:54:18 +0000 Subject: [PATCH] russin: noun declesion 10: small animals --- lib/resource-1.4/russian/LexiconRus.gf | 1 - lib/resource-1.4/russian/MorphoRus.gf | 51 ++++++++++++++---------- lib/resource-1.4/russian/ParadigmsRus.gf | 19 ++------- 3 files changed, 33 insertions(+), 38 deletions(-) diff --git a/lib/resource-1.4/russian/LexiconRus.gf b/lib/resource-1.4/russian/LexiconRus.gf index 2f1a9fd56..9f7b145ab 100644 --- a/lib/resource-1.4/russian/LexiconRus.gf +++ b/lib/resource-1.4/russian/LexiconRus.gf @@ -57,7 +57,6 @@ lin ceiling_N = mkN "потолок" ; -- vowel change chair_N = mkN "стул" ; -- irregular cheese_N = mkN "сыр" ; ---- child2_N = nRebenok "реб" ; -- Achtung: Hier 'child' im Sinne von "junge Lebewesen" (dann keine Suppletivformen(?))! child_N = mkN "ребёнок" "ребёнка" "ребёнку" "ребёнка" "ребёнком" "ребёнке" "ребёнке" "дети" "детей" "детям" "детей" "детьми" "детях" masculine animate ; church_N = mkN "церковь" "церкви" "церкви" "церковь" "церковью" "церкви" "церкви" "церкви" "церквей" "церквям" "церкви" "церквями" "церквях" masculine inanimate ; city_N = mkN "город" ; diff --git a/lib/resource-1.4/russian/MorphoRus.gf b/lib/resource-1.4/russian/MorphoRus.gf index c440af2c5..19b94a16e 100644 --- a/lib/resource-1.4/russian/MorphoRus.gf +++ b/lib/resource-1.4/russian/MorphoRus.gf @@ -558,6 +558,24 @@ Paradigms: SF Pl (Prepos _) => stem+"менах" }; g = Fem; anim = Inanimate }; + -- 10. Masc in -oнoк + oper nDecl10Hard : Str -> CommNoun = \stem -> + nAnimate (nSplitSgPl (nRegHardMasc (stem+"онок")) -- FIXME: vowel change in sg + (nRegHardNeut (stem+"ат"))) ; + + -- 10. Masc in -ёнoк + oper nDecl10Soft : Str -> CommNoun = \stem -> + nAnimate (nSplitSgPl (nRegHardMasc (stem+"ёнок")) -- FIXME: vowel change in sg + (nRegHardNeut (stem+"ят"))) ; + + oper nSplitSgPl : CommNoun -> CommNoun -> CommNoun = \x, y -> + {s = table { + SF Sg c => x.s!(SF Sg c) ; + SF Pl c => y.s!(SF Pl c) + } ; + g = x.g ; anim = y.anim + } ; + -- Nouns inflected as adjectives. oper nAdj : Adjective -> Gender ->CommNoun= \a,g -> { s = table { @@ -565,6 +583,18 @@ Paradigms: SF Pl c => a.s!AF c Inanimate APl }; g = g; anim = Inanimate } ; +-- Makes a noun animate. + oper nAnimate : CommNoun -> CommNoun = \n -> + { s = table { + SF Sg Acc => case n.g of { + Masc => n.s!(SF Sg Gen); + _ => n.s!(SF Sg Acc) + }; + SF Pl Acc => n.s!(SF Pl Gen); + sf => n.s!sf } ; + g = n.g ; + anim = Animate + } ; oper CommNoun = {s : SubstForm => Str ; g : Gender ; anim : Animacy } ; @@ -624,27 +654,6 @@ oper irregPl_StemInAnimateDecl: Str -> CommNoun = \derev -> g = Masc ; anim = Inanimate } ; - - -oper LittleAnimalDecl: Str -> CommNoun = \reb -> - {s = table - { SF Sg Nom => reb+"ёноk" ; - SF Sg Gen => reb+"ёнkа" ; - SF Sg Dat => reb+"ёнkу" ; - SF Sg Acc => reb+"ёнkа" ; - SF Sg Inst => reb+"ёнkом" ; - SF Sg (Prepos _) => reb+"ёнkе" ; - SF Pl Nom => reb+"ята" ; - SF Pl Gen => reb+"ят" ; - SF Pl Dat => reb+"ятам" ; - SF Pl Acc => reb+"ят" ; - SF Pl Inst => reb+"ятами" ; - SF Pl (Prepos _) => reb+"ятах" - } ; - g = Masc ; anim = Animate - } ; - - oper kg_oEnd_SgDecl: Str -> CommNoun = \mnog -> { s = table { SF _ Nom => mnog+"о" ; diff --git a/lib/resource-1.4/russian/ParadigmsRus.gf b/lib/resource-1.4/russian/ParadigmsRus.gf index b4f556bc2..7897ee902 100644 --- a/lib/resource-1.4/russian/ParadigmsRus.gf +++ b/lib/resource-1.4/russian/ParadigmsRus.gf @@ -274,7 +274,7 @@ foreign = Foreign; -- +++ MG_UR: added +++ mkN = overload { mkN : (karta : Str) -> N = mk1N ; - mkN : (tigr : Str) -> Animacy -> N = \nom, anim -> case anim of { Animate => animateN (mk1N nom) ; + mkN : (tigr : Str) -> Animacy -> N = \nom, anim -> case anim of { Animate => nAnimate (mk1N nom) ; Inanimate => mk1N nom } ; mkN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg, nomPl, genPl, datPl, accPl, instPl, preposPl : Str) -> Gender -> Animacy -> N = mkWorstN @@ -311,23 +311,10 @@ foreign = Foreign; -- +++ MG_UR: added +++ anim = anim } ** {lock_N = <>} ; --- Makes a noun animate. - oper animateN : N -> N = \n -> - { - s = table { - SF Sg Acc => case n.g of { - Masc => n.s!(SF Sg Gen); - _ => n.s!(SF Sg Acc) - }; - SF Pl Acc => n.s!(SF Pl Gen); - sf => n.s!sf } ; - g = n.g ; - anim = Animate - } ** {lock_N = <>}; - oper mk1N : Str -> N = \x -> case x of { --- stem+"oнoк" => nDecl10 stem ; + stem+"онок" => nDecl10Hard stem ; + stem+"ёнок" => nDecl10Soft stem ; -- stem+"aнин" => nDecl11 stem ; stem@(_+"и")+"й" => nDecl7Masc stem; stem@(_+"и")+"я" => nDecl7Fem stem;