From 67380fa39813b954e468cbc62f6c8e780fdd99d0 Mon Sep 17 00:00:00 2001 From: Nikita Frolov Date: Thu, 27 Dec 2012 21:04:26 +0000 Subject: [PATCH] RG and Phrasebook fixes - added a paradigm for alternative plurals - fixed usage of alternative plurals in Numerals - added a distinction between numerals and posessive pronouns - verb omission and appropriate cases in some uses of to be/to have - fixed declination of personal names - added a gender parameter to pronouns (similar to Polish RG) - vowel insertion before short adjective suffix - don't generate short forms for relative adjectives (might need lexicon update) - minor Phrasebook fixes --- examples/phrasebook/SentencesRus.gf | 14 ++++++++--- examples/phrasebook/WordsRus.gf | 37 ++++++++++++++++------------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/examples/phrasebook/SentencesRus.gf b/examples/phrasebook/SentencesRus.gf index 67e06d7f1..cdde941e1 100644 --- a/examples/phrasebook/SentencesRus.gf +++ b/examples/phrasebook/SentencesRus.gf @@ -1,9 +1,10 @@ concrete SentencesRus of Sentences = NumeralRus ** SentencesI - [ - NameNN, SHave, SHaveNo, SHaveNoMass, QDoHave, AHaveCurr + NameNN, SHave, SHaveNo, SHaveNoMass, QDoHave, AHaveCurr, + IMale, IFemale, YouFamMale, YouFamFemale, YouPolMale, YouPolFemale ] with (Syntax = SyntaxRus), (Symbolic = SymbolicRus), - (Lexicon = LexiconRus), (Grammar = GrammarRus) ** open Prelude, SyntaxRus, (P = ParadigmsRus) in { + (Lexicon = LexiconRus), (Grammar = GrammarRus) ** open Prelude, SyntaxRus, ExtraRus, (P = ParadigmsRus), (R = ResRus), (M = MorphoRus) in { lin SHave p obj = mkS (mkCl (mkVP have_V3 obj p.name)) ; SHaveNo p obj = mkS (mkCl (mkVP have_not_V3 (mkNP obj) p.name)) ; @@ -12,6 +13,13 @@ concrete SentencesRus of Sentences = NumeralRus ** SentencesI - [ AHaveCurr p curr = mkCl (mkVP have_V3 (mkNP aPl_Det curr) p.name) ; - lin NameNN = mkNP (P.mkN "NN") ; + lin + NameNN = mkNP (P.mkN "NN") ; + IMale = mkPerson (M.pronYa R.Masc) ; + IFemale = mkPerson (M.pronYa R.Fem) ; + YouFamMale = mkPerson (M.pronTu R.Masc) ; + YouFamFemale = mkPerson (M.pronTu R.Fem) ; + YouPolMale = mkPerson (M.pronVu R.Masc) ; + YouPolFemale = mkPerson (M.pronVu R.Fem) ; } \ No newline at end of file diff --git a/examples/phrasebook/WordsRus.gf b/examples/phrasebook/WordsRus.gf index 357e4fcd9..71459f848 100644 --- a/examples/phrasebook/WordsRus.gf +++ b/examples/phrasebook/WordsRus.gf @@ -1,7 +1,7 @@ -- (C) 2009 Aarne Ranta under LGPL concrete WordsRus of Words = SentencesRus ** - open SyntaxRus, (P = ParadigmsRus), (L = LexiconRus), Prelude in { + open SyntaxRus, (P = ParadigmsRus), (L = LexiconRus), ExtraRus, (R = ResRus), Prelude in { flags coding = utf8 ; @@ -71,7 +71,7 @@ flags coding = utf8 ; CitRestaurant cit = - mkCNPlace (mkCN cit (P.mkN "ресторан")) in_Prep to_Prep ; + mkCNPlace (mkCN cit (P.mkN "ресторан")) in_Prep to2_Prep ; -- currencies @@ -127,30 +127,36 @@ flags coding = utf8 ; -- actions - AHasAge p num = mkCl p.name (mkNP num L.year_N) ; +-- AHasAge p num = mkCl p.name (mkNP num L.year_N) ; + AHasAge p num = mkCl (mkVP be_V3 (mkNP num L.year_N) p.name) ; AHasName p name = mkCl (mkVP (P.mkV3 name_is_V "" "" P.nominative P.accusative) name p.name) ; - AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ; - AHasRoom p num = mkCl p.name have_V2 + AHasChildren p num = mkCl (mkVP have_V3 (mkNP num L.child_N) p.name) ; + AHasRoom p num = mkCl (mkVP have2_V3 (mkNP (mkNP a_Det (P.mkN "номер")) - (SyntaxRus.mkAdv for_Prep (mkNP num (P.mkN "человек")))) ; - AHasTable p num = mkCl p.name have_V2 + (SyntaxRus.mkAdv for_Prep (mkNP num (L.man_N)))) p.name) ; + AHasTable p num = mkCl (mkVP have2_V3 (mkNP (mkNP a_Det (P.mkN "стол")) - (SyntaxRus.mkAdv for_Prep (mkNP num (P.mkN "человек")))) ; + (SyntaxRus.mkAdv for_Prep (mkNP num (L.man_N)))) p.name) ; AHungry p = mkCl p.name (P.mkA "голодный") ; AIll p = mkCl p.name (P.mkA "больной") ; AKnow p = mkCl p.name (P.regV P.imperfective P.first "зна" "ю" "знал" "знай" "знать" ) ; ALike p item = mkCl item (P.mkV2 (P.mkV P.imperfective "нравлюсь" "нравишься" "нравится" "нравимся" "нравитесь" "нравятся" "нравился" "нравься" "нравиться") [] P.dative) p.name ; ALive p co = mkCl p.name (mkVP (mkVP (P.regV P.imperfective P.firstE "жив" "у" "жил" "живи" "жить")) (SyntaxRus.mkAdv in_Prep co)) ; ALove p q = mkCl p.name (P.dirV2 (P.regV P.imperfective P.second "люб" "лю" "любил" "люби" "любить" )) q.name ; - AMarried p = mkCl p.name (P.mkA "женатый") ; +-- AMarried p = mkCl p.name (P.mkA "женатый") ; + AMarried p = let status = case p.name.g of { + R.PGen R.Masc => P.mkAdv "женат" ; + _ => P.mkAdv "замужем" + } in mkCl p.name status ; AReady p = mkCl p.name (P.mkA "готовый") ; AScared p = mkCl p.name (P.mkV P.imperfective "боюсь" "боишься" "боится" "боимся" "бойтесь" "боятся" "боялся" "бойся" "бояться") ; ASpeak p lang = mkCl p.name (P.mkV2 (P.regV P.imperfective P.secondA "говор" "ю" "говорил" "говори" "говорить") "на" P.prepositional) lang ; AThirsty p = mkCl p.name want_VV (mkVP (P.regV P.imperfective P.firstE "пь" "ю" "пил" "пей" "пить" )) ; - ATired p = mkCl p.name (P.mkA "уставший") ; + ATired p = mkCl p.name (P.mkA "уставший" R.Rel) ; AUnderstand p = mkCl p.name (P.regV P.imperfective P.first "понима" "ю" "понимал" "понимай" "понимать") ; AWant p obj = mkCl p.name (P.dirV2 (P.regV P.imperfective P.mixed "хо" "чу" "хотел" "хоти" "хотеть")) obj ; - AWantGo p place = mkCl p.name want_VV (mkVP (mkVP (P.mkV P.imperfective "иду" "идёшь" "идёт" "идём" "идёте" "идут" "шёл" "иди" "идти")) place.to) ; + AWantGo p place = mkCl p.name want_VV (mkVP (mkVP (P.mkV P.perfective "пошёл" "пошёл" "пошёл" "пошли" "пошли" "пошли" "пошёл" "пойди" "пойти")) place.to) ; + --AWantGo p place = mkCl p.name want_VV (mkVP (mkVP (P.mkV P.imperfective "иду" "идёшь" "идёт" "идём" "идёте" "идут" "шёл" "иди" "идти")) place.to) ; -- miscellaneous @@ -261,12 +267,9 @@ flags coding = utf8 ; by = SyntaxRus.mkAdv on_Prep (mkNP the_Det n) } ; - far_IAdv = ss "как далеко" ** {lock_IAdv = <>} ; - long_IAdv = ss "как долго" ** {lock_IAdv = <>}; - - mkSuperl : A -> Det = \a -> SyntaxRus.mkDet the_Art (SyntaxRus.mkOrd a) ; - - + far_IAdv = ss "как далеко" ** {lock_IAdv = <>} ; + long_IAdv = ss "как долго" ** {lock_IAdv = <>}; + mkSuperl : A -> Det = \a -> SyntaxRus.mkDet the_Art (SyntaxRus.mkOrd a) ; }