From 7368d1a80c31357564d285d7f0f1e7f21d1a0c26 Mon Sep 17 00:00:00 2001 From: aarneranta Date: Mon, 12 Oct 2020 12:08:21 +0200 Subject: [PATCH] added PossPron and completed pronouns for Czech --- src/czech/CatCze.gf | 2 +- src/czech/NounCze.gf | 2 ++ src/czech/ResCze.gf | 49 ++++++++++++++++++++++++++++++++++++++ src/czech/StructuralCze.gf | 11 +++++---- 4 files changed, 59 insertions(+), 5 deletions(-) diff --git a/src/czech/CatCze.gf b/src/czech/CatCze.gf index 0f47261d8..9d21cd1ed 100644 --- a/src/czech/CatCze.gf +++ b/src/czech/CatCze.gf @@ -39,7 +39,7 @@ concrete CatCze of Cat = Quant = {s : Gender => Number => Case => Str} ; -- same as AP Num = Determiner ; Card = Determiner ; -- {s : Gender => Case => Str ; size : NumSize} ; - Pron = PronForms ; + Pron = PronForms ** {poss : DemPronForms} ; Adv = {s : Str} ; Prep = ResCze.ComplementCase ; -- {s : Str ; c : Case ; hasPrep : Bool} ; diff --git a/src/czech/NounCze.gf b/src/czech/NounCze.gf index 173840da6..4bc4d2315 100644 --- a/src/czech/NounCze.gf +++ b/src/czech/NounCze.gf @@ -57,6 +57,8 @@ lin hasClit = True ; } ; + PossPron pron = justDemPronFormsAdjective pron.poss ; + UsePN pn = { s,clit,prep = \\c => pn.s ! c ; a = Ag pn.g Sg P3 ; diff --git a/src/czech/ResCze.gf b/src/czech/ResCze.gf index 5fd89f757..5f2d0e46c 100644 --- a/src/czech/ResCze.gf +++ b/src/czech/ResCze.gf @@ -722,6 +722,41 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> { } ; + possessivePron : Agr -> DemPronForms = \a -> case a of { + Ag _ Sg P1 => mladyAdjForms "my" ** {msnom = "můj" ; pdat = "mým"} ; --- alts: moje, moji,... + Ag _ Sg P2 => mladyAdjForms "tvy" ** {msnom = "tvůj" ; pdat = "tvým"} ; + + Ag _ Pl P1 => jarniAdjForms "naše" ** { + msnom = "náš" ; + msins = "naším" ; + fsgen,mpnom = "naši" ; + fsins = "naší" ; + pdat, msins = "našim" ; + pgen = "našich" ; + pins = "našimi" ; + } ; + Ag _ Pl P2 => jarniAdjForms "vaše" ** { + msnom = "váš" ; + msins = "vaším" ; + fsgen,mpnom = "vaši" ; + fsins = "vaší" ; + pdat, msins = "vašim" ; + pgen = "vašich" ; + pins = "vašimi" ; + } ; + + Ag Fem Sg P3 => jarniAdjForms "její" ** {pdat = "jejím"} ; + + Ag (Masc _ | Neutr) Sg P3 => invarDemPronForms "jeho" ** {pdat = "jeho"} ; + Ag _ Pl P3 => invarDemPronForms "jejich" ** {pdat = "jejich"} + + + } ; + + + mkPron : Agr -> PronForms ** {poss : DemPronForms} = \a -> + personalPron a ** {poss = possessivePron a} ; + -------------------------------- -- demonstrative pronouns, used for Quant and Det @@ -751,6 +786,20 @@ oper _ => adjAdj.s ! g ! n ! c } + s } ; + + justDemPronFormsAdjective : DemPronForms -> Adjective = + \dem -> + let + demAdj = dem ** {fsdat = dem.fsgen} ; + adjAdj = adjFormsAdjective demAdj + in { + s = \\g,n,c => case of { + <_,Pl,Dat> => dem.pdat ; + => dem.fpnom ; + _ => adjAdj.s ! g ! n ! c + } + } ; + Determiner : Type = { s : Gender => Case => Str ; diff --git a/src/czech/StructuralCze.gf b/src/czech/StructuralCze.gf index 347e7480f..095802949 100644 --- a/src/czech/StructuralCze.gf +++ b/src/czech/StructuralCze.gf @@ -19,9 +19,12 @@ lin to_Prep = mkPrep "do" Gen ; with_Prep = mkPrep (pre {"s"|"z" => "se" ; _ => "s"}) Ins ; ---- - i_Pron = personalPron (Ag (Masc Anim) Sg P1) ; - youSg_Pron = personalPron (Ag (Masc Anim) Sg P2) ; - he_Pron = personalPron (Ag (Masc Anim) Sg P3) ; - she_Pron = personalPron (Ag Fem Sg P3) ; + i_Pron = mkPron (Ag (Masc Anim) Sg P1) ; --- to add Fem pronouns in Extend + youSg_Pron = mkPron (Ag (Masc Anim) Sg P2) ; + he_Pron = mkPron (Ag (Masc Anim) Sg P3) ; + she_Pron = mkPron (Ag Fem Sg P3) ; + we_Pron = mkPron (Ag (Masc Anim) Pl P1) ; + youPl_Pron = mkPron (Ag (Masc Anim) Pl P2) ; + they_Pron = mkPron (Ag (Masc Anim) Pl P3) ; }