diff --git a/lib/src/finnish/IdiomFin.gf b/lib/src/finnish/IdiomFin.gf index c9e0fe45a..a492e9b40 100644 --- a/lib/src/finnish/IdiomFin.gf +++ b/lib/src/finnish/IdiomFin.gf @@ -38,7 +38,10 @@ concrete IdiomFin of Idiom = CatFin ** ImpersCl vp = mkClause noSubj (agrP3 Sg) vp ; GenericCl vp = mkClause noSubj (agrP3 Sg) { - s = \\_ => vp.s ! VIPass ; + s = \\vif,ant,pol,agr => case vif of { + VIFin t => vp.s ! VIPass t ! ant ! pol ! agr ; + _ => vp.s ! vif ! ant ! pol ! agr + } ; s2 = vp.s2 ; adv = vp.adv ; ext = vp.ext ; @@ -64,7 +67,7 @@ concrete IdiomFin of Idiom = CatFin ** -- 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.ext diff --git a/lib/src/finnish/MorphoFin.gf b/lib/src/finnish/MorphoFin.gf index 08c9843e7..02ea8f77f 100644 --- a/lib/src/finnish/MorphoFin.gf +++ b/lib/src/finnish/MorphoFin.gf @@ -706,6 +706,7 @@ resource MorphoFin = ResFin ** open Prelude in { tulisi = vh ! 8 ; tullut = vh ! 9 ; tultu = vh ! 10 ; + tult = init tultu ; tullun = vh ! 11 ; tule_ = init tulen ; tuli_ = init tulin ; @@ -745,8 +746,12 @@ resource MorphoFin = ResFin ** open Prelude in { ImperP3 Pl => tulkoo + "t" ; ImperP1Pl => tulkaa + "mme" ; ImpNegPl => tulko ; - Pass True => tullaan ; - Pass False => Predef.tk 2 tullaan ; + PassPresn True => tullaan ; + PassPresn False => Predef.tk 2 tullaan ; + PassImpf True => tult + "iin" ; --# notpresent + PassImpf False => tultu ; --# notpresent + PassCondit True => tult + a + "isiin" ; --# notpresent + PassCondit False => tult + a + "isi" ; --# notpresent PastPartAct (AN n) => tulleen ! n ; PastPartAct AAdv => tullee + "sti" ; PastPartPass (AN n) => tullun ! n ; diff --git a/lib/src/finnish/NounFin.gf b/lib/src/finnish/NounFin.gf index cb5278cf5..34b57d337 100644 --- a/lib/src/finnish/NounFin.gf +++ b/lib/src/finnish/NounFin.gf @@ -98,7 +98,10 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, Prelude in { DetQuant quant num = { s1 = \\c => quant.s1 ! num.n ! c ++ num.s ! Sg ! c ; - sp = \\c => quant.sp ! num.n ! c ++ num.s ! Sg ! c ; + sp = \\c => case num.isNum of { + True => quant.s1 ! num.n ! c ++ num.s ! Sg ! c ; -- 0 kolme with Indef + False => quant.sp ! num.n ! c ++ num.s ! Sg ! c -- yksi 0 + } ; s2 = quant.s2 ; n = num.n ; isNum = num.isNum ; -- case num.n of {Sg => False ; _ => True} ; diff --git a/lib/src/finnish/ResFin.gf b/lib/src/finnish/ResFin.gf index 2314d800d..89a2a9cc9 100644 --- a/lib/src/finnish/ResFin.gf +++ b/lib/src/finnish/ResFin.gf @@ -101,13 +101,19 @@ param | Presn Number Person | Impf Number Person --# notpresent | Condit Number Person --# notpresent +---- | Potent Number Person | Imper Number | ImperP3 Number | ImperP1Pl | ImpNegPl - | Pass Bool + | PassPresn Bool + | PassImpf Bool --# notpresent + | PassCondit Bool --# notpresent +---- | PassPotent Bool | PastPartAct AForm | PastPartPass AForm +---- | PresPartAct AForm +---- | PresPartPass AForm ; InfForm = @@ -183,7 +189,7 @@ param VIForm = VIFin Tense | VIInf InfForm - | VIPass + | VIPass Tense | VIImper ; @@ -205,8 +211,8 @@ oper agr = verbAgr agr0 ; verbs = verb.s ; part : Str = case vi of { - VIPass => verbs ! PastPartPass (AN (NCase agr.n Nom)) ; - _ => verbs ! PastPartAct (AN (NCase agr.n Nom)) + VIPass _ => verbs ! PastPartPass (AN (NCase agr.n Nom)) ; + _ => verbs ! PastPartAct (AN (NCase agr.n Nom)) } ; eiv : Str = case agr of { @@ -219,14 +225,17 @@ oper } ; einegole : Str * Str * Str = case of { - => ; - => ; --# notpresent + => ; + => ; --# notpresent => ; --# notpresent => ; --# notpresent => ; --# notpresent => <"älä", verbs ! Imper Sg, "ole"> ; => <"älkää", verbs ! ImpNegPl, "olko"> ; - => <"ei", verbs ! Pass False, "ole"> ; + => <"ei", verbs ! PassPresn False, "ole"> ; + => <"ei", verbs ! PassPresn False, "ole"> ; --# notpresent + => <"ei", verbs ! PassCondit False, "olisi"> ; --# notpresent + => <"ei", verbs ! PassImpf False, "ollut"> ; --# notpresent => <"ei", verbs ! Inf i, "olla"> ---- } ; @@ -234,7 +243,12 @@ oper neg : Str = einegole.p2 ; ole : Str = einegole.p3 ; - olla : VForm => Str = verbOlla.s ; + olla : VForm => Str = table { + PassPresn True => verbOlla.s ! Presn Sg P3 ; + PassImpf True => verbOlla.s ! Impf Sg P3 ; --# notpresent + PassCondit True => verbOlla.s ! Condit Sg P3 ; --# notpresent + vf => verbOlla.s ! vf + } ; vf : Str -> Str -> {fin, inf : Str} = \x,y -> {fin = x ; inf = y} ; @@ -252,7 +266,10 @@ oper VIFin Fut => mkvf (Presn agr.n agr.p) ; --# notpresent VIFin Pres => mkvf (Presn agr.n agr.p) ; VIImper => mkvf (Imper agr.n) ; - VIPass => mkvf (Pass passPol) ; + VIPass Past => mkvf (PassImpf passPol) ; --# notpresent + VIPass Cond => mkvf (PassCondit passPol) ; --# notpresent + VIPass Fut => mkvf (PassPresn passPol) ; --# notpresent + VIPass Pres => mkvf (PassPresn passPol) ; VIInf i => mkvf (Inf i) } ; @@ -477,6 +494,7 @@ oper tullut = vh.tullut ; tultu = vh.tultu ; tultu = vh.tultu ; + tult = init tultu ; tullun = vh.tullun ; tuje = init tulen ; tuji = init tulin ; @@ -516,8 +534,12 @@ oper ImperP3 Pl => tulko + o + "t" ; ImperP1Pl => tulkaa + "mme" ; ImpNegPl => tulko ; - Pass True => tullaan ; - Pass False => Predef.tk 2 tullaan ; + PassPresn True => tullaan ; + PassPresn False => Predef.tk 2 tullaan ; + PassImpf True => tult + "iin" ; --# notpresent + PassImpf False => tultu ; --# notpresent + PassCondit True => tult + a + "isiin" ; --# notpresent + PassCondit False => tult + a + "isi" ; --# notpresent PastPartAct n => tulleen ! n ; PastPartPass n => tullun ! n ; Inf Inf3Iness => tulema + "ss" + a ; diff --git a/lib/src/finnish/VerbFin.gf b/lib/src/finnish/VerbFin.gf index f7e7d1211..0129a8589 100644 --- a/lib/src/finnish/VerbFin.gf +++ b/lib/src/finnish/VerbFin.gf @@ -86,7 +86,10 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin in { ReflVP v = insertObjPre False (\\fin,b,agr => appCompl fin b v.c2 (reflPron agr)) v ; PassV2 v = let vp = predV v in { - s = \\_ => vp.s ! VIPass ; + s = \\vif,ant,pol,agr => case vif of { + VIFin t => vp.s ! VIPass t ! ant ! pol ! agr ; + _ => vp.s ! vif ! ant ! pol ! agr + } ; s2 = \\_,_,_ => [] ; adv = \\_ => [] ; ext = [] ; diff --git a/lib/src/finnish/stemmed/DictEngFin.gf b/lib/src/finnish/stemmed/DictEngFin.gf index 502e019fb..7bb7c29a0 100644 --- a/lib/src/finnish/stemmed/DictEngFin.gf +++ b/lib/src/finnish/stemmed/DictEngFin.gf @@ -40104,7 +40104,7 @@ proteolytic_A = mkWA (compoundA "pro" (k38 "teolyyttinen")) ; proteome_N = mkWN "proteomi" ; proteomics_N = mkWN (compoundN "proteo" (k9A "miikka")) ; proterozoic_A = mkWA (compoundA "pro" (k38 "terotsooinen")) ; -protest_N = mkWN (k39 "vastustus") ; +protest_N = mkN "protesti" ; --MANC protest_V = mkWV (k53A "esittää") "vastalause" ; protest_V2 = mkWV2 (k53A "esittää") "vastalause" ; protestant_A = mkWA (k38 "protestanttinen") ; @@ -41730,7 +41730,7 @@ recombinant_N = mkWN (compoundN "rekombi" (k5A "naatti")) ; recombination_N = mkWN "rekombinaatio" ; recommend_V2 = mkWV2 (k52 "puhua") "puolestaan" ; recommend_VS = mkWVS (k52 "puhua") "puolestaan" ; -recommendation_N = mkWN (k33 "avain") ; +recommendation_N = mkN "suositus" ; --MANC recommit_V2 = mkWV2 (k53A "palauttaa") "valiokuntaan" ; recompense_N = mkWN (k3 "palkkio") ; recompense_V2 = mkWV2 (k62 "kompensoida") ; @@ -55530,7 +55530,7 @@ valent_A = mkWA "valenssi-" ; valentine_N = mkWN (compoundN "ystävänpäivä" (k5A "kortti")) ; valerian_N = mkWN (k26 "virmajuuri") ; valet_N = mkWN (k12 "palvelija") ; -valet_V2 = mkWV2 (k67 "palvella") ; +valet_V2 = mkWV2 (k67 "palvella") partitive ; --MANC valetudinarian_A = mkWA (k38 "sairaalloinen") ; valetudinarian_N = mkWN (k2 "henkilö") "sairaalloinen" ; --PLURNOUN --POSTPONE valgus_N = mkWN (compoundN "uloskäänty" (k99 "nyt")) ; @@ -55548,14 +55548,14 @@ valsartan_N = mkWN "Diovan" ; valuable_A = mkWA (k41A "arvokas") ; valuable_N = mkWN (compoundN "arvo" (k48 "esine")) ; valuation_N = mkWN (k39 "luokitus") ; -value_N = mkWN (k6 "valööri") ; +value_N = mkN "arvo" ; --MANC value_V = mkWV (k62 "arvioida") ; -value_V2 = mkWV2 (k62 "arvioida") ; +value_V2 = mkV2 "arvostaa" ; --MANC valueless_A = mkWA (k34A "arvoton") ; valuelessness_N = mkWN (k40 "arvottomuus") ; valuer_N = mkWN (k12 "arvioitsija") ; --PLURNOUN values_N = mkWN "arvot" ; -valve_N = mkWN (k41A "puolikas") "kuoren" ; +valve_N = mkN "venttiili" ; --MANC valved_A = mkWA (k38 "läpällinen") ; valvotomy_N = mkWN (compoundN "laajennus" (k39 "leikkaus")) "läppäaukon" ; valvular_A = mkWA (k38 "läpällinen") ; diff --git a/lib/src/finnish/stemmed/ParseFin.gf b/lib/src/finnish/stemmed/ParseFin.gf index e7bc83151..8cbd49753 100644 --- a/lib/src/finnish/stemmed/ParseFin.gf +++ b/lib/src/finnish/stemmed/ParseFin.gf @@ -59,8 +59,8 @@ lin oper passVPSlash : VPSlash -> ResFin.VP = \vp -> lin VP { s = \\vif,ant,pol,agr => case vif of { - VIInf _ => vp.s ! vif ! ant ! pol ! agr ; - _ => vp.s ! VIPass ! ant ! pol ! agr + VIFin t => vp.s ! VIPass t ! ant ! pol ! agr ; + _ => vp.s ! vif ! ant ! pol ! agr } ; s2 = vp.s2 ; adv = vp.adv ; diff --git a/lib/src/finnish/stemmed/StemFin.gf b/lib/src/finnish/stemmed/StemFin.gf index 45a682dc2..7d13862be 100644 --- a/lib/src/finnish/stemmed/StemFin.gf +++ b/lib/src/finnish/stemmed/StemFin.gf @@ -150,7 +150,7 @@ oper 7 => (vf ! 7) ; -- tuli 8 => (vf ! 8) ; -- tulisi 9 => Predef.tk 2 (vf ! 9) ; -- tull(ut) - 10 => (vf ! 10) ; -- tultu + 10 => Predef.tk 1 (vf ! 10) ; -- tult(u) 11 => weakGrade (vf ! 10) ; -- tullu(n) 12 => Predef.tk 1 (vf ! 11) -- tulle(e) } ; @@ -172,7 +172,7 @@ oper tuli = vh ! 7 ; tulisi = vh ! 8 ; tull_ = vh ! 9 ; -- tull(ut) - tultu = vh ! 10 ; + tult_ = vh ! 10 ; tullu__ = vh ! 11 ; -- tullu(n) tulle_ = vh ! 12 ; -- tulle(e) @@ -187,6 +187,7 @@ oper tullu_ = plus tull_ u ; tullut = plus tullu_ "t" ; tullun = plus tullu_ "n" ; + tultu = plus tult_ u ; tullutN : Noun = snoun2noun b { s = table SNForm [ @@ -250,8 +251,12 @@ oper ImperP3 Pl => plus tulkoo "t" ; ImperP1Pl => plus tulk_ (a + a + "mme") ; ImpNegPl => tulko ; - Pass True => plus tulla_ (a + "n") ; - Pass False => tulla_ ; + PassPresn True => plus tulla_ (a + "n") ; + PassPresn False => tulla_ ; + PassImpf True => plus tult_ ("iin") ; --# notpresent + PassImpf False => tultu ; --# notpresent + PassCondit True => plus tult_ (a + "isiin") ; --# notpresent + PassCondit False => plus tult_ (a + "isi") ; --# notpresent PastPartAct (AN n) => tullutN.s ! n ; PastPartAct AAdv => plus tullee "sti" ; PastPartPass (AN n) => tultuN.s ! n ; diff --git a/lib/src/finnish/stemmed/VerbFin.gf b/lib/src/finnish/stemmed/VerbFin.gf index 750426cd9..190d85345 100644 --- a/lib/src/finnish/stemmed/VerbFin.gf +++ b/lib/src/finnish/stemmed/VerbFin.gf @@ -87,14 +87,17 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin, StemFin in { ReflVP v = insertObjPre False (\\fin,b,agr => appCompl fin b v.c2 (reflPron agr)) v ; PassV2 v = let vp = predSV v in { - s = \\_ => vp.s ! VIPass ; + s = \\vif,ant,pol,agr => case vif of { + VIFin t => vp.s ! VIPass t ! ant ! pol ! agr ; + _ => vp.s ! vif ! ant ! pol ! agr + } ; s2 = \\_,_,_ => [] ; adv = \\_ => [] ; ext = [] ; qp = vp.qp ; isNeg = False ; - sc = v.c2.c -- minut valitaan ; minua rakastetaan ; minulle kuiskataan - } ; ---- talon valitaan: should be marked like inf. + sc = v.c2.c ; -- minut valitaan ; minua rakastetaan ; minulle kuiskataan + } ; ---- talon valitaan: should be marked like inf. ----b UseVS, UseVQ = \v -> v ** {c2 = {s = [] ; c = NPAcc ; isPre = True}} ;