forked from GitHub/gf-core
experiment with Finnish morphology
This commit is contained in:
23
examples/uusisuomi/Makefile
Normal file
23
examples/uusisuomi/Makefile
Normal file
@@ -0,0 +1,23 @@
|
||||
LEX=Omat
|
||||
|
||||
all: tests
|
||||
|
||||
gf-files:
|
||||
runghc MkLex.hs 0 > $(LEX)Abs.gf
|
||||
runghc MkLex.hs 1 > $(LEX)1.gf
|
||||
runghc MkLex.hs 2 > $(LEX)2.gf
|
||||
runghc MkLex.hs 3 > $(LEX)3.gf
|
||||
runghc MkLex.hs 4 > $(LEX)4.gf
|
||||
|
||||
experiments: gf-files
|
||||
echo "gt -cat=Utt | l | wf exper1-$(LEX).txt" | gf $(LEX)1.gf
|
||||
echo "gt -cat=Utt | l | wf exper2-$(LEX).txt" | gf $(LEX)2.gf
|
||||
echo "gt -cat=Utt | l | wf exper3-$(LEX).txt" | gf $(LEX)3.gf
|
||||
echo "gt -cat=Utt | l | wf exper4-$(LEX).txt" | gf $(LEX)4.gf
|
||||
|
||||
tests: experiments
|
||||
runghc MyDiff.hs correct-$(LEX).txt exper1-$(LEX).txt >diff1.txt
|
||||
runghc MyDiff.hs correct-$(LEX).txt exper2-$(LEX).txt >diff2.txt
|
||||
runghc MyDiff.hs correct-$(LEX).txt exper3-$(LEX).txt >diff3.txt
|
||||
runghc MyDiff.hs correct-$(LEX).txt exper4-$(LEX).txt >diff4.txt
|
||||
wc -l diff?.txt
|
||||
85
examples/uusisuomi/MkLex.hs
Normal file
85
examples/uusisuomi/MkLex.hs
Normal file
@@ -0,0 +1,85 @@
|
||||
module Main where
|
||||
|
||||
import System
|
||||
import Char
|
||||
|
||||
-- generate Finnish lexicon implementations with 1 or more
|
||||
-- characteristic arguments
|
||||
-- usage: runghc MkLex.hs 3
|
||||
|
||||
main = do
|
||||
i:_ <- getArgs
|
||||
ss <- readFile src >>= return . filter (not . (all isSpace)) . lines
|
||||
initiate i
|
||||
mapM_ (mkLex (read i) . uncurry (++)) (zip nums ss)
|
||||
putStrLn "}"
|
||||
|
||||
--src = "correct-NSK.txt"
|
||||
--tgt = "NSK"
|
||||
src = "correct-Omat.txt"
|
||||
tgt = "Omat"
|
||||
|
||||
initiate i = mapM_ putStrLn [
|
||||
"--# -path=.:alltenses",
|
||||
"",
|
||||
header i,
|
||||
""
|
||||
]
|
||||
where
|
||||
header i = case i of
|
||||
"0" -> "abstract " ++ tgt ++ "Abs = Cat ** {\n\nfun testN : N -> Utt ;\n"
|
||||
_ -> unlines [
|
||||
"concrete " ++ tgt ++ i ++
|
||||
" of " ++ tgt ++ "Abs = CatFin ** open Nominal, ResFin, Prelude in {",
|
||||
"",
|
||||
"lin testN talo = let t = talo.s in ss (",
|
||||
" t ! NCase Sg Nom ++",
|
||||
" t ! NCase Sg Gen ++",
|
||||
" t ! NCase Sg Part ++",
|
||||
" t ! NCase Sg Ess ++",
|
||||
" t ! NCase Sg Illat ++",
|
||||
" t ! NCase Pl Gen ++",
|
||||
" t ! NCase Pl Part ++",
|
||||
" t ! NCase Pl Ess ++",
|
||||
" t ! NCase Pl Iness ++",
|
||||
" t ! NCase Pl Illat",
|
||||
" ) ;"
|
||||
]
|
||||
|
||||
nums = map prt [1 ..] where
|
||||
prt i = (if i < 10 then "0" else "") ++ show i ++ ". "
|
||||
|
||||
mkLex 0 line = case words line of
|
||||
num:sana:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "fun " ++ nimi ++ "_N : N ;"
|
||||
_ -> return ()
|
||||
|
||||
mkLex 1 line = case words line of
|
||||
num:sana:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "lin " ++ nimi ++ "_N = mk1N \"" ++ sana ++ "\" ;"
|
||||
_ -> return ()
|
||||
|
||||
mkLex 2 line = case words line of
|
||||
num:sana:sanan:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "lin " ++ nimi ++
|
||||
"_N = mk2N \"" ++ sana ++ "\" \"" ++ sanan ++ "\" ;"
|
||||
_ -> return ()
|
||||
|
||||
mkLex 3 line = case words line of
|
||||
num:sana:sanan:_:_:_:_:sanoja:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "lin " ++ nimi ++
|
||||
"_N = mk3N \"" ++ sana ++ "\" \"" ++ sanan ++ "\" \"" ++ sanoja ++ "\" ;"
|
||||
_ -> return ()
|
||||
|
||||
mkLex 4 line = case words line of
|
||||
num:sana:sanan:sanaa:_:_:_:sanoja:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "lin " ++ nimi ++
|
||||
"_N = mk4N \"" ++ sana ++ "\" \"" ++ sanan ++
|
||||
"\" \"" ++ sanaa ++ "\" \"" ++ sanoja ++ "\" ;"
|
||||
_ -> return ()
|
||||
|
||||
25
examples/uusisuomi/MyDiff.hs
Normal file
25
examples/uusisuomi/MyDiff.hs
Normal file
@@ -0,0 +1,25 @@
|
||||
module Main where
|
||||
|
||||
import System
|
||||
|
||||
-- compare lines word-by-word, returning difference pairs with their positions
|
||||
|
||||
main = do
|
||||
x:y:_ <- getArgs
|
||||
old <- readFile x >>= return . lines
|
||||
new <- readFile y >>= return . lines
|
||||
mapM_ comp (zip old new)
|
||||
|
||||
comp (ws1,ws2) = do
|
||||
let diffs = [form ++ ":" ++ w1 ++ "-" ++ w2 |
|
||||
(form,(w1,w2)) <- zip forms (zip (words ws1) (words ws2)), diff w2 w1]
|
||||
putStr $ unwords diffs
|
||||
if null diffs then return () else putStrLn ""
|
||||
|
||||
forms = map show [1..]
|
||||
|
||||
diff w ws = notElem w (chop ws) where
|
||||
chop cs = case span (/='/') cs of
|
||||
([],_) -> []
|
||||
(w1,ww) -> w1:chop (drop 1 ww)
|
||||
|
||||
416
examples/uusisuomi/Nominal.gf
Normal file
416
examples/uusisuomi/Nominal.gf
Normal file
@@ -0,0 +1,416 @@
|
||||
--# -path=.:alltenses
|
||||
|
||||
resource Nominal = ResFin ** open MorphoFin,CatFin,Prelude in {
|
||||
|
||||
flags optimize=all ;
|
||||
|
||||
oper
|
||||
|
||||
-- mkN = overload {
|
||||
mk1N : (talo : Str) -> N = \s -> nForms2N (nForms1 s) ;
|
||||
mk2N : (talo,talon : Str) -> N = \s,t -> nForms2N (nForms2 s t) ;
|
||||
mk3N : (talo,talon,taloja : Str) -> N = \s,t,u -> nForms2N (nForms3 s t u) ;
|
||||
mk4N : (talo,talon,taloa,taloja : Str) -> N = \s,t,u,v ->
|
||||
nForms2N (nForms4 s t u v) ;
|
||||
-- } ;
|
||||
|
||||
nForms1 : Str -> NForms = \ukko ->
|
||||
let
|
||||
a = vowelHarmony ukko ;
|
||||
ukk = init ukko ;
|
||||
uko = weakGrade ukko ;
|
||||
rake = Nominal.strongGrade ukko ;
|
||||
renka = Nominal.strongGrade (init ukko) ;
|
||||
o = last ukko ;
|
||||
in
|
||||
case ukko of {
|
||||
_ + ("us" | "ys") =>
|
||||
let
|
||||
lujuus = ukko ;
|
||||
lujuu = ukk ;
|
||||
lujuuksi = ukk + "ksi"
|
||||
in nForms10
|
||||
lujuus (lujuu + "den") (lujuu + "tt" + a)
|
||||
(lujuu + "ten" + a) (lujuu + "teen")
|
||||
(lujuuksi + "en") (lujuuksi + a)
|
||||
(lujuuksi + "n" + a) (lujuuksi + "ss" + a) (lujuuksi + "in") ;
|
||||
_ + "nen" =>
|
||||
let
|
||||
nainen = ukko ;
|
||||
nais = Predef.tk 3 ukko + "s"
|
||||
in nForms10
|
||||
nainen (nais + "en") (nais + "t" + a) (nais + "en" + a) (nais + "een")
|
||||
(nais + "ten") (nais + "i" + a)
|
||||
(nais + "in" + a) (nais + "iss" + a) (nais + "iin") ;
|
||||
_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö") =>
|
||||
let
|
||||
puu = ukko ;
|
||||
pui = ukk + "i" ;
|
||||
u = o ;
|
||||
in nForms10
|
||||
puu (puu + "n") (puu + "t" + a) (puu + "n" + a) (puu + "h" + u + "n")
|
||||
(pui + "den") (pui + "t" + a)
|
||||
(pui + "n" + a) (pui + "ss" + a) (pui + "hin") ;
|
||||
_ + ("ie" | "uo" | "yö") =>
|
||||
let
|
||||
suo = ukko ;
|
||||
soi = init ukk + o + "i" ;
|
||||
in nForms10
|
||||
suo (suo + "n") (suo + "t" + a) (suo + "n" + a) (suo + "h" + o + "n")
|
||||
(soi + "den") (soi + "t" + a)
|
||||
(soi + "n" + a) (soi + "ss" + a) (soi + "hin") ;
|
||||
_ + ("ea" | "eä") =>
|
||||
let
|
||||
korkea = ukko ;
|
||||
korke = init ukko ;
|
||||
in nForms10
|
||||
korkea (korkea + "n") (korkea + a)
|
||||
(korkea + "n" + a) (korkea + a + "n")
|
||||
(korke + "iden") (korke + "it" + a)
|
||||
(korke + "in" + a) (korke + "iss" + a)
|
||||
(korke + "isiin") ; --- NSSK: korkeihin
|
||||
_ + "is" =>
|
||||
let
|
||||
kaunis = ukko ;
|
||||
kaunii = init kaunis + "i" ;
|
||||
in nForms10
|
||||
kaunis (kaunii + "n") (kaunis + "t" + a)
|
||||
(kaunii + "n" + a) (kaunii + "seen")
|
||||
(kaunii + "den") (kaunii + "t" + a)
|
||||
(kaunii + "n" + a) (kaunii + "ss" + a)
|
||||
(kaunii + "siin") ;
|
||||
|
||||
_ + ("i" | "u") + "n" => -- liitin,laidun
|
||||
let
|
||||
liitin = ukko ;
|
||||
liittim = renka + "m" ;
|
||||
in nForms10
|
||||
liitin (liittim + "en") (liitin + "t" + a)
|
||||
(liittim + "en" + a) (liittim + "een")
|
||||
(liittim + "ien") (liittim + "i" + a)
|
||||
(liittim + "in" + a) (liittim + "iss" + a)
|
||||
(liittim + "iin") ;
|
||||
|
||||
onne + "t" + on@("on" | "ön") =>
|
||||
let
|
||||
onneton = ukko ;
|
||||
onnettom = onne + "tt" + init on + "m" ;
|
||||
in nForms10
|
||||
onneton (onnettom + a + "n") (onneton + "t" + a)
|
||||
(onnettom + a + "n" + a) (onnettom + a + a + "n")
|
||||
(onnettom + "ien") (onnettom + "i" + a)
|
||||
(onnettom + "in" + a) (onnettom + "iss" + a)
|
||||
(onnettom + "iin") ;
|
||||
|
||||
_ + ("ut" | "yt") => -- olut,kätkyt
|
||||
nForms_rae ukko (ukk + "en" + a) ;
|
||||
_ + ("as" | "äs") => -- rengas,rypäs
|
||||
nForms_rae ukko (renka + a + "n" + a) ;
|
||||
_ + ("ar" | "är") => -- piennar,tytär
|
||||
nForms_rae ukko (renka + "ren" + a) ;
|
||||
_ + "e" =>
|
||||
nForms_rae ukko (rake + "en" + a) ;
|
||||
|
||||
_ + ("a" | "o" | "u" | "y" | "ä" | "ö") =>
|
||||
nForms_ukko ukko (uko + "n") ;
|
||||
|
||||
_ + "i" =>
|
||||
let
|
||||
paatte = ukk + "e" ;
|
||||
paate = init uko + "e" ;
|
||||
in nForms10
|
||||
ukko (uko + "n") (ukko + a) (ukko + "n" + a) (ukko + "in")
|
||||
(ukko + "en") (paatte + "j" + a)
|
||||
(paatte + "in" + a) (paate + "iss" + a) (paatte + "ihin") ;
|
||||
_ + "e" + ("l" | "n") =>
|
||||
let
|
||||
ahven = ukko ;
|
||||
in nForms10
|
||||
ahven (ahven + "en") (ahven +"t" + a)
|
||||
(ahven + "en" + a) (ahven + "een")
|
||||
(ahven + "ten") (ahven + "i" + a) (ahven + "in" + a)
|
||||
(ahven + "iss" + a) (ahven + "iin") ;
|
||||
_ =>
|
||||
let
|
||||
unixi = ukko + "i" ;
|
||||
unixe = ukko + "e" ;
|
||||
in nForms10
|
||||
ukko (unixi + "n") (unixi + a) (unixi + "n" + a) (unixi + "in")
|
||||
(unixi + "en") (unixe + "j" + a) (unixe + "in" + a)
|
||||
(unixe + "iss" + a) (unixe + "ihin")
|
||||
} ;
|
||||
|
||||
|
||||
nForms2 : (_,_ : Str) -> NForms = \ukko,ukon ->
|
||||
let
|
||||
a = vowelHarmony ukko ;
|
||||
ukk = init ukko ;
|
||||
ukot = nForms1 ukko ;
|
||||
in
|
||||
case <ukko,ukon> of {
|
||||
<_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö" |
|
||||
"ie" | "uo" | "yö"), _ + "n"> => ukot ; --- to protect these
|
||||
<_ + ("a" | "o" | "u" | "y" | "ä" | "ö"), _ + "n"> =>
|
||||
nForms_ukko ukko ukon ; -- auto,auton
|
||||
<arp + "i", arv + "en"> =>
|
||||
nForms_arpi ukko ukon (arp + "i" + a) ;
|
||||
<arp + "i", _ + "i" + ("a" | "ä")> => -- for b-w compat.
|
||||
nForms_arpi ukko (init (weakGrade ukko) + "en") ukon ;
|
||||
<terv + "e", terv + "een"> =>
|
||||
nForms_rae ukko (terv + "een" + a) ;
|
||||
<nukk + "e", nuk + "en"> =>
|
||||
nForms10
|
||||
ukko ukon (ukko + a) (nukk +"en" + a) (nukk + "een")
|
||||
(nukk + "ien") (nukk + "ej" + a) (nukk + "ein" + a)
|
||||
(nuk + "eiss" + a) (nukk + "eihin") ;
|
||||
<_ + "s", _ + "ksen"> => table {
|
||||
1 => ukon ;
|
||||
2 => ukko + "t" + a ;
|
||||
3 => ukk + "ksen" + a ;
|
||||
4 => ukk + "kseen" ;
|
||||
n => ukot ! n
|
||||
} ;
|
||||
<_,_ + "n"> => table {
|
||||
1 => ukon ;
|
||||
n => ukot ! n
|
||||
} ;
|
||||
<_,_ + ("a" | "ä")> => table { -- for b-w compat.
|
||||
5 => (part2casePl ukon).p1 ;
|
||||
6 => ukon ;
|
||||
n => ukot ! n
|
||||
} ;
|
||||
_ =>
|
||||
Predef.error (["second argument should end in n, not"] ++ ukon)
|
||||
} ;
|
||||
|
||||
nForms3 : (_,_,_ : Str) -> NForms = \ukko,ukon,ukkoja ->
|
||||
let
|
||||
ukot = nForms2 ukko ukon ;
|
||||
in
|
||||
case <ukko,ukon,ukkoja> of {
|
||||
<_ + "a" | "ä", _ + "n", _ + ("a" | "ä")> =>
|
||||
let ukkojen = part2casePl ukkoja in
|
||||
table {
|
||||
5 => ukkojen.p1 ;
|
||||
6 => ukkoja ;
|
||||
7 => ukkojen.p2 ;
|
||||
8 => ukkojen.p3 ;
|
||||
9 => ukkojen.p4 ;
|
||||
n => ukot ! n
|
||||
} ;
|
||||
<_,_ + "n", _ + ("a" | "ä")> =>
|
||||
let ukkojen = part2casePl ukkoja in
|
||||
table {
|
||||
5 => ukkojen.p1 ;
|
||||
6 => ukkoja ;
|
||||
n => ukot ! n
|
||||
} ;
|
||||
_ =>
|
||||
Predef.error
|
||||
(["last arguments should end in n and a/ä, not"] ++ ukon ++ ukkoja)
|
||||
} ;
|
||||
|
||||
nForms4 : (_,_,_,_ : Str) -> NForms = \ukko,ukon,ukkoa,ukkoja ->
|
||||
let
|
||||
ukot = nForms3 ukko ukon ukkoja ;
|
||||
in
|
||||
case <ukko,ukon,ukkoa,ukkoja> of {
|
||||
<_,_ + "n", _ + ("a" | "ä"), _ + ("a" | "ä")> =>
|
||||
table {
|
||||
2 => ukkoa ;
|
||||
n => ukot ! n
|
||||
} ;
|
||||
_ =>
|
||||
Predef.error
|
||||
(["last arguments should end in n, a/ä, and a/ä, not"] ++
|
||||
ukon ++ ukkoa ++ ukkoja)
|
||||
} ;
|
||||
|
||||
|
||||
-- auxiliary "declensions"
|
||||
|
||||
nForms_ukko : (_,_ : Str) -> NForms = \ukko,ukon ->
|
||||
let
|
||||
o = last ukko ;
|
||||
a = getHarmony o ;
|
||||
ukk = init ukko ;
|
||||
uko = init ukon ;
|
||||
uk = init uko ;
|
||||
ukkoja = case <ukko : Str> of {
|
||||
_ + "ä" => -- kylä,kyliä,kylien,kylissä,kyliin
|
||||
<ukk + "iä", ukk + "ien", ukk, uk, ukk + "iin"> ;
|
||||
_ + ("au" | "eu") + _ + "a" => -- kauhojen,seurojen
|
||||
<ukk + "oja",ukk + "ojen",ukk + "o", uk + "o", ukk + "oihin"> ;
|
||||
_ + ("o" | "u") + _ + "a" => -- pula,pulia,pulien,pulissa,puliin
|
||||
<ukk + "ia", ukk + "ien", ukk, uk, ukk + "iin"> ;
|
||||
_ + "a" => -- kala,kaloja,kalojen,-oissa,-oihin
|
||||
<ukk + "oja",ukk + "ojen",ukk + "o", uk + "o", ukk + "oihin"> ;
|
||||
_ => -- suku,sukuja,sukujen,-uissa,-uihin
|
||||
<ukko + "j" + a,ukko + "jen",ukko, uko, ukko + "ihin">
|
||||
} ;
|
||||
ukkoina = ukkoja.p3 + "in" + a ;
|
||||
ukoissa = ukkoja.p4 + "iss" + a ;
|
||||
in nForms10
|
||||
ukko ukon (ukko + a) (ukko + "n" + a) (ukko + o + "n")
|
||||
ukkoja.p2 ukkoja.p1
|
||||
ukkoina ukoissa ukkoja.p5 ;
|
||||
|
||||
|
||||
nForms_arpi : (_,_,_ : Str) -> NForms = \arpi,arven,arpia ->
|
||||
let
|
||||
a = last arpia ;
|
||||
arp = init arpi ;
|
||||
arv = Predef.tk 2 arven ;
|
||||
ar = init arp ;
|
||||
arpe = case last arp of {
|
||||
"s" => case last arv of {
|
||||
"d" | "l" | "n" | "r" => -- suden,sutta ; jälsi ; kansi ; hirsi
|
||||
<ar + "tt" + a, arpi + "en",arpi,ar + "t"> ;
|
||||
_ => -- kuusen,kuusta
|
||||
<arp + "t" + a,arp + "ten",arpi, arp> ---- suksi,suksen
|
||||
} ;
|
||||
"r" => -- suurta,suurten
|
||||
<arp + "t" + a,arp + "ten",arpi, arp>;
|
||||
"l" | "h" => -- tuulta,tuulien
|
||||
<arp + "t" + a,arp + "ien",arpi, arp>;
|
||||
_ => -- arpea,arpien,arvissa
|
||||
<arp + "e" + a,arp + "ien",arv+"i",arp>
|
||||
} ; ---- pieni,pientä; uni,unta
|
||||
in nForms10
|
||||
arpi arven arpe.p1 (arpe.p4 + "en" + a) (arpe.p4 + "een")
|
||||
arpe.p2 arpia
|
||||
(arp + "in" + a) (arpe.p3 + "ss" + a) (arp + "iin") ;
|
||||
|
||||
nForms_rae : (_,_ : Str) -> NForms = \rae,rakeena ->
|
||||
let
|
||||
a = last rakeena ;
|
||||
rakee = Predef.tk 2 rakeena ;
|
||||
rakei = init rakee + "i" ;
|
||||
raetta = case <rae : Str> of {
|
||||
_ + "e" =>
|
||||
<rae + "tt" + a, rakee + "seen"> ; -- raetta,rakeeseen
|
||||
_ + "s" =>
|
||||
<rae + "t" + a, rakee + "seen"> ; -- rengasta,renkaaseen
|
||||
_ + "t" =>
|
||||
<rae + "t" + a, rakee + "en"> ; -- olutta,olueen
|
||||
_ + "r" =>
|
||||
<rae + "t" + a, rakee + "en"> ; -- sisarta,sisareen
|
||||
_ => Predef.error (["expected ending e/t/s/r, found"] ++ rae)
|
||||
} ;
|
||||
in nForms10
|
||||
rae (rakee + "n") raetta.p1 (rakee + "n"+ a) raetta.p2
|
||||
(rakei + "den") (rakei + "t" + a)
|
||||
(rakei + "n" + a) (rakei + "ss" + a) (rakei + "siin") ; ---- sisariin
|
||||
|
||||
NForms : Type = Predef.Ints 9 => Str ;
|
||||
|
||||
nForms10 : (x1,_,_,_,_,_,_,_,_,x10 : Str) -> NForms =
|
||||
\Ukko,ukon,ukkoa,ukkona,ukkoon,
|
||||
ukkojen,ukkoja,ukkoina,ukoissa,ukkoihin -> table {
|
||||
0 => Ukko ;
|
||||
1 => ukon ;
|
||||
2 => ukkoa ;
|
||||
3 => ukkona ;
|
||||
4 => ukkoon ;
|
||||
5 => ukkojen ;
|
||||
6 => ukkoja ;
|
||||
7 => ukkoina ;
|
||||
8 => ukoissa ;
|
||||
9 => ukkoihin
|
||||
} ;
|
||||
|
||||
nForms2N : NForms -> N = \f ->
|
||||
let
|
||||
Ukko = f ! 0 ;
|
||||
ukon = f ! 1 ;
|
||||
ukkoa = f ! 2 ;
|
||||
ukkona = f ! 3 ;
|
||||
ukkoon = f ! 4 ;
|
||||
ukkojen = f ! 5 ;
|
||||
ukkoja = f ! 6 ;
|
||||
ukkoina = f ! 7 ;
|
||||
ukoissa = f ! 8 ;
|
||||
ukkoihin = f ! 9 ;
|
||||
a = last ukkoja ;
|
||||
uko = init ukon ;
|
||||
ukko = Predef.tk 2 ukkona ;
|
||||
ukkoi = Predef.tk 2 ukkoina ;
|
||||
ukoi = Predef.tk 3 ukoissa ;
|
||||
in
|
||||
{s = table {
|
||||
NCase Sg Nom => Ukko ;
|
||||
NCase Sg Gen => uko + "n" ;
|
||||
NCase Sg Part => ukkoa ;
|
||||
NCase Sg Transl => uko + "ksi" ;
|
||||
NCase Sg Ess => ukkona ;
|
||||
NCase Sg Iness => uko + ("ss" + a) ;
|
||||
NCase Sg Elat => uko + ("st" + a) ;
|
||||
NCase Sg Illat => ukkoon ;
|
||||
NCase Sg Adess => uko + ("ll" + a) ;
|
||||
NCase Sg Ablat => uko + ("lt" + a) ;
|
||||
NCase Sg Allat => uko + "lle" ;
|
||||
NCase Sg Abess => uko + ("tt" + a) ;
|
||||
|
||||
NCase Pl Nom => uko + "t" ;
|
||||
NCase Pl Gen => ukkojen ;
|
||||
NCase Pl Part => ukkoja ;
|
||||
NCase Pl Transl => ukoi + "ksi" ;
|
||||
NCase Pl Ess => ukkoina ;
|
||||
NCase Pl Iness => ukoissa ;
|
||||
NCase Pl Elat => ukoi + ("st" + a) ;
|
||||
NCase Pl Illat => ukkoihin ;
|
||||
NCase Pl Adess => ukoi + ("ll" + a) ;
|
||||
NCase Pl Ablat => ukoi + ("lt" + a) ;
|
||||
NCase Pl Allat => ukoi + "lle" ;
|
||||
NCase Pl Abess => ukoi + ("tt" + a) ;
|
||||
|
||||
NComit => ukkoi + "ne" ;
|
||||
NInstruct => ukoi + "n" ;
|
||||
|
||||
NPossNom _ => ukko ;
|
||||
NPossGen Sg => ukko ;
|
||||
NPossGen Pl => init ukkojen ;
|
||||
NPossTransl Sg => uko + "kse" ;
|
||||
NPossTransl Pl => ukoi + "kse" ;
|
||||
NPossIllat Sg => init ukkoon ;
|
||||
NPossIllat Pl => init ukkoihin
|
||||
} ;
|
||||
lock_N = <>
|
||||
} ;
|
||||
|
||||
|
||||
--- This is used to analyse nouns "rae", "hake", "rengas", "laidun", etc.
|
||||
|
||||
strongGrade : Str -> Str = \hanke ->
|
||||
let
|
||||
ha = Predef.tk 3 hanke ;
|
||||
nke = Predef.dp 3 hanke ;
|
||||
in
|
||||
ha + case nke of {
|
||||
"ng" + a => "nk" + a ;
|
||||
"nn" + e => "nt" + e ;
|
||||
"mm" + e => "mp" + e ;
|
||||
"rr" + e => "rt" + e ;
|
||||
"ll" + a => "lt" + a ;
|
||||
h@("h" | "l") + "j" + e => h + "k" + e ; -- pohje/lahje impossible
|
||||
("hk" | "sk" | "sp" | "st") + _ => nke ; -- viuhke,kuiske
|
||||
a + k@("k" | "p" | "t") + e@("e"|"a"|"ä"|"u"|"i") => a + k + k + e ;
|
||||
a + "d" + e@("e"|"a"|"ä"|"u"|"i") => a + "t" + e ;
|
||||
s + a@("a" | "ä") + "e" => s + a + "ke" ; -- säe, tae
|
||||
a + "v" + e@("e"|"a"|"ä"|"u"|"i") => a + "p" + e ; -- taive/toive imposs
|
||||
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)
|
||||
} ;
|
||||
|
||||
}
|
||||
164
examples/uusisuomi/correct-NSK.txt
Normal file
164
examples/uusisuomi/correct-NSK.txt
Normal file
@@ -0,0 +1,164 @@
|
||||
valo valon valoa valona valoon valojen valoja valoina valoissa valoihin
|
||||
|
||||
arvelu arvelun arvelua arveluna arveluun arvelujen arveluja arveluina arveluissa arveluihin
|
||||
|
||||
autio aution autiota autiona autioon autioiden autioita autioina autioissa autioihin
|
||||
|
||||
risti ristin ristiä ristinä ristiin ristien ristejä risteinä risteissä risteihin
|
||||
|
||||
paperi paperin paperia paperina paperiin papereiden papereita papereina papereissa papereihin
|
||||
|
||||
banaali banaalin banaalia banaalina banaaliin banaalien banaaleja banaaleina banaaleissa banaaleihin
|
||||
|
||||
kalsium kalsiumin kalsiumia kalsiumina kalsiumiin kalsiumien kalsiumeja kalsiumeina kalsiumeissa kalsiumeihin
|
||||
|
||||
lovi loven lovea lovena loveen lovien lovia lovina lovissa loviin
|
||||
|
||||
nalle nallen nallea nallena nalleen nallien nalleja nalleina nalleissa nalleihin
|
||||
|
||||
kala kalan kalaa kalana kalaan kalojen kaloja kaloina kaloissa kaloihin
|
||||
|
||||
koira koiran koiraa koirana koiraan koirien koiria koirina koirissa koiriin
|
||||
|
||||
matala matalan matalaa matalana matalaan matalien matalia matalina matalissa mataliin
|
||||
|
||||
asema aseman asemaa asemana asemaan asemien asemia asemina asemissa asemiin
|
||||
|
||||
kulkija kulkijan kulkijaa kulkijana kulkijaan kulkijoiden kulkijoita kulkijoina kulkijoissa kulkijoihin
|
||||
|
||||
karahka karahkan karahkaa karahkana karahkaan karahkojen karahkoja karahkoina karahkoissa karahkoihin
|
||||
|
||||
kantaja kantajan kantajaa kantajana kantajaan kantajien kantajia kantajina kantajissa kantajiin
|
||||
|
||||
peruna perunan perunaa perunana perunaan perunien perunia perunina perunissa peruniin
|
||||
|
||||
pasuuna pasuunan pasuunaa pasuunana pasuunaan pasuunojen pasuunoja pasuunoina pasuunoissa pasuunoihin
|
||||
|
||||
ainoa ainoan ainoata ainoana ainoaan ainoiden ainoita ainoina ainoissa ainoihin
|
||||
|
||||
herttua herttuan herttuaa herttuana herttuaan herttuoiden herttuoita herttuoina herttuoissa herttuoihin
|
||||
|
||||
korkea korkean korkeaa korkeana korkeaan korkeiden korkeita korkeina korkeissa korkeisiin/korkeihin
|
||||
|
||||
suurempi suuremman suurempaa suurempana suurempaan suurempien suurempia suurempina suuremmissa suurempiin
|
||||
|
||||
vapaa vapaan vapaata vapaana vapaaseen vapaiden vapaita vapaina vapaissa vapaisiin
|
||||
|
||||
tienoo tienoon tienoota tienoona tienoohon tienoiden tienoita tienoina tienoissa tienoihin
|
||||
|
||||
leikkuu leikkuun leikkuuta leikkuuna leikkuuhun leikkuiden leikkuita leikkuina leikkuissa leikkuihin
|
||||
|
||||
kamee kameen kameeta kameena kameehen/kameeseen kameiden kameita kameina kameissa kameihin/kameisiin
|
||||
|
||||
pii piin piitä piinä piihin piiden piitä piinä piissä piihin
|
||||
|
||||
maa maan maata maana maahan maiden maita maina maissa maihin
|
||||
|
||||
puu puun puuta puuna puuhun puiden puita puina puissa puihin
|
||||
|
||||
suo suon suota suona suohon soiden soita soina soissa soihin
|
||||
|
||||
bébé bébén bébétä bébénä bébéhen bébéiden bébéijä bébéinä bébéissä bébéihin
|
||||
|
||||
tuohi tuohen tuohta tuohena tuoheen tuohien tuohia tuohina tuohissa tuohiin
|
||||
|
||||
lohi lohen lohta lohena loheen lohien lohia lohina lohissa lohiin
|
||||
|
||||
lahti lahden lahtea lahtena lahteen lahtien lahtia lahtina lahdissa lahtiin
|
||||
|
||||
lumi lumen lunta lumena lumeen lumien lumia lumina lumissa lumiin
|
||||
|
||||
tuomi tuomen tuomea tuomena tuomeen tuomien tuomia tuomina tuomissa tuomiin
|
||||
|
||||
niemi niemen niemeä niemenä niemeen niemien niemiä nieminä niemissä niemiin
|
||||
|
||||
pieni pienen pientä pienenä pieneen pienten pieniä pieninä pienissä pieniin
|
||||
|
||||
nuori nuoren nuorta nuorena nuoreen nuorten nuoria nuorina nuorissa nuoriin
|
||||
|
||||
susi suden sutta sutena suteen susien susia susina susissa susiin
|
||||
|
||||
tosi toden totta totena toteen tosien tosia tosina tosissa tosiin
|
||||
|
||||
hirsi hirren hirttä hirtenä hirteen hirsien hirsiä hirsinä hirsissä hirsiin
|
||||
|
||||
jälsi jällen jälttä jältenä jälteen jälsien jälsiä jälsinä jälsissä jälsiin
|
||||
|
||||
kansi kannen kantta kantena kanteen kansien kansia kansina kansissa kansiin
|
||||
|
||||
lapsi lapsen lasta lapsena lapseen lasten/lapsien lapsia lapsina lapsissa lapsiin
|
||||
|
||||
hapsi hapsen hapsea hapsena hapseen hapsien hapsia hapsina hapsissa hapsiin
|
||||
|
||||
veitsi veitsen veistä veitsenä veitseen veisten/veitsien veitsiä veitsinä veitsissä veitsiin
|
||||
|
||||
peitsi peitsen peistä peitsenä peitseen peisten/peitsien peitsiä peitsinä peitsissä peitsiin
|
||||
|
||||
suksi suksen suksea suksena sukseen suksien suksia suksina suksissa suksiin
|
||||
|
||||
uksi uksen uksea uksena ukseen uksien uksia uksina uksissa uksiin
|
||||
|
||||
kaksi kahden kahta kahtena kahteen kaksien kaksia kaksina kaksissa kaksiin
|
||||
|
||||
sankari sankarin sankaria sankarina sankariin sankareiden sankareita sankareina sankareissa sankareihin
|
||||
|
||||
jumala jumalan jumalaa jumalana jumalaan jumalien jumalia jumalina jumalissa jumaliin
|
||||
|
||||
sisar sisaren sisarta sisarena sisareen sisarien sisaria sisarina sisarissa sisariin
|
||||
|
||||
ahven ahvenen ahventa ahvenena ahveneen ahventen/ahvenien ahvenia ahvenina ahvenissa ahveniin
|
||||
|
||||
uistin uistimen uistinta uistimena uistimeen uistimien uistimia uistimina uistimissa uistimiin
|
||||
|
||||
onneton onnettoman onnetonta onnettomana onnettomaan onnettomien onnettomia onnettomina onnettomissa onnettomiin
|
||||
|
||||
lämmin lämpimän lämmintä lämpimänä lämpimään lämpimien lämpimiä lämpiminä lämpimissä lämpimiin
|
||||
|
||||
pahin pahimman pahinta pahimpana pahimpaan pahimpien pahimpia pahimpina pahimmissa pahimpiin
|
||||
|
||||
vasen vasemman vasenta vasempana vasempaan vasempien vasempia vasempina vasemmissa vasempiin
|
||||
|
||||
muudan muudannen muudatta muudanna muudanteen muudansien muudansia muudansina muudansissa muudansiin
|
||||
|
||||
seitsemän seitsemän seitsemää seitsemänä seitsemään seitsemien seitsemiä seitseminä seitsemissä seitsemiin
|
||||
|
||||
hevonen hevosen hevosta hevosena hevoseen hevosten/hevosien hevosia hevosina hevosissa hevosiin
|
||||
|
||||
vastaus vastauksen vastausta vastauksena vastaukseen vastauksien vastauksia vastauksina vastauksissa vastauksiin
|
||||
|
||||
kalleus kalleuden kalleutta kalleutena kalleuteen kalleuksien kalleuksia kalleuksina kalleuksissa kalleuksiin
|
||||
|
||||
vieras vieraan vierasta vieraana vieraaseen vieraiden vieraita vieraina vieraissa vieraisiin/vieraihin
|
||||
|
||||
kirves kirveen kirvestä kirveenä kirveeseen kirvesten/kirveiden kirveitä kirveinä kirveissä kirveisiin/kirveihin
|
||||
|
||||
kauris kauriin kaurista kauriina kauriiseen kauriiden kauriita kauriina kauriissa kauriisiin
|
||||
|
||||
kaunis kauniin kaunista kauniina kauniiseen kauniiden kauniita kauniina kauniissa kauniisiin
|
||||
|
||||
koiras koiraan koirasta koiraana koiraaseen koiraiden koiraita koiraina koiraissa koiraisiin
|
||||
|
||||
uros uroon urosta uroina uroisiin urosten uroita uroina uroissa uroihin
|
||||
|
||||
mies miehen miestä miehenä mieheen miesten miehiä miehinä miehissä miehiin
|
||||
|
||||
airut airuen airutta airuena airueen airuiden airuita airuina airuissa airuisiin/airuihin
|
||||
|
||||
kevät kevään kevättä keväänä kevääseen keväiden keväitä keväinä keväissä keväihin/keväisiin
|
||||
|
||||
kahdeksan kahdeksan kahdeksaa kahdeksana kahdeksaan kahdeksien kahdeksia kahdeksina kahdeksissa kahdeksiin
|
||||
|
||||
tuhat tuhannen tuhatta tuhantena tuhanteen tuhansien tuhansia tuhansina tuhansissa tuhansiin
|
||||
|
||||
kuollut kuolleen kuollutta kuolleena kuolleeseen kuolleiden kuolleita kuolleina kuolleissa kuolleisiin
|
||||
|
||||
hame hameen hametta hameena hameeseen hameiden hameita hameina hameissa hameisiin/hameihin
|
||||
|
||||
terve terveen tervettä terveenä terveeseen terveiden terveitä terveinä terveissä terveisiin/terveihin
|
||||
|
||||
ori oriin oritta oriina oriiseen oritten oriita oriina oriissa oriihin
|
||||
|
||||
kiiru kiiruun kiirutta kiiruuna kiiruuseen kiiruiden kiiruita kiiruina kiiruissa kiiruihin
|
||||
|
||||
askel askelen askelta askelena askeleen askelten/askelien askelia askelina askelissa askeliin
|
||||
|
||||
188
examples/uusisuomi/correct-Omat.txt
Normal file
188
examples/uusisuomi/correct-Omat.txt
Normal file
@@ -0,0 +1,188 @@
|
||||
rakkaus rakkauden rakkautta rakkautena rakkauteen rakkauksien rakkauksia rakkauksina rakkauksissa rakkauksiin
|
||||
|
||||
hyvyys hyvyyden hyvyyttä hyvyytenä hyvyyteen hyvyyksien hyvyyksiä hyvyyksinä hyvyyksissä hyvyyksiin
|
||||
|
||||
nainen naisen naista naisena naiseen naisten naisia naisina naisissa naisiin
|
||||
|
||||
hyinen hyisen hyistä hyisenä hyiseen hyisten hyisiä hyisinä hyisissä hyisiin
|
||||
|
||||
maa maan maata maana maahan maiden maita maina maissa maihin
|
||||
|
||||
paluu paluun paluuta paluuna paluuhun paluiden paluita paluina paluissa paluihin
|
||||
|
||||
syy syyn syytä syynä syyhyn syiden syitä syinä syissä syihin
|
||||
|
||||
pii piin piitä piinä piihin piiden piitä piinä piissä piihin
|
||||
|
||||
tienoo tienoon tienoota tienoona tienoohon tienoiden tienoita tienoina tienoissa tienoihin
|
||||
|
||||
suo suon suota suona suohon soiden soita soina soissa soihin
|
||||
|
||||
yö yön yötä yönä yöhön öiden öitä öinä öissä öihin
|
||||
|
||||
tie tien tietä tienä tiehen teiden teitä teinä teissä teihin
|
||||
|
||||
korkea korkean korkeaa korkeana korkeaan korkeiden korkeita korkeina korkeissa korkeisiin
|
||||
|
||||
äkeä äkeän äkeää äkeänä äkeään äkeiden äkeitä äkeinä äkeissä äkeisiin
|
||||
|
||||
kaunis kauniin kaunista kauniina kauniiseen kauniiden kauniita kauniina kauniissa kauniisiin
|
||||
|
||||
tyyris tyyriin tyyristä tyyriinä tyyriiseen tyyriiden tyyriitä tyyriinä tyyriissä tyyriisiin
|
||||
|
||||
ruis rukiin ruista rukiina rukiiseen rukiiden rukiita rukiina rukiissa rukiisiin
|
||||
|
||||
liitin liittimen liitintä liittimenä liittimeen liittimien liittimiä liittiminä liittimissä liittimiin
|
||||
|
||||
laidun laitumen laidunta laitumena laitumeen laitumien laitumia laitumina laitumissa laitumiin
|
||||
|
||||
luistin luistimen luistinta luistimena luistimeen luistimien luistimia luistimina luistimissa luistimiin
|
||||
|
||||
onneton onnettoman onnetonta onnettomana onnettomaan onnettomien onnettomia onnettomina onnettomissa onnettomiin
|
||||
|
||||
nimetön nimettömän nimetöntä nimettömänä nimettömään nimettömien nimettömiä nimettöminä nimettömissä nimettömiin
|
||||
|
||||
perhe perheen perhettä perheenä perheeseen perheiden perheitä perheinä perheissä perheisiin
|
||||
|
||||
olut oluen olutta oluena olueen oluiden oluita oluina oluissa oluisiin
|
||||
|
||||
lyhyt lyhyen lyhyttä lyhyenä lyhyeen lyhyiden lyhyitä lyhyinä lyhyissä lyhyisiin
|
||||
|
||||
rengas renkaan rengasta renkaana renkaaseen renkaiden renkaita renkaina renkaissa renkaisiin
|
||||
|
||||
taivas taivaan taivasta taivaana taivaaseen taivaiden taivaita taivaina taivaissa taivaisiin
|
||||
|
||||
piennar pientaren piennarta pientarena pientaren piennarten pientaria pientarina pientarissa pientariin
|
||||
|
||||
sisar sisaren sisarta sisarena sisareen sisarien sisaria sisarina sisarissa sisariin
|
||||
|
||||
rae rakeen raetta rakeena rakeeseen rakeiden rakeita rakeina rakeissa rakeisiin
|
||||
|
||||
syke sykkeen sykettä sykkeenä sykkeeseen sykkeiden sykkeitä sykkeinä sykkeissä sykkeisiin
|
||||
|
||||
taive taipeen taivetta taipeena taipeeseen taipeiden taipeita taipeina taipeissa taipeisiin
|
||||
|
||||
toive toiveen toivetta toiveena toiveeseen toiveiden toiveita toiveina toiveissa toiveisiin
|
||||
|
||||
selkä selän selkää selkänä selkään selkien selkiä selkinä selissä selkiin
|
||||
|
||||
sukka sukan sukkaa sukkana sukkaan sukkien sukkia sukkina sukissa sukkiin
|
||||
|
||||
kappa kapan kappaa kappana kappaan kappojen kappoja kappoina kapoissa kappoihin
|
||||
|
||||
kauppa kaupan kauppaa kauppana kauppaan kauppojen kauppoja kauppoina kaupoissa kauppoihin
|
||||
|
||||
seura seuran seuraa seurana seuraan seurojen seuroja seuroina seuroissa seuroihin
|
||||
|
||||
suku suvun sukua sukuna sukuun sukujen sukuja sukuina suvuissa sukuihin
|
||||
|
||||
ukko ukon ukkoa ukkona ukkoon ukkojen ukkoja ukkoina ukoissa ukkoihin
|
||||
|
||||
auto auton autoa autona autoon autojen autoja autoina autoissa autoihin
|
||||
|
||||
outo oudon outoa outona outoon outojen outoja outoina oudoissa outoihin
|
||||
|
||||
satu satun satua satuna satuun satujen satuja satuina satuissa satuihin
|
||||
|
||||
satu sadun satua satuna satuun satujen satuja satuina saduissa satuihin
|
||||
|
||||
hyppy hypyn hyppyä hyppynä hyppyyn hyppyjen hyppyjä hyppyinä hypyissä hyppyihin
|
||||
|
||||
baari baarin baaria baarina baariin baarien baareja baareina baareissa baareihin
|
||||
|
||||
paatti paatin paattia paattina paattiin paattien paatteja paatteina paateissa paatteihin
|
||||
|
||||
ahven ahvenen ahventa ahvenena ahveneen ahventen ahvenia ahvenina ahvenissa ahveniin
|
||||
|
||||
sävel sävelen säveltä sävelenä säveleen sävelten säveliä sävelinä sävelissä säveliin
|
||||
|
||||
kalsium kalsiumin kalsiumia kalsiumina kalsiumiin kalsiumien kalsiumeja kalsiumeina kalsiumeissa kalsiumeihin
|
||||
|
||||
susi suden sutta sutena suteen susien susia susina susissa susiin
|
||||
|
||||
jälsi jällen jälttä jältenä jälteen jälsien jälsiä jälsinä jälsissä jälsiin
|
||||
|
||||
korsi korren kortta kortena korteen korsien korsia korsina korsissa korsiin
|
||||
|
||||
kuusi kuusen kuusta kuusena kuuseen kuusten kuusia kuusina kuusissa kuusiin
|
||||
|
||||
saari saaren saarta saarena saareen saarten saaria saarina saarissa saariin
|
||||
|
||||
nuoli nuolen nuolta nuolena nuoleen nuolien nuolia nuolina nuolissa nuoliin
|
||||
|
||||
arpi arven arpea arpena arpeen arpien arpia arpina arvissa arpiin
|
||||
|
||||
jälki jäljen jälkeä jälkenä jälkeen jälkien jälkiä jälkinä jäljissä jälkiin
|
||||
|
||||
veitsi veitsen veistä veitsenä veitseen veisten veitsiä veitsinä veitsissä veitsiin
|
||||
|
||||
meri meren merta merenä mereen merten meriä merinä merissä meriin
|
||||
|
||||
veri veren verta verenä vereen verten veriä verinä verissä veriin
|
||||
|
||||
pakkaus pakkauksen pakkausta pakkauksena pakkaukseen pakkauksien pakkauksia pakkauksina pakkauksissa pakkauksiin
|
||||
|
||||
julius juliuksen juliusta juliuksena juliukseen juliuksien juliuksia juliuksina juliuksissa juliuksiin
|
||||
|
||||
hius hiuksen hiusta hiuksena hiukseen hiuksien hiuksia hiuksina hiuksissa hiuksiin
|
||||
|
||||
paperi paperin paperia paperina paperiin papereiden papereita papereina papereissa papereihin
|
||||
|
||||
banaali banaalin banaalia banaalina banaaliin banaalien banaaleja banaaleina banaaleissa banaaleihin
|
||||
|
||||
nalle nallen nallea nallena nalleen nallien nalleja nalleina nalleissa nalleihin
|
||||
|
||||
matala matalan matalaa matalana matalaan matalien matalia matalina matalissa mataliin
|
||||
|
||||
asema aseman asemaa asemana asemaan asemien asemia asemina asemissa asemiin
|
||||
|
||||
kulkija kulkijan kulkijaa kulkijana kulkijaan kulkijoiden kulkijoita kulkijoina kulkijoissa kulkijoihin
|
||||
|
||||
karahka karahkan karahkaa karahkana karahkaan karahkojen karahkoja karahkoina karahkoissa karahkoihin
|
||||
|
||||
kantaja kantajan kantajaa kantajana kantajaan kantajien kantajia kantajina kantajissa kantajiin
|
||||
|
||||
peruna perunan perunaa perunana perunaan perunien perunia perunina perunissa peruniin
|
||||
|
||||
pasuuna pasuunan pasuunaa pasuunana pasuunaan pasuunojen pasuunoja pasuunoina pasuunoissa pasuunoihin
|
||||
|
||||
ainoa ainoan ainoata ainoana ainoaan ainoiden ainoita ainoina ainoissa ainoihin
|
||||
|
||||
herttua herttuan herttuaa herttuana herttuaan herttuoiden herttuoita herttuoina herttuoissa herttuoihin
|
||||
|
||||
vapaa vapaan vapaata vapaana vapaaseen vapaiden vapaita vapaina vapaissa vapaisiin
|
||||
|
||||
tuohi tuohen tuohta tuohena tuoheen tuohien tuohia tuohina tuohissa tuohiin
|
||||
|
||||
lohi lohen lohta lohena loheen lohien lohia lohina lohissa lohiin
|
||||
|
||||
lumi lumen lunta lumena lumeen lumien lumia lumina lumissa lumiin
|
||||
|
||||
tuomi tuomen tuomea tuomena tuomeen tuomien tuomia tuomina tuomissa tuomiin
|
||||
|
||||
niemi niemen niemeä niemenä niemeen niemien niemiä nieminä niemissä niemiin
|
||||
|
||||
pieni pienen pientä pienenä pieneen pienten pieniä pieninä pienissä pieniin
|
||||
|
||||
nuori nuoren nuorta nuorena nuoreen nuorten nuoria nuorina nuorissa nuoriin
|
||||
|
||||
suksi suksen suksea suksena sukseen suksien suksia suksina suksissa suksiin
|
||||
|
||||
uksi uksen uksea uksena ukseen uksien uksia uksina uksissa uksiin
|
||||
|
||||
sankari sankarin sankaria sankarina sankariin sankareiden sankareita sankareina sankareissa sankareihin
|
||||
|
||||
jumala jumalan jumalaa jumalana jumalaan jumalien jumalia jumalina jumalissa jumaliin
|
||||
|
||||
sisar sisaren sisarta sisarena sisareen sisarien sisaria sisarina sisarissa sisariin
|
||||
|
||||
kirves kirveen kirvestä kirveenä kirveeseen kirvesten/kirveiden kirveitä kirveinä kirveissä kirveisiin/kirveihin
|
||||
|
||||
kives kiveksen kivestä kiveksenä kivekseen kivesten/kiveksien kiveksiä kiveksinä kiveksissä kiveksiin
|
||||
|
||||
mies miehen miestä miehenä mieheen miesten miehiä miehinä miehissä miehiin
|
||||
|
||||
kevät kevään kevättä keväänä kevääseen keväiden keväitä keväinä keväissä keväihin/keväisiin
|
||||
|
||||
sydän sydämen sydäntä sydämenä sydämeen sydanten/sydämien sydämiä sydäminä sydämissä sydämiin
|
||||
|
||||
Reference in New Issue
Block a user