diff --git a/lib/src/finnish/MorphoFin.gf b/lib/src/finnish/MorphoFin.gf index 12a6f0fa5..bce3a7856 100644 --- a/lib/src/finnish/MorphoFin.gf +++ b/lib/src/finnish/MorphoFin.gf @@ -872,7 +872,9 @@ resource MorphoFin = ResFin ** open Prelude in { caseTable : Number -> CommonNoun -> Case => Str = \n,cn -> \\c => cn.s ! NCase n c ; - mkDet : Number -> CommonNoun -> { + mkDet = mkDetPol False ; + + mkDetPol : Bool -> Number -> CommonNoun -> { s1,sp : Case => Str ; -- minun kolme s2 : Harmony => Str ; -- -ni ; nsa/nsä n : Number ; -- Pl (agreement feature for verb) @@ -880,13 +882,13 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn -> isPoss : Bool ; -- True (a possessive suffix is present) isDef : Bool ; -- True (verb agrees in Pl, Nom is not Part) isNeg : Bool - } = \n, noun -> heavyDet { + } = \pol,n, noun -> heavyDet { s1 = \\c => noun.s ! NCase n c ; s2 = \\_ => [] ; n = n ; isNum, isPoss = False ; isDef = True ; --- does this hold for all new dets? - isNeg = False + isNeg = pol } ; -- Here we define personal and relative pronouns. diff --git a/lib/src/finnish/stemmed/DictEngFin.gf b/lib/src/finnish/stemmed/DictEngFin.gf index 65e917fbe..d734167a0 100644 --- a/lib/src/finnish/stemmed/DictEngFin.gf +++ b/lib/src/finnish/stemmed/DictEngFin.gf @@ -3,7 +3,6 @@ concrete DictEngFin of DictEngAbs = CatFin ** open ParadigmsFin, (S = StructuralFin), (L = LexiconFin), ---MANUAL10 -- SyntaxFin, MorphoFin, ParadigmsFin, Kotus, WNKotus, StemFin, Prelude in { flags coding=utf8 ; @@ -59321,29 +59320,33 @@ familiar_with_A2 = mkA2 (mkA "perehtynyt") (mkPrep illative) ; --MAN some_Quant = heavyQuant {s1 = S.jokinPron ; s2 = \\_ => [] ; isNum,isPoss,isNeg,isDef = False} ; --MAN anyPl_Det = {s1,sp = S.mikaInt ! Pl ; s2 = \\_ => "tahansa" ; isNum,isPoss,isNeg,isDef = False ; n = Pl} ; --MAN -both_Det = mkDet Pl (snoun2nounBind (nforms2snoun (dSuurempi "molempi"))) ; --MAN -most_Det = mkDet Pl (snoun2nounBind (nforms2snoun (dSuurin "usein"))) ; --MAN +little_Det = mkDet False Sg (exceptNomN (mkN "vähä") "vähän") partitive ; --MAN +both_Det = mkDet Pl (mkN "molempi" "molamman" "molempia") ; --MAN +most_Det = mkDet Pl (mkN "usein" "useimman" "useimpia") ; --MAN several_Num = {s = \\n,c => (snoun2nounBind (mkN "usea")).s ! NCase n c ; n = Sg ; isNum = True} ; --suspect --MAN another_Quant = heavyQuant {s1 = \\n,c => (snoun2nounBind (mkN "toinen")).s ! NCase n c ; s2 = \\_ => [] ; isNum,isPoss,isNeg,isDef = False} ; --MAN -neither_Det = mkDet Sg {s = \\nf => (snoun2nounBind (nforms2snoun (dSuurempi "kumpi"))).s ! nf + "kaan" ; h = Back} ; --MAN +neither_Det = MorphoFin.mkDetPol True Sg {s = table NForm {nf => (snoun2nounBind (nforms2snoun (dSuurempi "kumpi"))).s ! nf + "kaan"} ; h = Back} ; --MAN +either_Det = MorphoFin.mkDetPol False Sg {s = table NForm {nf => (snoun2nounBind (nforms2snoun (dSuurempi "kumpi"))).s ! nf ++ "tahansa"} ; h = Back} ; --MAN +anyone_NP = {s = table {NPAcc => "kenet" ++ "tahansa" ; c => S.kukaInt ! Sg ! npform2case Sg c ++ "tahansa"} ; a = agrP3 Sg ; isPron, isNeg = False} ; +anybody_NP = {s = table {NPAcc => "kenet" ++ "tahansa" ; c => S.kukaInt ! Sg ! npform2case Sg c ++ "tahansa"} ; a = agrP3 Sg ; isPron, isNeg = False} ; draw_V2 = mkV2 "vetää" ; --MAN aware_of_A2 = mkA2 (mkA "tietoinen") (mkPrep elative) ; --MAN -each_Det = mkDet Pl (snoun2nounBind (mkN "jokainen")) ; --MAN +each_Det = mkDet Pl (mkN "jokainen") ; --MAN start_V2 = mkV2 "aloittaa" ; --MAN few_Num = {s = \\n,c => (snoun2nounBind (mkN "harva")).s ! NCase n c ; n = Sg ; isNum = True} ; --suspect --MAN --MANUAL blame_V2 = mkV2 "syyttää" ; --MAN feel_VA = mkVA (caseV elative (mkV "tuntua")) (mkPrep ablative) ; --MAN anything_NP = {s = \\c => S.mikaInt ! Sg ! (npform2case Sg c) ++ "tahansa" ; a = agrP3 Sg ; isPron, isNeg = False} ; --MAN anySg_Det = {s1,sp = S.mikaInt ! Sg ; s2 = \\_ => "tahansa" ; isNum,isPoss,isNeg,isDef = False ; n = Sg} ; --MAN -moreSg_Det = mkDet Sg (snoun2nounBind (nforms2snoun (dSuurempi "useampi"))) ; --MAN +moreSg_Det = mkDet Sg (exceptNomN (mkN "enempä") "enemmän") ; --MAN lack_V2 = mkV2 (caseV ablative (mkV "puuttua")) ; --MAN exceed_V2 = mkV2 "ylittää" ; --MAN everyone_NP = S.everybody_NP ; --MAN begin_V2 = mkV2 "aloittaa" ; --MAN withdraw_V2 = mkV2 (mkV (mkV "vetää") "pois") ; --MAN survivor_N = mkN "selviytyjä" ; --MAN -morePl_Det = mkDet Pl (snoun2nounBind (nforms2snoun (dSuurempi "useampi"))) ; --MAN -less_Det = mkDet Sg (snoun2nounBind (nforms2snoun (dSuurempi "vähempi"))) ; --MAN +morePl_Det = mkDet Pl (mkN "useampi" "useamman" "useampia") ; --MAN +less_Det = mkDet Sg (exceptNomN (mkN "vähempä") "vähemmän") ; --MAN enjoy_V2 = mkV2 (mkV "nauttia") partitive ; enforce_V2 = mkV2 "pakottaa" ; diff --git a/lib/src/finnish/stemmed/ParadigmsFin.gf b/lib/src/finnish/stemmed/ParadigmsFin.gf index d646b8cd6..fbca1d287 100644 --- a/lib/src/finnish/stemmed/ParadigmsFin.gf +++ b/lib/src/finnish/stemmed/ParadigmsFin.gf @@ -296,9 +296,17 @@ mkVS = overload { = \x,y,n -> {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; } ; + mkDet = overload { + mkDet : Number -> N -> Det + = \nu,noun -> MorphoFin.mkDet nu (snoun2nounBind noun) ; + mkDet : (isNeg : Bool) -> Number -> N -> Det -- use this with True to create a negative determiner + = \isNeg,nu,noun -> MorphoFin.mkDetPol isNeg nu (snoun2nounBind noun) ; + mkDet : (isNeg : Bool) -> Number -> N -> Case -> Det -- paljon + False + partitive, ei yhtään + True + partitive + = \isNeg,nu,noun,_ -> MorphoFin.mkDetPol isNeg nu (snoun2nounBind noun) ; + } ; --. --- The definitions should not bother the user of the API. So they are +-- THE definitions should not bother the user of the API. So they are -- hidden from the document. Case = MorphoFin.Case ; diff --git a/lib/src/finnish/stemmed/StructuralFin.gf b/lib/src/finnish/stemmed/StructuralFin.gf index 06e1e22f2..3644c0bde 100644 --- a/lib/src/finnish/stemmed/StructuralFin.gf +++ b/lib/src/finnish/stemmed/StructuralFin.gf @@ -33,11 +33,11 @@ concrete StructuralFin of Structural = CatFin ** during_Prep = postGenPrep "aikana" ; either7or_DConj = sd2 "joko" "tai" ** {n = Sg} ; everybody_NP = makeNP (snoun2nounBind (mkN "jokainen")) Sg ; - every_Det = mkDet Sg (snoun2nounBind (mkN "jokainen")) ; + every_Det = MorphoFin.mkDet Sg (snoun2nounBind (mkN "jokainen")) ; everything_NP = makeNP (((snoun2nounBind (mkN "kaikki" "kaiken" "kaikkena"))) ** {lock_N = <>}) Sg ; everywhere_Adv = ss "kaikkialla" ; - few_Det = mkDet Sg (snoun2nounBind (mkN "harva")) ; + few_Det = MorphoFin.mkDet Sg (snoun2nounBind (mkN "harva")) ; --- first_Ord = {s = \\n,c => (mkN "ensimmäinen").s ! NCase n c} ; for_Prep = casePrep allative ; from_Prep = casePrep elative ; @@ -59,14 +59,14 @@ concrete StructuralFin of Structural = CatFin ** isPron = False } ; less_CAdv = X.mkCAdv "vähemmän" "kuin" ; - many_Det = mkDet Sg (snoun2nounBind (mkN "moni" "monia")) ; + many_Det = MorphoFin.mkDet Sg (snoun2nounBind (mkN "moni" "monia")) ; more_CAdv = X.mkCAdv "enemmän" "kuin" ; most_Predet = {s = \\n,c => (nForms2N (dSuurin "useinta")).s ! NCase n (npform2case n c)} ; - much_Det = mkDet Sg {s = \\_ => "paljon" ; h = Back} ; --Harmony not relevant, it's just a CommonNoun + much_Det = MorphoFin.mkDet Sg {s = \\_ => "paljon" ; h = Back} ; --Harmony not relevant, it's just a CommonNoun must_VV = mkVV (caseV genitive (mkV "täytyä")) ; no_Utt = ss "ei" ; on_Prep = casePrep adessive ; ---- one_Quant = mkDet Sg DEPREC +--- one_Quant = MorphoFin.mkDet Sg DEPREC only_Predet = {s = \\_,_ => "vain"} ; or_Conj = {s1 = [] ; s2 = "tai" ; n = Sg} ; otherwise_PConj = ss "muuten" ;