From 5c9885d0a273fb02958a43cdb77244f64348b635 Mon Sep 17 00:00:00 2001 From: aarneranta Date: Mon, 12 Oct 2020 13:24:20 +0200 Subject: [PATCH] Slovak possessives (some forms to be checked) --- src/slovak/CatSlo.gf | 2 +- src/slovak/NounSlo.gf | 2 ++ src/slovak/ResSlo.gf | 66 +++++++++++++++++++++++++++++++++++++ src/slovak/StructuralSlo.gf | 12 ++++--- 4 files changed, 76 insertions(+), 6 deletions(-) diff --git a/src/slovak/CatSlo.gf b/src/slovak/CatSlo.gf index 2f737358..7a5e31f4 100644 --- a/src/slovak/CatSlo.gf +++ b/src/slovak/CatSlo.gf @@ -39,7 +39,7 @@ concrete CatSlo 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 = ResSlo.ComplementCase ; -- {s : Str ; c : Case ; hasPrep : Bool} ; diff --git a/src/slovak/NounSlo.gf b/src/slovak/NounSlo.gf index cc8ba08c..a1af7b10 100644 --- a/src/slovak/NounSlo.gf +++ b/src/slovak/NounSlo.gf @@ -55,6 +55,8 @@ lin a = pron.a ; hasClit = True ; } ; + + PossPron pron = justDemPronFormsAdjective pron.poss ; UsePN pn = { s,clit,prep = \\c => pn.s ! c ; diff --git a/src/slovak/ResSlo.gf b/src/slovak/ResSlo.gf index 46519e1a..bfb16f97 100644 --- a/src/slovak/ResSlo.gf +++ b/src/slovak/ResSlo.gf @@ -821,6 +821,58 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> { } ; + possessivePron : Agr -> DemPronForms = \a -> case a of { + + Ag _ Sg P1 => otcovA "moj" ** { + msnom = "môj" ; msgen = "môjho" ; msdat = "môjmu" ; + msins = "mojím" ; + ampnom = "moji" ; + nsnom, fpnom = "moje" ; + pgen = "mojich" ; + pdat = "mojim" ; + pins = "mojimi" ; + } ; + + Ag _ Sg P2 => otcovA "tvoj" ** { + msnom = "tvoj" ; msgen = "tvojho" ; msdat = "tvojmu" ; + msins = "tvojím" ; + ampnom = "tvoji" ; + nsnom, fpnom = "tvoje" ; + pgen = "tvojich" ; + pdat = "tvojim" ; + pins = "tvojimi" ; + } ; + + Ag _ Pl P1 => otcovA "naš" ** { + msnom = "náš" ; msgen = "nášho" ; msdat = "nášmu" ; + msins = "naším" ; + ampnom = "naši" ; + nsnom, fpnom = "naše" ; + pgen = "našich" ; + pdat = "našim" ; + pins = "našimi" ; + } ; + + Ag _ Pl P2 => otcovA "vaš" ** { + msnom = "váš" ; msgen = "vášho" ; msdat = "vášmu" ; + msins = "vaším" ; + ampnom = "vaši" ; + nsnom, fpnom = "vaše" ; + pgen = "vašich" ; + pdat = "vašim" ; + pins = "vašimi" ; + } ; + + Ag (Masc _ | Neutr) Sg P3 => invarDemPronForms "jeho" ** {pdat = "jeho"} ; + Ag Fem Sg P3 => invarDemPronForms "jej" ** {pdat = "jej"} ; + Ag _ Pl P3 => invarDemPronForms "ich" ** {pdat = "ich"} + + } ; + + + mkPron : Agr -> PronForms ** {poss : DemPronForms} = \a -> + personalPron a ** {poss = possessivePron a} ; + -------------------------------- -- demonstrative pronouns, used for Quant and Det @@ -851,6 +903,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.pgen ; + => dem.fpnom ; + _ => adjAdj.s ! g ! n ! c + } + } ; Determiner : Type = { s : Gender => Case => Str ; diff --git a/src/slovak/StructuralSlo.gf b/src/slovak/StructuralSlo.gf index 08cb8308..14f9c9ce 100644 --- a/src/slovak/StructuralSlo.gf +++ b/src/slovak/StructuralSlo.gf @@ -20,9 +20,11 @@ lin to_Prep = mkPrep "do" Gen ; with_Prep = mkPrep (pre {"s" => "so" ; _ => "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) ; }