summaryrefslogtreecommitdiff
path: root/examples/uusisuomi/Conjugations.gf
diff options
context:
space:
mode:
Diffstat (limited to 'examples/uusisuomi/Conjugations.gf')
-rw-r--r--examples/uusisuomi/Conjugations.gf284
1 files changed, 284 insertions, 0 deletions
diff --git a/examples/uusisuomi/Conjugations.gf b/examples/uusisuomi/Conjugations.gf
new file mode 100644
index 000000000..c4448a7ad
--- /dev/null
+++ b/examples/uusisuomi/Conjugations.gf
@@ -0,0 +1,284 @@
+--# -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 = <>
+ } ;
+}
+