Files
gf-core/examples/uusisuomi/Conjugations.gf
2008-01-06 12:16:07 +00:00

285 lines
7.3 KiB
Plaintext

--# -path=.:alltenses
resource Conjugations = ResFin ** open MorphoFin,Declensions,CatFin,Prelude in {
flags optimize=all ;
oper
cHukkua : (_,_ : Str) -> VForms = \hukkua,hukun ->
let
a = last hukkua ;
hukku = init hukkua ;
huku = init hukun ;
u = last huku ;
i = case u of {
"e" | "i" => [] ;
_ => u
} ;
y = uyHarmony a ;
hukkui = init hukku + i + "i" ;
hukui = init huku + i + "i" ;
in vForms12
hukkua
hukun
(hukku + u)
(hukku + "v" + a + "t")
(hukku + "k" + a + a)
(huku + "t" + a + a + "n")
(hukui + "n")
hukkui
(hukkui + "si")
(hukku + "n" + y + "t")
(huku + "tt" + y)
(hukku + "nee") ;
cOttaa : (_,_,_,_ : Str) -> VForms = \ottaa,otan,otin,otti ->
let
a = last ottaa ;
aa = a + a ;
u = uyHarmony a ;
ota = init otan ;
otta = init ottaa ;
ote = init ota + "e" ;
in vForms12
ottaa
otan
ottaa
(otta + "v" + a + "t")
(otta + "k" + aa)
(ote + "t" + aa + "n")
otin
otti
(otta + "isi")
(otta + "n" + u + "t")
(ote + "tt" + u)
(otta + "nee") ;
cJuosta : (_,_ : Str) -> VForms = \juosta,juoksen ->
let
a = last juosta ;
juos = Predef.tk 2 juosta ;
juoss = juos + last juos ;
juokse = init juoksen ;
juoks = init juokse ;
u = uyHarmony a ;
juoksi = juoks + "i" ;
in vForms12
juosta
(juoksen)
(juokse + "e")
(juokse + "v" + a + "t")
(juos + "k" + a + a)
(juosta + a + "n")
(juoks + "in")
(juoks + "i")
(juoks + "isi")
(juoss + u + "t")
(juos + "t" + u)
(juoss + "ee") ;
cJuoda : (_ : Str) -> VForms = \juoda ->
let
a = last juoda ;
juo = Predef.tk 2 juoda ;
joi = case last juo of {
"i" => juo ; -- naida
o => Predef.tk 2 juo + o + "i"
} ;
u = uyHarmony a ;
in vForms12
juoda
(juo + "n")
(juo)
(juo + "v" + a + "t")
(juo + "k" + a + a)
(juoda + a + "n")
(joi + "n")
(joi)
(joi + "si")
(juo + "n" + u + "t")
(juo + "t" + u)
(juo + "nee") ;
cPudota : (_,_ : Str) -> VForms = \pudota,putosi ->
let
a = last pudota ;
pudot = init pudota ;
pudo = init pudot ;
ai = case last pudo of {
"a" | "ä" => <[], "i"> ;
_ => <a, a + "i">
} ;
puto = Predef.tk 2 putosi ;
u = uyHarmony a ;
in vForms12
pudota
(puto + a + "n")
(puto + ai.p1 + a)
(puto + a + "v" + a + "t")
(pudot + "k" + a + a)
(pudot + a + a + "n")
(puto + "sin")
(puto + "si")
(puto + ai.p2 + "si")
(pudo + "nn" + u + "t")
(pudot + "t" + u)
(pudo + "nnee") ;
cHarkita : (_ : Str) -> VForms = \harkita ->
let
a = last harkita ;
harkit = init harkita ;
harki = init harkit ;
u = uyHarmony a ;
in vForms12
harkita
(harkit + "sen")
(harkit + "se")
(harkit + "sev" + a + "t")
(harkit + "k" + a + a)
(harkit + a + a + "n")
(harkit + "sin")
(harkit + "si")
(harkit + "sisi")
(harki + "nn" + u + "t")
(harkit + "t" + u)
(harki + "nnee") ;
cValjeta : (_,_ : Str) -> VForms = \valjeta,valkeni ->
let
a = last valjeta ;
valjet = init valjeta ;
valken = init valkeni ;
valje = init valjet ;
u = uyHarmony a ;
in vForms12
valjeta
(valken + "en")
(valken + "ee")
(valken + "ev" + a + "t")
(valjet + "k" + a + a)
(valjet + a + a + "n")
(valken + "in")
(valken + "i")
(valken + "isi")
(valje + "nn" + u + "t")
(valjet + "t" + u)
(valje + "nnee") ;
cKuunnella : (_,_ : Str) -> VForms = \kuunnella,kuuntelin ->
let
a = last kuunnella ;
kuunnel = Predef.tk 2 kuunnella ;
kuuntel = Predef.tk 2 kuuntelin ;
u = uyHarmony a ;
in vForms12
kuunnella
(kuuntel + "en")
(kuuntel + "ee")
(kuuntel + "ev" + a + "t")
(kuunnel + "k" + a + a)
(kuunnella + a + "n")
(kuuntel + "in")
(kuuntel + "i")
(kuuntel + "isi")
(kuunnel + "l" + u + "t")
(kuunnel + "t" + u)
(kuunnel + "lee") ;
-- auxiliaries
uyHarmony : Str -> Str = \a -> case a of {
"a" => "u" ;
_ => "y"
} ;
VForms : Type = Predef.Ints 11 => Str ;
vForms12 : (x1,_,_,_,_,_,_,_,_,_,_,x12 : Str) -> VForms =
\olla,olen,on,ovat,olkaa,ollaan,olin,oli,olisi,ollut,oltu,lienee ->
table {
0 => olla ;
1 => olen ;
2 => on ;
3 => ovat ;
4 => olkaa ;
5 => ollaan ;
6 => olin ;
7 => oli ;
8 => olisi ;
9 => ollut ;
10 => oltu ;
11 => lienee
} ;
vforms2V : VForms -> V = \vh ->
let
tulla = vh ! 0 ;
tulen = vh ! 1 ;
tulee = vh ! 2 ;
tulevat = vh ! 3 ;
tulkaa = vh ! 4 ;
tullaan = vh ! 5 ;
tulin = vh ! 6 ;
tuli = vh ! 7 ;
tulisi = vh ! 8 ;
tullut = vh ! 9 ;
tultu = vh ! 10 ;
tullun = vh ! 11 ;
tule_ = init tulen ;
tuli_ = init tulin ;
a = last tulkaa ;
tulko = Predef.tk 2 tulkaa + (ifTok Str a "a" "o" "ö") ;
tulkoo = tulko + last tulko ;
tullee = Predef.tk 2 tullut + "ee" ;
tulleen = (nForms2N (dRae tullut (tullee + "n"))).s ;
tullu : Str = weakGrade tultu ;
tullun = (nForms2N (dUkko tultu (tullu + "n"))).s ;
tulema = Predef.tk 3 tulevat + "m" + a ;
vat = "v" + a + "t"
in
{s = table {
Inf Inf1 => tulla ;
Presn Sg P1 => tule_ + "n" ;
Presn Sg P2 => tule_ + "t" ;
Presn Sg P3 => tulee ;
Presn Pl P1 => tule_ + "mme" ;
Presn Pl P2 => tule_ + "tte" ;
Presn Pl P3 => tulevat ;
Impf Sg P1 => tuli_ + "n" ; --# notpresent
Impf Sg P2 => tuli_ + "t" ; --# notpresent
Impf Sg P3 => tuli ; --# notpresent
Impf Pl P1 => tuli_ + "mme" ; --# notpresent
Impf Pl P2 => tuli_ + "tte" ; --# notpresent
Impf Pl P3 => tuli + vat ; --# notpresent
Condit Sg P1 => tulisi + "n" ; --# notpresent
Condit Sg P2 => tulisi + "t" ; --# notpresent
Condit Sg P3 => tulisi ; --# notpresent
Condit Pl P1 => tulisi + "mme" ; --# notpresent
Condit Pl P2 => tulisi + "tte" ; --# notpresent
Condit Pl P3 => tulisi + vat ; --# notpresent
Imper Sg => tule_ ;
Imper Pl => tulkaa ;
ImperP3 Sg => tulkoo + "n" ;
ImperP3 Pl => tulkoo + "t" ;
ImperP1Pl => tulkaa + "mme" ;
ImpNegPl => tulko ;
Pass True => tullaan ;
Pass False => Predef.tk 2 tullaan ;
PastPartAct (AN n) => tulleen ! n ;
PastPartAct AAdv => tullee + "sti" ;
PastPartPass (AN n) => tullun ! n ;
PastPartPass AAdv => tullu + "sti" ;
Inf Inf3Iness => tulema + "ss" + a ;
Inf Inf3Elat => tulema + "st" + a ;
Inf Inf3Illat => tulema + a + "n" ;
Inf Inf3Adess => tulema + "ll" + a ;
Inf Inf3Abess => tulema + "tt" + a
} ;
sc = NPCase Nom ;
lock_V = <>
} ;
}