From 54ad302e90da8adcb5e04e12fbc02284ee749b6f Mon Sep 17 00:00:00 2001 From: inari Date: Fri, 17 Oct 2014 14:50:53 +0000 Subject: [PATCH] add two new parameters in Estonian verb: passive conditional and imperfect. Change bunch of other files to reflect the change. --- lib/src/estonian/ExtraEst.gf | 12 +----- lib/src/estonian/ExtraEstAbs.gf | 4 +- lib/src/estonian/IdiomEst.gf | 4 +- lib/src/estonian/ResEst.gf | 72 +++++++++++++++++---------------- lib/src/estonian/VerbEst.gf | 8 ++-- 5 files changed, 47 insertions(+), 53 deletions(-) diff --git a/lib/src/estonian/ExtraEst.gf b/lib/src/estonian/ExtraEst.gf index f53d8c2f4..e04ca7fd0 100644 --- a/lib/src/estonian/ExtraEst.gf +++ b/lib/src/estonian/ExtraEst.gf @@ -58,7 +58,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** t.s ++ p.s ++ vps.fin ++ vps.inf ++ vp.s2 ! True ! p.p ! a ++ - vp.adv ! p.p ++ + vp.adv ++ vp.ext ; sc = vp.sc ; } ; @@ -248,14 +248,6 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** ClPlusWithObj c = c ; ClPlusWithAdv c = c ; - noPart = {s = []} ; -{-han_Part = mkPart "han" "hän" ; - pa_Part = mkPart "pa" "pä" ; - pas_Part = mkPart "pas" "päs" ; - ko_Part = mkPart "ko" "kö" ; - kos_Part = mkPart "kos" "kös" ; - kohan_Part = mkPart "kohan" "köhän" ; - pahan_Part = mkPart "pahan" "pähän" ; --} + gi_Part = ss "gi" | ss "ki" ; } diff --git a/lib/src/estonian/ExtraEstAbs.gf b/lib/src/estonian/ExtraEstAbs.gf index 71794b5ff..df9732da6 100644 --- a/lib/src/estonian/ExtraEstAbs.gf +++ b/lib/src/estonian/ExtraEstAbs.gf @@ -63,7 +63,5 @@ abstract ExtraEstAbs = Extra [ ClPlusWithObj : ClPlusObj -> ClPlus ; -- to make non-fronted obj focusable ClPlusWithAdv : ClPlusAdv -> ClPlus ; -- to make non-fronted adv focusable - noPart, han_Part, pa_Part, pas_Part, ko_Part, kos_Part, - kohan_Part, pahan_Part : Part ; - + gi_Part : Part ; } diff --git a/lib/src/estonian/IdiomEst.gf b/lib/src/estonian/IdiomEst.gf index 5c9ed3e61..ddfdc157d 100644 --- a/lib/src/estonian/IdiomEst.gf +++ b/lib/src/estonian/IdiomEst.gf @@ -40,7 +40,7 @@ concrete IdiomEst of Idiom = CatEst ** ImpersCl vp = mkClause noSubj (agrP3 Sg) vp ; GenericCl vp = mkClause noSubj (agrP3 Sg) { - s = \\_ => vp.s ! VIPass ; + s = \\_ => vp.s ! VIPass Pres ; s2 = vp.s2 ; adv = vp.adv ; p = vp.p ; @@ -65,7 +65,7 @@ concrete IdiomEst of Idiom = CatEst ** -- The imperative is not available in a $VP$. ImpPl1 vp = - let vps = vp.s ! VIPass ! Simul ! Pos ! Ag Pl P1 + let vps = vp.s ! VIPass Pres ! Simul ! Pos ! Ag Pl P1 in {s = vps.fin ++ vps.inf ++ vp.s2 ! True ! Pos ! Ag Pl P1 ++ vp.p ++ vp.ext diff --git a/lib/src/estonian/ResEst.gf b/lib/src/estonian/ResEst.gf index dfc5dccd2..ae3040888 100644 --- a/lib/src/estonian/ResEst.gf +++ b/lib/src/estonian/ResEst.gf @@ -85,10 +85,11 @@ param | Presn Number Person | Impf Number Person | Condit Number Person + | ConditPass --loetagu | Imper Number | ImperP3 | ImperP1Pl - | ImpNegPl + | ImperPass | PassPresn Bool | PassImpf Bool | Quotative Voice @@ -173,15 +174,15 @@ param VIForm = VIFin Tense | VIInf InfForm - | VIPass + | VIPass Tense | VIImper ; oper - VP = { + VP : Type = { s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ; s2 : Bool => Polarity => Agr => Str ; -- raamat/raamatu/raamatut - adv : Polarity => Str ; -- ainakin/ainakaan --TODO relevant for Est? + adv : Str ; p : Str ; --uninflecting component in multi-word verbs ext : Str ; sc : NPForm ; @@ -193,23 +194,21 @@ oper agr = verbAgr agr0 ; verbs = verb.s ; part : Str = case vi of { - VIPass => verbs ! (PastPart Pass) ; + VIPass _ => verbs ! (PastPart Pass) ; _ => verbs ! (PastPart Act) } ; - - eiv : Str = case agr of { - _ => "ei" - } ; einegole : Str * Str * Str = case of { - => ; - => ; - => ; - => ; - => ; + => <"ei", verbs ! Imper Sg, "ole"> ; + => <"ei", verbs ! Imper Sg, "ole"> ; + => <"ei", verbs ! Condit Sg P3, "oleks"> ; + => <"ei", part, "olnud"> ; => <"ära", verbs ! Imper Sg, "ole"> ; - => <"ärge", verbs ! ImpNegPl, "olge"> ; - => <"ei", verbs ! PassPresn False, "ole"> ; + => <"ärge", verbs ! Imper Pl, "olge"> ; + => <"ei", verbs ! PassPresn False, "ole"> ; + => <"ei", verbs ! PassPresn False, "ole"> ; --# notpresent + => <"ei", verbs ! ConditPass, "oleks"> ; --# notpresent + => <"ei", verbs ! PassImpf False, "olnud"> ; --# notpresent => <"ei", verbs ! Inf i, "olla"> } ; @@ -224,23 +223,27 @@ oper mkvf : VForm -> {fin, inf : Str} = \p -> case of { => vf (verbs ! p) [] ; => vf (olema ! p) part ; --- => vf ei (ole ++ part) ; --- => vf ei neg - => vf (ei ++ neg) [] ; --changed grouping from Fin + => vf (ei ++ neg) [] ; => vf (ei ++ ole) part - } + } ; + + passPol = case b of {Pos => True ; Neg => False} ; + in case vi of { - VIFin Past => mkvf (Impf agr.n agr.p) ; - VIFin Cond => mkvf (Condit agr.n agr.p) ; - VIFin Fut => mkvf (Presn agr.n agr.p) ; - VIFin Pres => mkvf (Presn agr.n agr.p) ; - VIImper => mkvf (Imper agr.n) ; - VIPass => mkvf (PassPresn True) ; + VIFin Past => mkvf (Impf agr.n agr.p) ; --# notpresent + VIFin Cond => mkvf (Condit agr.n agr.p) ; --# notpresent + VIFin Fut => mkvf (Presn agr.n agr.p) ; --# notpresent + VIFin Pres => mkvf (Presn agr.n agr.p) ; + VIImper => mkvf (Imper agr.n) ; + VIPass Pres => mkvf (PassPresn passPol) ; + VIPass Past => mkvf (PassImpf passPol) ; --# notpresent + VIPass Cond => mkvf (ConditPass) ; --# notpresent + VIPass Fut => mkvf (PassPresn passPol) ; --# notpresent VIInf i => mkvf (Inf i) } ; s2 = \\_,_,_ => [] ; - adv = \\_ => [] ; + adv = [] ; ext = [] ; --relative clause p = verb.p ; --particle verbs sc = verb.sc @@ -264,12 +267,12 @@ oper sc = vp.sc ; } ; - insertAdv : (Polarity => Str) -> VP -> VP = \adv,vp -> { + insertAdv : Str -> VP -> VP = \adv,vp -> { s = vp.s ; s2 = vp.s2 ; p = vp.p ; ext = vp.ext ; - adv = \\b => vp.adv ! b ++ adv ! b ; + adv = vp.adv ++ adv ; sc = vp.sc ; } ; @@ -334,7 +337,7 @@ oper inf = verb.inf ; compl = vp.s2 ! agrfin.p2 ! b ! agr ; p = vp.p ; - adv = vp.adv ! b ; + adv = vp.adv ; ext = vp.ext ; } } ; @@ -390,7 +393,7 @@ oper } ; verb = vp.s ! VIInf vi ! Simul ! Pos ! agr ; -- no "ei" compl = vp.s2 ! fin ! pol ! agr ; -- but compl. case propagated - adv = vp.adv ! pol + adv = vp.adv in -- inverted word order; e.g. --sinust kunagi aru saada tahtnud rel. clause @@ -506,11 +509,12 @@ oper Condit Pl P1 => tule_ + "ksime" ; --# notpresent Condit Pl P2 => tule_ + "ksite" ; --# notpresent Condit Pl P3 => tule_ + "ksid" ; --# notpresent - Imper Sg => tule_ ; -- tule - Imper Pl => tulge ; -- tulge + ConditPass => tuld_ + "aks" ; --# notpresent + Imper Sg => tule_ ; -- tule / ära tule + Imper Pl => tulge ; -- tulge / ärge tulge ImperP3 => tulgu ; -- tulgu (ta/nad) ImperP1Pl => tulge + "m" ; -- tulgem - ImpNegPl => tulge ; -- ärge tulge + ImperPass => tuld_ + "agu" ; --tuldagu PassPresn True => tullakse ; PassPresn False => tuld_ + "a" ; --da or ta PassImpf True => tuld_ + "i" ; --di or ti diff --git a/lib/src/estonian/VerbEst.gf b/lib/src/estonian/VerbEst.gf index 24750e158..9b0379578 100644 --- a/lib/src/estonian/VerbEst.gf +++ b/lib/src/estonian/VerbEst.gf @@ -73,9 +73,9 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { infVP v.sc b a vp v.vi) (predV v) ** {c2 = vp.c2} ; - AdvVP vp adv = insertAdv (\\_ => adv.s) vp ; + AdvVP vp adv = insertAdv adv.s vp ; - AdVVP adv vp = insertAdv (\\_ => adv.s) vp ; + AdVVP adv vp = insertAdv adv.s vp ; ReflVP v = insertObjPre (\\fin,b,agr => appCompl fin b v.c2 (reflPron agr)) v ; @@ -87,9 +87,9 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { _ => v.c2.c --rääkisin koerale -> koerale räägitakse } in { - s = \\_ => vp.s ! VIPass ; + s = \\_ => vp.s ! VIPass Pres ; s2 = \\_,_,_ => [] ; - adv = \\_ => [] ; + adv = [] ; p = vp.p ; ext = vp.ext ; sc = subjCase -- koer valitakse ; koerale räägitakse