fixes in finnish

This commit is contained in:
aarne
2008-06-21 20:15:56 +00:00
parent 2ee2d8d29e
commit 7a227a136c
18 changed files with 60 additions and 46 deletions

View File

@@ -199,7 +199,7 @@ PredVP (UsePron i_Pron) (UseComp (CompAdv here_Adv))
RelCN (UseN car_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePron they_Pron) (SlashV2VNP beg_V2V (UsePron i_Pron) (SlashVV want_VV (SlashV2A paint_V2A (PositA red_A)))))))
PhrUtt NoPConj (UttImpSg PPos (ImpVP (AdVVP always_AdV (ComplSlash (SlashV2a listen_V2) (DetArtSg DefArt (UseN sea_N)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (ExistNP (PredetNP only_Predet (DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2))))))) (AdvCN (SentCN (UseN woman_N) (EmbedQS (UseQCl TCond ASimul PPos (QuestSlash (IdetIP (IdetQuant which_IQuant NumPl)) (SlashPrep (PredVP (UsePron i_Pron) (ComplVV want_VV (PassV2 see_V2))) with_Prep))))) (PrepNP in_Prep (DetArtSg DefArt (UseN rain_N))))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (ExistNP (PredetNP only_Predet (DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2))))))) (AdvCN (RelCN (UseN woman_N) (UseRCl TCond ASimul PPos (RelSlash IdRP (SlashPrep (PredVP (UsePron i_Pron) (ComplVV want_VV (PassV2 see_V2))) with_Prep)))) (PrepNP in_Prep (DetArtSg DefArt (UseN rain_N))))))))) NoVoc
PhrUtt NoPConj (UttImpSg PPos (ImpVP (ComplSlash (SlashV2A paint_V2A (ConjAP both7and_DConj (BaseAP (ComparA small_A (DetArtSg DefArt (UseN sun_N))) (ComparA big_A (DetArtSg DefArt (UseN moon_N)))))) (DetArtSg DefArt (UseN earth_N))))) NoVoc
PhrUtt NoPConj (ImpPl1 (ComplVS hope_VS (ConjS either7or_DConj (BaseS (UseCl TPres ASimul PPos (PredVP (DetArtSg DefArt (ComplN2 father_N2 (DetArtSg DefArt (UseN baby_N)))) (UseV run_V))) (UseCl TPres ASimul PPos (PredVP (DetArtSg DefArt (UseN2 (Use2N3 distance_N3))) (UseComp (CompAP (PositA small_A))))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (PredVP (DetCN every_Det (UseN baby_N)) (UseComp (CompNP (ConjNP either7or_DConj (BaseNP (DetArtSg IndefArt (UseN boy_N)) (DetArtSg IndefArt (UseN girl_N))))))))) NoVoc

View File

@@ -83,8 +83,8 @@ concrete CatFin of Cat = CommonX ** open ResFin, Prelude in {
V, VS, VQ = Verb1 ; -- = {s : VForm => Str ; sc : Case} ;
V2, VA, V2Q, V2S = Verb1 ** {c2 : Compl} ;
V2A = Verb1 ** {c2, c3 : Compl} ;
VV = Verb1 ; ---- infinitive form
V2V = Verb1 ** {c2 : Compl} ; ---- infinitive form
VV = Verb1 ** {vi : InfForm} ; ---- infinitive form
V2V = Verb1 ** {c2 : Compl ; vi : InfForm} ; ---- infinitive form
V3 = Verb1 ** {c2, c3 : Compl} ;
A = {s : Degree => AForm => Str} ;

View File

@@ -19,7 +19,7 @@ lin
beautiful_A = mkA (mkN "kaunis") "kauniimpi" "kaunein" ;
become_VA = mkVA (mkV "tulla") (casePrep translative) ;
beer_N = mkN "olut" "oluita" ;
beg_V2V = mkV2 (mk2V "pyytää" "pyysi") (casePrep partitive) ;
beg_V2V = mkV2V (mk2V "pyytää" "pyysi") (casePrep partitive) ;
big_A = mkA (mkN "suuri" "suuria") "suurempi" "suurin" ;
bike_N = mkN "polkupyörä" ; --- for correct vowel harmony
bird_N = mkN "lintu" ;

View File

@@ -14,7 +14,7 @@ concrete NounFin of Noun = CatFin ** open ResFin, Prelude in {
_ => det.n
} ;
ncase : Case -> NForm = \c ->
case <n,c,det.isNum,det.isPoss, det.isDef> of {
case <n, c, det.isNum, det.isPoss, det.isDef> of {
<_, Nom, True,_,_> => NCase Sg Part ; -- kolme kytkintä(ni)
<_, _, True,False,_> => NCase Sg c ; -- kolmeksi kytkimeksi
<Pl,Nom, _,_,False> => NCase Pl Part ; -- kytkimiä
@@ -107,7 +107,7 @@ concrete NounFin of Noun = CatFin ** open ResFin, Prelude in {
s1 = \\c => quant.s1 ! num.n ! c ++ num.s ! Sg ! c ;
s2 = [] ;
n = num.n ;
isNum = True ;
isNum = case num.n of {Sg => False ; _ => True} ;
isPoss = False ;
isDef = True
} ;
@@ -152,25 +152,22 @@ concrete NounFin of Noun = CatFin ** open ResFin, Prelude in {
NumSg = {s = \\_,_ => [] ; isNum = False ; n = Sg} ;
NumPl = {s = \\_,_ => [] ; isNum = False ; n = Pl} ;
NumCard n = n ** {isNum = True} ;
NumCard n = n ** {isNum = case n.n of {Sg => False ; _ => True}} ; -- yksi talo/kaksi taloa
NumDigits numeral = {
s = \\n,c => numeral.s ! NCard (NCase n c) ;
n = numeral.n ;
isNum = True
n = numeral.n
} ;
OrdDigits numeral = {s = \\n,c => numeral.s ! NOrd (NCase n c)} ;
NumNumeral numeral = {
s = \\n,c => numeral.s ! NCard (NCase n c) ;
n = numeral.n ;
isNum = True
n = numeral.n
} ;
OrdNumeral numeral = {s = \\n,c => numeral.s ! NOrd (NCase n c)} ;
AdNum adn num = {
s = \\n,c => adn.s ++ num.s ! n ! c ;
isNum = num.isNum ;
n = num.n
} ;
@@ -217,10 +214,10 @@ concrete NounFin of Noun = CatFin ** open ResFin, Prelude in {
--- If a possessive suffix is added here it goes after the complements...
ComplN2 f x = {
s = \\nf => appCompl True Pos f.c2 x ++ f.s ! nf
s = \\nf => f.s ! nf ++ appCompl True Pos f.c2 x
} ;
ComplN3 f x = {
s = \\nf => appCompl True Pos f.c2 x ++ f.s ! nf ;
s = \\nf => f.s ! nf ++ appCompl True Pos f.c2 x ;
c2 = f.c3
} ;

View File

@@ -55,6 +55,8 @@ oper
ablative : Case ;
allative : Case ;
infFirst, infElat, infIllat : InfForm ;
-- The following type is used for defining *rection*, i.e. complements
-- of many-place verbs and adjective. A complement can be defined by
-- just a case, or a pre/postposition and a case.
@@ -194,7 +196,9 @@ oper
mkVS : V -> VS ;
mkV2S : V -> Prep -> V2S ;
mkVV : V -> VV ;
mkVVf : V -> InfForm -> VV ;
mkV2V : V -> Prep -> V2V ;
mkV2Vf : V -> Prep -> InfForm -> V2V ;
mkVA : V -> Prep -> VA ;
mkV2A : V -> Prep -> Prep -> V2A ;
mkVQ : V -> VQ ;
@@ -234,6 +238,8 @@ oper
ablative = Ablat ;
allative = Allat ;
infFirst = Inf1 ; infElat = Inf3Elat ; infIllat = Inf3Illat ;
prePrep : Case -> Str -> Prep =
\c,p -> {c = NPCase c ; s = p ; isPre = True ; lock_Prep = <>} ;
postPrep : Case -> Str -> Prep =
@@ -563,7 +569,8 @@ oper
dirdirV3 v = dirV3 v allative ;
mkVS v = v ** {lock_VS = <>} ;
mkVV v = v ** {lock_VV = <>} ;
mkVV v = mkVVf v infFirst ;
mkVVf v f = v ** {vi = f ; lock_VV = <>} ;
mkVQ v = v ** {lock_VQ = <>} ;
V0 : Type = V ;
@@ -572,7 +579,9 @@ oper
mkV0 v = v ** {lock_V = <>} ;
mkV2S v p = mk2V2 v p ** {lock_V2S = <>} ;
mkV2V v p = mk2V2 v p ** {lock_V2V = <>} ;
mkV2V v p = mkV2Vf v p infIllat ;
mkV2Vf v p f = mk2V2 v p ** {vi = f ; lock_V2V = <>} ;
mkVA v p = v ** {c2 = p ; lock_VA = <>} ;
mkV2A v p q = v ** {c2 = p ; c3 = q ; lock_V2A = <>} ;
mkV2Q v p = mk2V2 v p ** {lock_V2Q = <>} ;

View File

@@ -12,7 +12,7 @@ concrete PhraseFin of Phrase = CatFin ** open ResFin in {
UttIP ip = {s = ip.s ! NPCase Nom} ;
UttIAdv iadv = iadv ;
UttNP np = {s = np.s ! NPCase Nom} ;
UttVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp} ;
UttVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp Inf1} ;
UttAdv adv = adv ;
NoPConj = {s = []} ;

View File

@@ -223,10 +223,9 @@ oper
sc = verb.sc
} ;
insertObj : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> {
s = vp.s ;
s2 = \\fin,b,a => vp.s2 ! fin ! b ! a ++ obj ! fin ! b ! a ;
s2 = \\fin,b,a => obj ! fin ! b ! a ++ vp.s2 ! fin ! b ! a ;
ext = vp.ext ;
sc = vp.sc
} ;
@@ -269,14 +268,14 @@ oper
questPart : Str -> Str = \on -> on ++ BIND ++ "ko" ; ----
infVP : NPForm -> Polarity -> Agr -> VP -> Str =
\sc,pol,agr,vp ->
infVP : NPForm -> Polarity -> Agr -> VP -> InfForm -> Str =
\sc,pol,agr,vp,vi ->
let
fin = case sc of { -- subject case
NPCase Nom => True ; -- minä tahdon nähdä auton
_ => False -- minun täytyy nähdä auto
} ;
verb = vp.s ! VIInf Inf1 ! Simul ! Pos ! agr ; -- no "ei"
verb = vp.s ! VIInf vi ! Simul ! Pos ! agr ; -- no "ei"
compl = vp.s2 ! fin ! pol ! agr ++ vp.ext -- but compl. case propagated
in
verb.fin ++ verb.inf ++ compl ;
@@ -551,7 +550,7 @@ oper
reflPron : Agr -> NP = \agr ->
let
itse = (nhn (sKukko "itse" "itsen" "itsejä")).s ;
nsa = possSuffix agr
nsa = possSuffixFront agr
in {
s = table {
NPCase (Nom | Gen) | NPAcc => itse ! NPossNom Sg + nsa ;
@@ -563,6 +562,8 @@ oper
isPron = False -- no special acc form
} ;
possSuffixFront : Agr -> Str = \agr ->
table Agr ["ni" ; "si" ; "nsä" ; "mme" ; "nne" ; "nsä"] ! agr ;
possSuffix : Agr -> Str = \agr ->
table Agr ["ni" ; "si" ; "nsa" ; "mme" ; "nne" ; "nsa"] ! agr ;

View File

@@ -47,7 +47,7 @@ concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin in {
EmbedS s = {s = etta_Conj ++ s.s} ;
EmbedQS qs = {s = qs.s} ;
EmbedVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp} ; --- case,pol,agr
EmbedVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp Inf1} ; --- case,pol,agr,infform
UseCl t a p cl = {s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! SDecl} ;
UseQCl t a p cl = {s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p} ;

View File

@@ -28,8 +28,8 @@ concrete StructuralFin of Structural = CatFin **
but_PConj = ss "mutta" ;
by8agent_Prep = postGenPrep "toimesta" ;
by8means_Prep = casePrep adessive ;
can8know_VV = mkV "osata" "osasi" ;
can_VV = mkV "voida" "voi" ;
can8know_VV = mkVV (mkV "osata" "osasi") ;
can_VV = mkVV (mkV "voida" "voi") ;
during_Prep = postGenPrep "aikana" ;
either7or_DConj = sd2 "joko" "tai" ** {n = Sg} ;
everybody_NP = makeNP (mkN "jokainen") Sg ;
@@ -62,7 +62,7 @@ concrete StructuralFin of Structural = CatFin **
more_CAdv = ss "enemmän" ;
most_Predet = {s = \\n,c => (nForms2N (dSuurin "useinta")).s ! NCase n (npform2case n c)} ;
much_Det = mkDet Sg {s = \\_ => "paljon"} ;
must_VV = caseV genitive (mkV "täytyä") ;
must_VV = mkVV (caseV genitive (mkV "täytyä")) ;
no_Utt = ss "ei" ;
on_Prep = casePrep adessive ;
--- one_Quant = mkDet Sg DEPREC
@@ -128,7 +128,7 @@ concrete StructuralFin of Structural = CatFin **
to_Prep = casePrep illative ; --- allative
under_Prep = postGenPrep "alla" ;
very_AdA = ss "erittäin" ;
want_VV = mkV "tahtoa" ;
want_VV = mkVV (mkV "tahtoa") ;
we_Pron = mkPronoun "me" "meidän" "meitä" "meinä" "meihin" Pl P1 ;
whatPl_IP = {
s = table {NPAcc => "mitkä" ; c => mikaInt ! Pl ! npform2case Pl c} ;
@@ -200,11 +200,13 @@ oper
Sg => table {
Nom => "mikä" ;
Gen => "minkä" ;
Part => "mitä" ;
c => mi.s ! NCase Sg c
} ;
Pl => table {
Nom => "mitkä" ;
Gen => "mittenkä" ;
Gen => "minkä" ;
Part => "mitä" ;
c => mi.s ! NCase Sg c
}
} ;
@@ -282,7 +284,7 @@ oper
oper
makeNP : N -> Number -> CatFin.NP ;
makeNP : N -> MorphoFin.Number -> CatFin.NP ;
makeNP noun num = {
s = \\c => noun.s ! NCase num (npform2case num c) ;
a = agrP3 num ;

View File

@@ -18,7 +18,7 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin in {
ComplVV v vp =
insertObj
(\\_,b,a => infVP v.sc b a vp)
(\\_,b,a => infVP v.sc b a vp v.vi)
(predV {s = v.s ;
sc = case vp.sc of {
NPCase Nom => v.sc ; -- minun täytyy pestä auto
@@ -40,7 +40,7 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin in {
SlashV2Q v q =
insertExtrapos (q.s) (predV v) ** {c2 = v.c2} ;
SlashV2V v vp =
insertObj (\\_,b,a => infVP v.sc b a vp) (predV v) ** {c2 = v.c2} ;
insertObj (\\_,b,a => infVP v.sc b a vp v.vi) (predV v) ** {c2 = v.c2} ;
---- different infinitives
SlashV2A v ap =
insertObj
@@ -55,7 +55,7 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin in {
SlashVV v vp =
insertObj
(\\_,b,a => infVP v.sc b a vp)
(\\_,b,a => infVP v.sc b a vp v.vi)
(predV {s = v.s ;
sc = case vp.sc of {
NPCase Nom => v.sc ; -- minun täytyy pestä auto
@@ -66,7 +66,7 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin in {
SlashV2VNP v np vp =
insertObj
(\\fin,b,a => appCompl fin b v.c2 np ++ infVP v.sc b a vp)
(\\fin,b,a => appCompl fin b v.c2 np ++ infVP v.sc b a vp v.vi)
(predV v) ** {c2 = vp.c2} ;
AdvVP vp adv = insertObj (\\_,_,_ => adv.s) vp ;

View File

@@ -6,7 +6,7 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in {
-- flags optimize=all ;
param
Prepos = P_de | P_a ;
Prepos = P_de | P_a | PNul ;
VType = VHabere | VEsse | VRefl ;
oper
@@ -17,7 +17,8 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in {
Nom => [] ;
Acc => [] ;
CPrep P_a => "à" ;
CPrep P_de => elisDe
CPrep P_de => elisDe ;
CPrep PNul => []
} ;
artDef : Gender -> Number -> Case -> Str = \g,n,c ->
@@ -163,7 +164,7 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in {
quelPron : AAgr => Str = aagrForms "quel" "quelle" "quels" "quelles" ;
partQIndir = [] ; --- only for qui,que: elision "c" ;
partQIndir = "ce" ; --- only for qui,que: elision "c" ;
reflPron : Number -> Person -> Case -> Str = \n,p,c ->
let pron = argPron Fem n p c in

View File

@@ -168,7 +168,7 @@ oper
Aton Nom => il ;
Aton Acc => le ;
Aton (CPrep P_de) => "en" ; --- hmm
Aton (CPrep P_a) => lui ;
Aton (CPrep _) => lui ;
Poss {n = Sg ; g = Masc} => son ;
Poss {n = Sg ; g = Fem} => sa ;
Poss {n = Pl} => ses

View File

@@ -300,7 +300,7 @@ oper
accusative = complAcc ** {lock_Prep = <>} ;
genitive = complGen ** {lock_Prep = <>} ;
dative = complDat ** {lock_Prep = <>} ;
mkPrep p = {s = p ; c = Acc ; isDir = False ; lock_Prep = <>} ;
mkPrep p = {s = p ; c = CPrep PNul ; isDir = False ; lock_Prep = <>} ;
--- obsolete
Preposition : Type ;

View File

@@ -144,7 +144,7 @@ instance DiffIta of DiffRomance = open CommonRomance, PhonoIta, BeschIta, Prelud
quelPron : AAgr => Str = aagrForms "quale" "quale" "quali" "quali" ;
partQIndir = [] ; --- "ciò" ;
partQIndir = "ciò" ;
reflPron : Number -> Person -> Case -> Str =
let

View File

@@ -12,7 +12,7 @@ lin
apartment_N = regN "apartamento" ;
apple_N = regN "mela" ;
art_N = femN (regN "arte") ;
ask_V2Q = mkV2Q (verboV (rispondere_76 "chiedere")) ParadigmsIta.dative ;
ask_V2Q = mkV2Q (verboV (chiedere_29 "chiedere")) ParadigmsIta.dative ;
baby_N = regN "bambino" ;
bad_A = prefA (mkADeg (regA "cattivo") (regA "peggio")) ;
bank_N = regN "banca" ;

View File

@@ -25,7 +25,7 @@ lin pot01 =
ental pred => [] ;
_ => uno ! f ! g
} ;
n = Pl} ;
n = Sg} ;
lin pot0 d = {s = d.s ; n = Pl} ;
lin pot110 = spl ((mkTal "dieci" [] [] "decimo").s ! ental indip) ;

View File

@@ -30,14 +30,18 @@ incomplete concrete QuestionRomance of Question =
who = slash.c2.s ++ ip.s ! slash.c2.c
in table {
QDir => who ++ cls DInv ;
QIndir => partQIndir ++ who ++ cls DDir
QIndir => who ++ cls DDir
}
} ;
QuestIAdv iadv cl = {
s = \\t,a,p,_ =>
s = \\t,a,p,q =>
let
cls = cl.s ! DInv ! t ! a ! p ! Indic ;
ord = case q of {
QDir => DInv ;
QIndir => DDir
} ;
cls = cl.s ! ord ! t ! a ! p ! Indic ;
why = iadv.s
in why ++ cls
} ;

View File

@@ -27,7 +27,7 @@ incomplete concrete VerbRomance of Verb =
SlashV2S v s =
mkVPSlash v.c2
(insertExtrapos
(\\b => s.s ! Indic) ---- mood
(\\b => conjThat ++ s.s ! Indic) ---- mood
(predV v)) ;
SlashV2Q v q =