From 21202641a186bea33e30c40275c7d4499f38a248 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 6 Mar 2006 22:27:23 +0000 Subject: [PATCH] fixes in Finnish passives and pronouns ; pass imperf still missing --- lib/resource-1.0/finnish/IdiomFin.gf | 7 ++++--- lib/resource-1.0/finnish/MorphoFin.gf | 12 +++++++++++- lib/resource-1.0/finnish/ParadigmsFin.gf | 1 - lib/resource-1.0/finnish/QuestionFin.gf | 2 +- lib/resource-1.0/finnish/RelativeFin.gf | 2 +- lib/resource-1.0/finnish/ResFin.gf | 10 ++++++++-- lib/resource-1.0/finnish/SentenceFin.gf | 8 ++++---- lib/resource-1.0/finnish/StructuralFin.gf | 16 ++++++++-------- 8 files changed, 37 insertions(+), 21 deletions(-) diff --git a/lib/resource-1.0/finnish/IdiomFin.gf b/lib/resource-1.0/finnish/IdiomFin.gf index 0d15a2e5c..ef0041074 100644 --- a/lib/resource-1.0/finnish/IdiomFin.gf +++ b/lib/resource-1.0/finnish/IdiomFin.gf @@ -11,12 +11,12 @@ concrete IdiomFin of Idiom = CatFin ** Neg => NPCase Part -- ei ole olemassa lukua } in - mkClause [] (agrP3 Sg) (insertObj + mkClause noSubj (agrP3 Sg) (insertObj (\\_,b,_ => "olemassa" ++ np.s ! cas b) (predV olla)) ; - ImpersCl vp = mkClause [] (agrP3 Sg) vp ; + ImpersCl vp = mkClause noSubj (agrP3 Sg) vp ; - GenericCl vp = mkClause [] (agrP3 Sg) { + GenericCl vp = mkClause noSubj (agrP3 Sg) { s = \\_ => vp.s ! VIPass ; s2 = vp.s2 ; ext = vp.ext ; @@ -38,5 +38,6 @@ concrete IdiomFin of Idiom = CatFin ** oper olla = verbOlla ** {sc = NPCase Nom} ; + noSubj : Polarity -> Str = \_ -> [] ; } diff --git a/lib/resource-1.0/finnish/MorphoFin.gf b/lib/resource-1.0/finnish/MorphoFin.gf index 04eaedb0b..e6e44f020 100644 --- a/lib/resource-1.0/finnish/MorphoFin.gf +++ b/lib/resource-1.0/finnish/MorphoFin.gf @@ -550,7 +550,17 @@ vowelHarmony : Str -> Str = \liitin -> a = {n = n ; p = p} } ; - + mkDemPronoun : (_,_,_,_,_ : Str) -> Number -> + {s : NPForm => Str ; a : Agr} = + \tuo, tuon, tuota, tuona, tuohon, n -> + let pro = mkPronoun tuo tuon tuota tuona tuohon n P3 + in { + s = table { + NPAcc => tuo ; + c => pro.s ! c + } ; + a = pro.a + } ; -- Determiners diff --git a/lib/resource-1.0/finnish/ParadigmsFin.gf b/lib/resource-1.0/finnish/ParadigmsFin.gf index 68e690d63..1f7d8bfa9 100644 --- a/lib/resource-1.0/finnish/ParadigmsFin.gf +++ b/lib/resource-1.0/finnish/ParadigmsFin.gf @@ -69,7 +69,6 @@ oper postPrep : Case -> Str -> Prep ; -- takana, genitive postGenPrep : Str -> Prep ; -- takana casePrep : Case -> Prep ; -- adessive - accusative : Prep ; --2 Nouns diff --git a/lib/resource-1.0/finnish/QuestionFin.gf b/lib/resource-1.0/finnish/QuestionFin.gf index 01b0caf62..68e66cb87 100644 --- a/lib/resource-1.0/finnish/QuestionFin.gf +++ b/lib/resource-1.0/finnish/QuestionFin.gf @@ -10,7 +10,7 @@ concrete QuestionFin of Question = CatFin ** open ResFin, Prelude in { QuestVP ip vp = let - cl = mkClause (ip.s ! vp.sc) (agrP3 ip.n) vp + cl = mkClause (subjForm (ip ** {isPron = False ; a = agrP3 ip.n}) vp.sc) (agrP3 ip.n) vp in { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl } ; diff --git a/lib/resource-1.0/finnish/RelativeFin.gf b/lib/resource-1.0/finnish/RelativeFin.gf index 1a56a51a9..a7fc27eaf 100644 --- a/lib/resource-1.0/finnish/RelativeFin.gf +++ b/lib/resource-1.0/finnish/RelativeFin.gf @@ -16,7 +16,7 @@ concrete RelativeFin of Relative = CatFin ** open Prelude, ResFin, MorphoFin in RNoAg => ag ; RAg a => a } ; - cl = mkClause (rp.s ! agr.n ! vp.sc) agr vp + cl = mkClause (subjForm {s = rp.s ! agr.n ; a = agr ; isPron = False} vp.sc) agr vp in cl.s ! t ! ant ! b ! SDecl } ; diff --git a/lib/resource-1.0/finnish/ResFin.gf b/lib/resource-1.0/finnish/ResFin.gf index ef407a3de..07a9d4b19 100644 --- a/lib/resource-1.0/finnish/ResFin.gf +++ b/lib/resource-1.0/finnish/ResFin.gf @@ -231,10 +231,11 @@ oper s : Tense => Anteriority => Polarity => SType => Str } ; - mkClause : Str -> Agr -> VP -> Clause = - \subj,agr,vp -> { + mkClause : (Polarity -> Str) -> Agr -> VP -> Clause = + \sub,agr,vp -> { s = \\t,a,b,o => let + subj = sub b ; agrfin = case vp.sc of { NPCase Nom => ; _ => -- minun täytyy, minulla on @@ -248,6 +249,11 @@ oper } } ; +-- This is used for subjects of passives: therefore isFin in False. + + subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> + appCompl False b {s = [] ; c = sc ; isPre = True} np ; + questPart : Str -> Str = \on -> on ++ BIND ++ "ko" ; ---- infVP : NPForm -> Polarity -> Agr -> VP -> Str = diff --git a/lib/resource-1.0/finnish/SentenceFin.gf b/lib/resource-1.0/finnish/SentenceFin.gf index 2983fd056..75dcf014c 100644 --- a/lib/resource-1.0/finnish/SentenceFin.gf +++ b/lib/resource-1.0/finnish/SentenceFin.gf @@ -4,9 +4,9 @@ concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin in { lin - PredVP np vp = mkClause (np.s ! vp.sc) np.a vp ; + PredVP np vp = mkClause (subjForm np vp.sc) np.a vp ; - PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ; + PredSCVP sc vp = mkClause (\_ -> sc.s) (agrP3 Sg) vp ; ImpVP vp = { s = \\pol,n => @@ -21,7 +21,7 @@ concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin in { -- The object case is formed at the use site of $c2$, in $Relative$ and $Question$. SlashV2 np v2 = { - s = \\t,a,p => (mkClause (np.s ! v2.sc) np.a (predV v2)).s ! t ! a ! p ! SDecl ; + s = \\t,a,p => (mkClause (subjForm np v2.sc) np.a (predV v2)).s ! t ! a ! p ! SDecl ; c2 = v2.c2 } ; @@ -34,7 +34,7 @@ concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin in { in {s = \\t,ag,p => (mkClause - (np.s ! sc) np.a + (subjForm np sc) np.a (insertObj (\\_,b,a => infVP vv.sc b a (predV v2)) (predV vv) diff --git a/lib/resource-1.0/finnish/StructuralFin.gf b/lib/resource-1.0/finnish/StructuralFin.gf index 85409bd1f..853983e08 100644 --- a/lib/resource-1.0/finnish/StructuralFin.gf +++ b/lib/resource-1.0/finnish/StructuralFin.gf @@ -29,7 +29,7 @@ concrete StructuralFin of Structural = CatFin ** by8agent_Prep = postGenPrep "toimesta" ; by8means_Prep = casePrep adessive ; can8know_VV = reg2V "osata" "osasi" ; - can_VV = regV "voida" ; + can_VV = reg2V "voida" "voi" ; during_Prep = postGenPrep "aikana" ; either7or_DConj = sd2 "joko" "tai" ** {n = Sg} ; everybody_NP = mkNP (regN "jokainen") Sg ; @@ -108,14 +108,14 @@ concrete StructuralFin of Structural = CatFin ** s2 = [] ; isNum,isPoss = False ; isDef = True ; } ; that_NP = - mkPronoun "tuo" "tuon" "tuota" "tuona" "tuohon" Sg P3 ** + mkDemPronoun "tuo" "tuon" "tuota" "tuona" "tuohon" Sg ** {isPron = False} ; there_Adv = ss "siellä" ; --- tuolla there7to_Adv = ss "sinne" ; there7from_Adv = ss "sieltä" ; therefore_PConj = ss "siksi" ; these_NP = - mkPronoun "nämä" "näiden" "näitä" "näinä" "näihin" Pl P3 ** + mkDemPronoun "nämä" "näiden" "näitä" "näinä" "näihin" Pl ** {isPron = False} ; they_Pron = mkPronoun "he" "heidän" "heitä" "heinä" "heihin" Pl P3 ; --- ne this_Quant = { @@ -130,10 +130,10 @@ concrete StructuralFin of Structural = CatFin ** s2 = [] ; isNum,isPoss = False ; isDef = True ; } ; this_NP = - mkPronoun "tämä" "tämän" "tätä" "tänä" "tähän" Sg P3 ** + mkDemPronoun "tämä" "tämän" "tätä" "tänä" "tähän" Sg ** {isPron = False} ; those_NP = - mkPronoun "nuo" "noiden" "noita" "noina" "noihin" Pl P3 ** + mkDemPronoun "nuo" "noiden" "noita" "noina" "noihin" Pl ** {isPron = False} ; through_Prep = postGenPrep "kautta" ; too_AdA = ss "liian" ; @@ -143,7 +143,7 @@ concrete StructuralFin of Structural = CatFin ** want_VV = regV "tahtoa" ; we_Pron = mkPronoun "me" "meidän" "meitä" "meinä" "meihin" Pl P1 ; whatPl_IP = { - s = \\c => mikaInt ! Pl ! npform2case c ; + s = table {NPAcc => "mitkä" ; c => mikaInt ! Pl ! npform2case c} ; n = Pl } ; whatSg_IP = { @@ -162,11 +162,11 @@ concrete StructuralFin of Structural = CatFin ** n = Sg } ; whoSg_IP = { - s = \\c => kukaInt ! Sg ! npform2case c ; + s = table {NPAcc => "kenet" ; c => kukaInt ! Sg ! npform2case c} ; n = Sg } ; whoPl_IP = { - s = \\c => kukaInt ! Pl ! npform2case c ; + s = table {NPAcc => "ketkä" ; c => kukaInt ! Pl ! npform2case c} ; n = Pl } ; why_IAdv = ss "miksi" ;