summaryrefslogtreecommitdiff
path: root/examples/uusisuomi/Declensions.gf
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-01-04 17:54:20 +0000
committeraarne <aarne@cs.chalmers.se>2008-01-04 17:54:20 +0000
commitca409d0047f201c2850664a3054d3337ef1ec6f7 (patch)
tree1e1db239545491202fbe3cc3fc140380570320db /examples/uusisuomi/Declensions.gf
parentd5500498736ff9cdce7d23e336357742c5799825 (diff)
started adjectives in uusisuomi
Diffstat (limited to 'examples/uusisuomi/Declensions.gf')
-rw-r--r--examples/uusisuomi/Declensions.gf122
1 files changed, 95 insertions, 27 deletions
diff --git a/examples/uusisuomi/Declensions.gf b/examples/uusisuomi/Declensions.gf
index cd7374022..6bcd1ae06 100644
--- a/examples/uusisuomi/Declensions.gf
+++ b/examples/uusisuomi/Declensions.gf
@@ -10,7 +10,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
let
lujuu = init lujuus ;
lujuuksi = lujuu + "ksi" ;
- a = vowelHarmony (last lujuu) ;
+ a = vowHarmony (last lujuu) ;
in nForms10
lujuus (lujuu + "den") (lujuu + "tt" + a)
(lujuu + "ten" + a) (lujuu + "teen")
@@ -19,7 +19,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dNainen : Str -> NForms = \nainen ->
let
- a = vowelHarmony nainen ;
+ a = vowHarmony nainen ;
nais = Predef.tk 3 nainen + "s"
in nForms10
nainen (nais + "en") (nais + "t" + a) (nais + "en" + a) (nais + "een")
@@ -28,7 +28,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dPuu : Str -> NForms = \puu ->
let
- a = vowelHarmony puu ;
+ a = vowHarmony puu ;
pui = init puu + "i" ;
u = last puu ;
in nForms10
@@ -39,7 +39,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dSuo : Str -> NForms = \suo ->
let
o = last suo ;
- a = vowelHarmony o ;
+ a = vowHarmony o ;
soi = Predef.tk 2 suo + o + "i" ;
in nForms10
suo (suo + "n") (suo + "t" + a) (suo + "n" + a) (suo + "h" + o + "n")
@@ -59,7 +59,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dKaunis : Str -> NForms = \kaunis ->
let
- a = vowelHarmony kaunis ;
+ a = vowHarmony kaunis ;
kaunii = init kaunis + "i" ;
in nForms10
kaunis (kaunii + "n") (kaunis + "t" + a)
@@ -70,7 +70,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dLiitin : (_,_ : Str) -> NForms = \liitin,liittimen ->
let
- a = vowelHarmony liitin ;
+ a = vowHarmony liitin ;
liittim = Predef.tk 2 liittimen ;
in nForms10
liitin (liittim + "en") (liitin + "t" + a)
@@ -81,7 +81,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dOnneton : Str -> NForms = \onneton ->
let
- a = vowelHarmony onneton ;
+ a = vowHarmony onneton ;
onnettom = Predef.tk 2 onneton + "t" + last (init onneton) + "m" ;
in nForms10
onneton (onnettom + a + "n") (onneton + "t" + a)
@@ -94,7 +94,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dUkko : (_,_ : Str) -> NForms = \ukko,ukon ->
let
o = last ukko ;
- a = vowelHarmony o ;
+ a = vowHarmony o ;
ukk = init ukko ;
uko = init ukon ;
uk = init uko ;
@@ -147,7 +147,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dArpi : (_,_ : Str) -> NForms = \arpi,arven ->
let
- a = vowelHarmony arpi ;
+ a = vowHarmony arpi ;
arp = init arpi ;
arv = Predef.tk 2 arven ;
ar = init arp ;
@@ -172,7 +172,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dRae : (_,_ : Str) -> NForms = \rae,rakeen ->
let
- a = vowelHarmony rae ;
+ a = vowHarmony rae ;
rakee = init rakeen ;
rakei = init rakee + "i" ;
raetta = case <rae : Str> of {
@@ -193,7 +193,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dPaatti : (_,_ : Str) -> NForms = \paatti,paatin ->
let
- a = vowelHarmony paatti ;
+ a = vowHarmony paatti ;
paatte = init paatti + "e" ;
paati = init paatin ;
paate = init paati + "e" ;
@@ -204,7 +204,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dTohtori : (_ : Str) -> NForms = \tohtori ->
let
- a = vowelHarmony tohtori ;
+ a = vowHarmony tohtori ;
tohtor = init tohtori ;
in nForms10
tohtori (tohtori+"n") (tohtori + a) (tohtori + "n" + a) (tohtori + "in")
@@ -213,7 +213,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dPiennar : (_,_ : Str) -> NForms = \piennar,pientaren ->
let
- a = vowelHarmony piennar ;
+ a = vowHarmony piennar ;
pientar = Predef.tk 2 pientaren ;
in nForms10
piennar pientaren (piennar +"t" + a)
@@ -223,7 +223,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dUnix : (_ : Str) -> NForms = \unix ->
let
- a = vowelHarmony unix ;
+ a = vowHarmony unix ;
unixi = unix + "i" ;
unixe = unix + "e" ;
in nForms10
@@ -233,7 +233,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dNukke : (_,_ : Str) -> NForms = \nukke,nuken ->
let
- a = vowelHarmony nukke ;
+ a = vowHarmony nukke ;
nukk = init nukke ;
nuke = init nuken ;
in
@@ -244,7 +244,7 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
dJalas : Str -> NForms = \jalas ->
let
- a = vowelHarmony jalas ;
+ a = vowHarmony jalas ;
jalaks = init jalas + "ks" ;
jalaksi = jalaks + "i" ;
in nForms10
@@ -281,6 +281,29 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
(SDP + ":" + c.p4) (SDP + ":" + c.p5) (SDP + ":" + c.p6)
(SDP + ":" + c.p7) (SDP + ":" + c.p8) (SDP + ":" + c.p9) ;
+-- for adjective comparison
+
+ dSuurempi : Str -> NForms = \suurempi ->
+ let
+ a = vowHarmony suurempi ;
+ suuremp = init suurempi ;
+ suuremm = Predef.tk 2 suurempi + "m" ;
+ in nForms10
+ suurempi (suuremm + a + "n") (suuremp + a + a)
+ (suuremp + a + "n" + a) (suuremp + a + a + "n")
+ (suuremp + "ien") (suurempi + a)
+ (suurempi + "n" + a) (suuremm + "iss" + a) (suurempi + "in") ;
+
+ dSuurin : Str -> NForms = \suurin ->
+ let
+ a = vowHarmony suurin ;
+ suurimm = init suurin + "mm" ;
+ suurimp = init suurimm + "p" ;
+ in nForms10
+ suurin (suurimm + a + "n") (suurin + "t" + a)
+ (suurimp + a + "n" + a) (suurimp + a + a + "n")
+ (suurimp + "ien") (suurimp + "i" + a)
+ (suurimp + "in" + a) (suurimm + "iss" + a) (suurimp + "iin") ;
-------------------
@@ -365,8 +388,60 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
lock_N = <>
} ;
+ n2nforms : N -> NForms = \ukko -> table {
+ 0 => ukko.s ! NCase Sg Nom ;
+ 1 => ukko.s ! NCase Sg Gen ;
+ 2 => ukko.s ! NCase Sg Part ;
+ 3 => ukko.s ! NCase Sg Ess ;
+ 4 => ukko.s ! NCase Sg Illat ;
+ 5 => ukko.s ! NCase Pl Gen ;
+ 6 => ukko.s ! NCase Pl Part ;
+ 7 => ukko.s ! NCase Pl Ess ;
+ 8 => ukko.s ! NCase Pl Iness ;
+ 9 => ukko.s ! NCase Pl Illat
+ } ;
+
+-- Adjective forms
+
+ AForms : Type = {
+ posit : NForms ;
+ compar : NForms ;
+ superl : NForms ;
+ adv_posit, adv_compar, adv_superl : Str ;
+ } ;
+
+ aForms2A : AForms -> A = \afs -> {
+ s = table {
+ Posit => table {
+ AN n => (nForms2N afs.posit).s ! n ;
+ AAdv => afs.adv_posit
+ } ;
+ Compar => table {
+ AN n => (nForms2N afs.compar).s ! n ;
+ AAdv => afs.adv_compar
+ } ;
+ Superl => table {
+ AN n => (nForms2N afs.superl).s ! n ;
+ AAdv => afs.adv_superl
+ }
+ } ;
+ lock_A = <>
+ } ;
+
+ nforms2aforms : NForms -> AForms = \nforms ->
+ let
+ suure = init (nforms ! 1) ;
+ suur = Predef.tk 4 (nforms ! 8) ;
+ in {
+ posit = nforms ;
+ compar = dSuurempi (suure ++ "mpi") ;
+ superl = dSuurin (suur ++ "in") ;
+ adv_posit = suure + "sti" ;
+ adv_compar = suure + "mmin" ;
+ adv_superl = suur + "immin" ;
+ } ;
---- This is used to analyse nouns "rae", "hake", "rengas", "laidun", etc.
+-- This is used to analyse nouns "rae", "hake", "rengas", "laidun", etc.
strongGrade : Str -> Str = \hanke ->
let
@@ -388,16 +463,9 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
ase => ase
} ;
- part2casePl : Str -> Str * Str * Str * Str = \savia -> case savia of {
- sav + "i" + a@("a" | "ä") =>
- <sav + "ien", sav + "in" + a, sav + "iss" + a, sav + "iin"> ;
- elio + "it" + a@("a" | "ä") =>
- <elio + "iden", elio + "in" + a, elio + "iss" + a, elio + "ihin"> ;
- maal + "ej" + a@("a" | "ä") =>
- <maal + "ien", maal + "ein" + a, maal + "eiss" + a, maal + "eihin"> ;
- talo + "j" + a@("a" | "ä") =>
- <talo + "jen", talo + "in" + a, talo + "iss" + a, talo + "ihin"> ;
- _ => Predef.error (["impossible plural partitive"] ++ savia)
+ vowHarmony : Str -> Str = \s -> case s of {
+ _ + ("a" | "o" | "u") + _ => "a" ;
+ _ => "ä"
} ;
}