1
0
forked from GitHub/gf-core

some Fin determiners from Penn

This commit is contained in:
aarne
2013-04-03 22:47:40 +00:00
parent 92f3662b3f
commit 0cc41b31ba
4 changed files with 30 additions and 17 deletions

View File

@@ -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.

View File

@@ -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" ;

View File

@@ -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 ;

View File

@@ -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" ;