mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
tests for verbs in uusisuomi
This commit is contained in:
284
examples/uusisuomi/Conjugations.gf
Normal file
284
examples/uusisuomi/Conjugations.gf
Normal file
@@ -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 = <>
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -305,6 +305,18 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
|
||||
(suurimp + "ien") (suurimp + "i" + a)
|
||||
(suurimp + "in" + a) (suurimm + "iss" + a) (suurimp + "iin") ;
|
||||
|
||||
-- for verb participle forms
|
||||
|
||||
dOttanut : Str -> NForms = \ottanut ->
|
||||
let
|
||||
a = vowHarmony ottanut ;
|
||||
ottane = init ottanut + "e" ;
|
||||
ottanee = ottane + "e" ;
|
||||
in nForms10
|
||||
ottanut (ottanee + "n") (ottanut + "t" + a)
|
||||
(ottanee + "n" + a) (ottanee + "seen")
|
||||
(ottane + "iden") (ottane + "it" + a)
|
||||
(ottane + "in" + a) (ottane + "iss" + a) (ottane + "isiin") ;
|
||||
|
||||
-------------------
|
||||
-- auxiliaries ----
|
||||
@@ -455,9 +467,9 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
|
||||
"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 ;
|
||||
("tk" | "hk" | "sk" | "sp" | "st") + _ => nke ; -- viuhke,kuiske
|
||||
a + k@("k"|"p"|"t") + e@("e"|"a"|"ä"|"u"|"i"|"o"|"ö") => a + k + k + e ;
|
||||
a + "d" + e@("e"|"a"|"ä"|"u"|"i"|"o"|"ö") => 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
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
LEX=Omat
|
||||
CAT=N
|
||||
|
||||
all:
|
||||
all: nouns
|
||||
|
||||
verbs:
|
||||
export CAT=V ; export LEX=VNSSK ; make -e tests
|
||||
export CAT=V ; export LEX=VOmat ; make -e tests
|
||||
cat all-diff-V* >all-differences-V
|
||||
cat all-differences-V
|
||||
|
||||
nouns:
|
||||
export LEX=NSSK ; make -e tests
|
||||
export LEX=Omat ; make -e tests
|
||||
export LEX=Swadesh ; make -e tests
|
||||
@@ -11,11 +20,11 @@ all:
|
||||
cat all-differences
|
||||
|
||||
gf-files:
|
||||
runghc MkLex.hs 0 $(LEX) > $(LEX)Abs.gf
|
||||
runghc MkLex.hs 1 $(LEX) > $(LEX)1.gf
|
||||
runghc MkLex.hs 2 $(LEX) > $(LEX)2.gf
|
||||
runghc MkLex.hs 3 $(LEX) > $(LEX)3.gf
|
||||
runghc MkLex.hs 4 $(LEX) > $(LEX)4.gf
|
||||
runghc MkLex.hs 0 $(CAT) $(LEX) > $(LEX)Abs.gf
|
||||
runghc MkLex.hs 1 $(CAT) $(LEX) > $(LEX)1.gf
|
||||
runghc MkLex.hs 2 $(CAT) $(LEX) > $(LEX)2.gf
|
||||
runghc MkLex.hs 3 $(CAT) $(LEX) > $(LEX)3.gf
|
||||
runghc MkLex.hs 4 $(CAT) $(LEX) > $(LEX)4.gf
|
||||
|
||||
experiments: gf-files
|
||||
echo "gt -cat=Utt | l | wf exper1-$(LEX).txt" | gf -s $(LEX)1.gf
|
||||
|
||||
@@ -5,17 +5,17 @@ import Char
|
||||
|
||||
-- generate Finnish lexicon implementations with 1 or more
|
||||
-- characteristic arguments
|
||||
-- usage: runghc MkLex.hs 3 name
|
||||
-- usage: runghc MkLex.hs 3 cat name
|
||||
|
||||
main = do
|
||||
i:tgt:_ <- getArgs
|
||||
i:cat:tgt:_ <- getArgs
|
||||
let src = "correct-" ++ tgt ++ ".txt"
|
||||
ss <- readFile src >>= return . filter (not . (all isSpace)) . lines
|
||||
initiate tgt i
|
||||
mapM_ (mkLex (read i) . uncurry (++)) (zip nums ss)
|
||||
initiate tgt cat i
|
||||
mapM_ (mkLex cat (read i) . uncurry (++)) (zip nums ss)
|
||||
putStrLn "}"
|
||||
|
||||
initiate tgt i = mapM_ putStrLn [
|
||||
initiate tgt cat i = mapM_ putStrLn [
|
||||
"--# -path=.:alltenses",
|
||||
"",
|
||||
header i,
|
||||
@@ -23,55 +23,58 @@ initiate tgt i = mapM_ putStrLn [
|
||||
]
|
||||
where
|
||||
header i = case i of
|
||||
"0" -> "abstract " ++ tgt ++ "Abs = Cat ** {\n\nfun testN : N -> Utt ;\n"
|
||||
"0" -> unlines [
|
||||
"abstract " ++ tgt ++ "Abs = Cat ** {",
|
||||
"fun testN : N -> Utt ;",
|
||||
"fun testV : V -> Utt ;"
|
||||
]
|
||||
_ -> unlines [
|
||||
"concrete " ++ tgt ++ i ++
|
||||
" of " ++ tgt ++ "Abs = CatFin ** open Nominal, ResFin, Prelude in {",
|
||||
" of " ++ tgt ++
|
||||
"Abs = CatFin ** open Nominal, Verbal, 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",
|
||||
" ) ;"
|
||||
"lin testN = showN ;",
|
||||
"lin testV = showV ;"
|
||||
]
|
||||
|
||||
nums = map prt [1 ..] where
|
||||
prt i = (if i < 10 then "0" else "") ++ show i ++ ". "
|
||||
|
||||
mkLex 0 line = case words line of
|
||||
mkLex cat 0 line = case words line of
|
||||
num:sana:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "fun " ++ nimi ++ "_N : N ;"
|
||||
putStrLn $ "fun " ++ nimi ++ "_" ++ cat ++ " : " ++ cat ++ " ;"
|
||||
_ -> return ()
|
||||
|
||||
mkLex 1 line = case words line of
|
||||
mkLex cat 1 line = case words line of
|
||||
num:sana:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "lin " ++ nimi ++ "_N = mkN \"" ++ sana ++ "\" ;"
|
||||
putStrLn $ "lin " ++ nimi ++
|
||||
"_" ++ cat ++ " = mk" ++ cat ++ " \"" ++ sana ++ "\" ;"
|
||||
_ -> return ()
|
||||
|
||||
mkLex 2 line = case words line of
|
||||
mkLex "V" _ line = case words line of
|
||||
num:sana:_:_:_:_:_:_:sanan:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "lin " ++ nimi ++
|
||||
"_V = mk2V <\"" ++ sana ++ "\", \"" ++ sanan ++ "\"> ;"
|
||||
_ -> return ()
|
||||
|
||||
mkLex "N" 2 line = case words line of
|
||||
num:sana:sanan:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "lin " ++ nimi ++
|
||||
"_N = mkN \"" ++ sana ++ "\" \"" ++ sanan ++ "\" ;"
|
||||
_ -> return ()
|
||||
|
||||
mkLex 3 line = case words line of
|
||||
mkLex "N" 3 line = case words line of
|
||||
num:sana:sanan:_:_:_:_:sanoja:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "lin " ++ nimi ++
|
||||
"_N = mkN \"" ++ sana ++ "\" \"" ++ sanan ++ "\" \"" ++ sanoja ++ "\" ;"
|
||||
_ -> return ()
|
||||
|
||||
mkLex 4 line = case words line of
|
||||
mkLex "N" 4 line = case words line of
|
||||
num:sana:sanan:sanaa:_:_:_:sanoja:_ -> do
|
||||
let nimi = "n" ++ init num ++ "_" ++ sana
|
||||
putStrLn $ "lin " ++ nimi ++
|
||||
@@ -82,7 +85,7 @@ mkLex 4 line = case words line of
|
||||
|
||||
-- to initiate from a noun list that has compounds
|
||||
|
||||
mkLex 11 line = case words line of
|
||||
mkLex "N" 11 line = case words line of
|
||||
_:"--":_ -> return ()
|
||||
num:sana0:_ -> do
|
||||
let sana = uncompound sana0
|
||||
|
||||
@@ -21,6 +21,19 @@ resource Nominal = ResFin ** open MorphoFin,Declensions,CatFin,Prelude in {
|
||||
mkA : (hyva,parempi,paras : N) -> (hyvin,paremmin,parhaiten : Str) -> A ;
|
||||
} ;
|
||||
|
||||
showN : N -> Utt = \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
|
||||
) ** {lock_Utt = <>} ;
|
||||
|
||||
mkN = overload {
|
||||
mkN : (talo : Str) -> N = mk1N ;
|
||||
|
||||
85
examples/uusisuomi/Verbal.gf
Normal file
85
examples/uusisuomi/Verbal.gf
Normal file
@@ -0,0 +1,85 @@
|
||||
--# -path=.:alltenses
|
||||
|
||||
resource Verbal = ResFin **
|
||||
open MorphoFin,Declensions,Conjugations,CatFin,Prelude in {
|
||||
|
||||
flags optimize=noexpand ;
|
||||
|
||||
oper
|
||||
|
||||
mkV = overload {
|
||||
mkV : (huutaa : Str) -> V = mk1V ;
|
||||
mkV : (huutaa,huusi : Str) -> V = \s,t -> mk2V <s,t> ;
|
||||
} ;
|
||||
|
||||
showV : V -> Utt = \v -> ss (
|
||||
v.s ! Inf Inf1 ++
|
||||
v.s ! Presn Sg P1 ++
|
||||
v.s ! Presn Sg P3 ++
|
||||
v.s ! Presn Pl P3 ++
|
||||
v.s ! Imper Pl ++
|
||||
v.s ! Pass True ++
|
||||
v.s ! Impf Sg P1 ++
|
||||
v.s ! Impf Sg P3 ++
|
||||
v.s ! Condit Sg P3 ++
|
||||
v.s ! PastPartAct (AN (NCase Sg Nom)) ++
|
||||
v.s ! PastPartPass (AN (NCase Sg Nom))
|
||||
) ** {lock_Utt = <>} ;
|
||||
|
||||
mk1V : Str -> V = \s -> vforms2V (vForms1 s) ;
|
||||
mk2V : (_ : Str * Str) -> V = \st ->
|
||||
vforms2V (vForms2 st.p1 st.p2) ;
|
||||
|
||||
vForms1 : Str -> VForms = \ottaa ->
|
||||
let
|
||||
a = last ottaa ;
|
||||
otta = init ottaa ;
|
||||
ott = init otta ;
|
||||
ots = init ott + "s" ;
|
||||
ota = weakGrade otta ;
|
||||
otin = init (Declensions.strongGrade (init ott)) + "elin" ;
|
||||
ot = init ota ;
|
||||
in
|
||||
case ottaa of {
|
||||
_ + ("e" | "i" | "o" | "u" | "y" | "ö") + ("a" | "ä") =>
|
||||
cHukkua ottaa (ota + "n") ;
|
||||
_ + ("l" | "n" | "r") + ("taa" | "tää") =>
|
||||
cOttaa ottaa (ota + "n") (ots + "in") (ots + "i") ;
|
||||
("" | C_) + ("a" | "e" | "i") + _ + "aa" =>
|
||||
cOttaa ottaa (ota + "n") (ot + "oin") (ott + "oi") ;
|
||||
_ + ("aa" | "ää") =>
|
||||
cOttaa ottaa (ota + "n") (ot + "in") (ott + "i") ;
|
||||
_ + ("ella" | "ellä") =>
|
||||
cKuunnella ottaa otin ;
|
||||
_ + ("osta" | "östä") =>
|
||||
cJuosta ottaa (init ott + "ksen") ;
|
||||
_ + ("st" | "nn" | "ll" | "rr") + ("a" | "ä") =>
|
||||
cJuosta ottaa (ott + "en") ;
|
||||
_ + ("ita" | "itä") =>
|
||||
cHarkita ottaa ;
|
||||
_ + ("eta" | "etä" | "ota" | "ata" | "uta" | "ytä" | "ätä" | "ötä") =>
|
||||
cPudota ottaa (Declensions.strongGrade ott + "si") ;
|
||||
_ + ("da" | "dä") =>
|
||||
cJuoda ottaa ;
|
||||
_ => Predef.error (["expected infinitive, found"] ++ ottaa)
|
||||
} ;
|
||||
|
||||
vForms2 : (_,_ : Str) -> VForms = \huutaa,huusi ->
|
||||
let
|
||||
huuda = weakGrade (init huutaa) ;
|
||||
huusin = weakGrade huusi + "n" ;
|
||||
autoin = weakGrade (init huusi) + "in" ;
|
||||
in
|
||||
case <huutaa,huusi> of {
|
||||
<_ + ("taa" | "tää"), _ + ("oi" | "öi")> =>
|
||||
cOttaa huutaa (huuda + "n") autoin huusi ;
|
||||
<_ + ("taa" | "tää"), _ + "i"> =>
|
||||
cOttaa huutaa (huuda + "n") huusin huusi ;
|
||||
<_ + ("eta" | "etä"), _ + "eni"> =>
|
||||
cValjeta huutaa huusi ;
|
||||
<_ + ("ita" | "itä"), _ + "isi"> =>
|
||||
cPudota huutaa huusi ;
|
||||
_ => vForms1 huutaa
|
||||
} ;
|
||||
|
||||
}
|
||||
90
examples/uusisuomi/correct-VNSSK.txt
Normal file
90
examples/uusisuomi/correct-VNSSK.txt
Normal file
@@ -0,0 +1,90 @@
|
||||
punoa punon punoo punovat punokaa punotaan punoin punoi punoisi punonut punottu
|
||||
|
||||
muistaa muistan muistaa muistavat muistakaa muistetaan muistin muisti muistaisi muistanut muistettu
|
||||
|
||||
huutaa huudan huutaa huutavat huutakaa huudetaan huusin huusi huutaisi huutanut huudettu
|
||||
|
||||
soutaa soudan soutaa soutavat soutakaa soudetaan soudin souti soutaisi soutanut soudettu
|
||||
|
||||
puoltaa puollan puoltaa puoltavat puoltakaa puolletaan puolsin puolsi puoltaisi puoltanut puollettu
|
||||
|
||||
murtaa murran murtaa murtavat murtakaa murretaan mursin mursi murtaisi murtanut murrettu
|
||||
|
||||
sortaa sorran sortaa sortavat sortakaa sorretaan sorsin sorsi sortaisi sortanut sorrettu
|
||||
|
||||
pahentaa pahennan pahentaa pahentavat pahentakaa pahennetaan pahensin pahensi pahentaisi pahentanut pahennettu
|
||||
|
||||
kaivaa kaivan kaivaa kaivavat kaivakaa kaivetaan kaivoin kaivoi kaivaisi kaivanut kaivettu
|
||||
|
||||
haastaa haastan haastaa haastavat haastakaa haastetaan haastoin haastoi haastaisi haastanut haastettu
|
||||
|
||||
paistaa paistan paistaa paistavat paistakaa paistetaan paistoin paistoi paistaisi paistanut paistettu
|
||||
|
||||
saartaa saarran saartaa saartavat saartakaa saarretaan saarsin saarsi saartaisi saartanut saarrettu
|
||||
|
||||
laskea lasken laskee laskevat laskekaa lasketaan laskin laski laskisi laskenut laskettu
|
||||
|
||||
tuntea tunnen tuntee tuntevat tuntekaa tunnetaan tunsin tunsi tuntisi tuntenut tunnettu
|
||||
|
||||
potea poden potee potevat potekaa podetaan podin poti potisi potenut podettu
|
||||
|
||||
lähteä lähden lähtee lähtevät lähtekää lähdetään lähdin lähti lähtisi lähtenyt lähdetty
|
||||
|
||||
sallia sallin sallii sallivat sallikaa sallitaan sallin salli sallisi sallinut sallittu
|
||||
|
||||
naida nain nai naivat naikaa naidaan nain nai naisi nainut naitu
|
||||
|
||||
saada saan saa saavat saakaa saadaan sain sai saisi saanut saatu
|
||||
|
||||
myydä myyn myy myyvät myykää myydään myin myi myisi myynyt myyty
|
||||
|
||||
juoda juon juo juovat juokaa juodaan join joi joisi juonut juotu
|
||||
|
||||
viedä vien vie vievät viekää viedään vein vei veisi vienyt viety
|
||||
|
||||
käydä käyn käy käyvät käykää käykö kävin kävi kävisi käynyt käyty
|
||||
|
||||
nuolaista nuolaisen nuolaisee nuolaisevat nuolaiskaa nuolaistaan nuolaisin nuolaisi nuolaisisi nuolaissut nuolaistu
|
||||
|
||||
tulla tulen tulee tulevat tulkaa tullaan tulin tuli tulisi tullut tultu
|
||||
|
||||
purra puren puree purevat purkaa purraan purin puri purisi purrut purtu
|
||||
|
||||
mennä menen menee menevät menkää mennään menin meni menisi mennyt menty
|
||||
|
||||
katsella katselen katselee katselevat katselkaa katsellaan katselin katseli katselisi katsellut katseltu
|
||||
|
||||
arvailla arvailen arvailee arvailevat arvailkaa arvaillaan arvailin arvaili arvailisi arvaillut arvailtu
|
||||
|
||||
haravoida haravoin haravoi haravoivat haravoikaa haravoidaan haravoin haravoi haravoisi haravoinut haravoitu
|
||||
|
||||
valita valitsen valitse valitsevat valitkaa valitaan valitsin valitsi valitsisi valinnut valittu
|
||||
|
||||
juosta juoksen juoksee juoksevat juoskaa juostaan juoksin juoksi juoksisi juossut juostu
|
||||
|
||||
nähdä näen näkee näkevät nähkää nähkö näin näki näkisi nähnyt nähty
|
||||
|
||||
aleta alenen alenee alenevat aletkaa aletaan alenin aleni alenisi alennut alettu
|
||||
|
||||
salata salaan salaa salaavat salatkaa salataan salasin salasi salaisi salannut salattu
|
||||
|
||||
katketa katkean katkeaa katkeavat katketkaa katketaan katkesin katkesi katkeaisi katkennut katkettu
|
||||
|
||||
selvitä selviän selviää selviävät selvitkää selvitään selvisin selvisi selviäisi selvinnyt selvitty
|
||||
|
||||
kohota kohoan kohoaa kohoavat kohotkaa kohotaan kohosin kohosi kohoaisi kohonnut kohottu
|
||||
|
||||
haluta haluan haluaa haluavat halutkaa halutaan halusin halusi haluaisi halunnut haluttu
|
||||
|
||||
palata palaan palaa palaavat palatkaa palataan palasin palasi palaisi palannut palattu
|
||||
|
||||
kihistä kihisen kihisee kihisevät kihiskää kihistään kihisin kihisi kihisisi kihissyt kihisty
|
||||
|
||||
rakentaa rakennan rakentaa rakentavat rakentakaa rakennetaan rakensin rakensi rakentaisi rakentanut rakennettu
|
||||
|
||||
taitaa taidan taitaa taitavat taitakaa taidetaan taisin taisi taitaisi tainnut/taitanut taidettu
|
||||
|
||||
antautua antaudun antautuu antautuvat antautukaa antaudutaan antauduin antautui antautuisi antautunut antauduttu
|
||||
|
||||
kaata kaadan kaataa kaatavat kaatkaa kaatko kaasin kaasi kaataisi kaannut kaattu
|
||||
|
||||
108
examples/uusisuomi/correct-VOmat.txt
Normal file
108
examples/uusisuomi/correct-VOmat.txt
Normal file
@@ -0,0 +1,108 @@
|
||||
hakea haen hakee hakevat hakekaa haetaan hain haki hakisi hakenut haettu
|
||||
|
||||
päteä päden pätee pätevät pätekää pädetään pädin päti pätisi pätenyt pädetty
|
||||
|
||||
sopia sovin sopii sopivat sopikaa sovitaan sovin sopi sopisi sopinut sovittu
|
||||
|
||||
räkiä räin räkii räkivät räkikää räitään räin räki räkisi räkinyt räitty
|
||||
|
||||
sitoa sidon sitoo sitovat sitokaa sidotaan sidoin sitoi sitoisi sitonut sidottu
|
||||
|
||||
hukkua hukun hukkuu hukkuvat hukkukaa hukutaan hukuin hukkui hukkuisi hukkunut hukuttu
|
||||
|
||||
häipyä häivyn häipyy häipyvät häipykää häivytään häivyin häipyi häipyisi häipynyt häivytty
|
||||
|
||||
mysöä mysön mysöö mysövät mysökää mysötään mysöin mysöi mysöisi mysönyt mysötty
|
||||
|
||||
kiiltää kiillän kiiltää kiiltävät kiiltäkää kiilletään kiilsin kiilsi kiiltäisi kiiltänyt kiilletty
|
||||
|
||||
sammaltaa sammallan sammaltaa sammaltavat sammaltakaa sammalletaan sammalsin sammalsi sammaltaisi sammaltanut sammallettu
|
||||
|
||||
oksentaa oksennan oksentaa oksentavat oksentakaa oksennetaan oksensin oksensi oksentaisi oksentanut oksennettu
|
||||
|
||||
kumartaa kumarran kumartaa kumartavat kumartakaa kumarretaan kumarsin kumarsi kumartaisi kumartanut kumarrettu
|
||||
|
||||
kattaa katan kattaa kattavat kattakaa katetaan katoin kattoi kattaisi kattanut katettu
|
||||
|
||||
otattaa otatan otattaa otattavat otattakaa otatetaan otatin otatti otattaisi otattanut otatettu
|
||||
|
||||
opastaa opastan opastaa opastavat opastakaa opastetaan opastin opasti opastaisi opastanut opastettu
|
||||
|
||||
sataa sadan sataa satavat satakaa sadetaan sadoin satoi sataisi satanut sadettu
|
||||
|
||||
auttaa autan auttaa auttavat auttakaa autetaan autoin auttoi auttaisi auttanut autettu
|
||||
|
||||
pitää pidän pitää pitävät pitäkää pidetään pidin piti pitäisi pitänyt pidetty
|
||||
|
||||
vetää vedän vetää vetävät vetäkää vedetään vedin veti vetäisi vetänyt vedetty
|
||||
|
||||
ravistaa ravistan ravistaa ravistavat ravistakaa ravistetaan ravistin ravisti ravistaisi ravistanut ravistettu
|
||||
|
||||
kuunnella kuuntelen kuuntelee kuuntelevat kuunnelkaa kuunnellaan kuuntelin kuunteli kuuntelisi kuunnellut kuunneltu
|
||||
|
||||
hypellä hyppelen hyppelee hyppelevät hypelkää hypellään hyppelin hyppeli hyppelisi hypellyt hypelty
|
||||
|
||||
kävellä kävelen kävelee kävelevät kävelkää kävellään kävelin käveli kävelisi kävellyt kävelty
|
||||
|
||||
juosta juoksen juoksee juoksevat juoskaa juostaan juoksin juoksi juoksisi juossut juostu
|
||||
|
||||
syöstä syöksen syöksee syöksevät syöskää syöstään syöksin syöksi syöksisi syössyt syösty
|
||||
|
||||
panna panen panee panevat pankaa pannaan panin pani panisi pannut pantu
|
||||
|
||||
haista haisen haisee haisevat haiskaa haistaan haisin haisi haisisi haissut haistu
|
||||
|
||||
purra puren puree purevat purkaa purraan purin puri purisi purrut purtu
|
||||
|
||||
mennä menen menee menevät menkää mennään menin meni menisi mennyt menty
|
||||
|
||||
palella palelen palelee palelevat palelkaa palellaan palelin paleli palelisi palellut paleltu
|
||||
|
||||
harkita harkitsen harkitse harkitsevat harkitkaa harkitaan harkitsin harkitsi harkitsisi harkinnut harkittu
|
||||
|
||||
merkitä merkitsen merkitse merkitsevät merkitkää merkitään merkitsin merkitsi merkitsisi merkinnyt merkitty
|
||||
|
||||
haljeta halkean halkeaa halkeavat haljetkaa haljetaan halkesin halkesi halkeaisi haljennut haljettu
|
||||
|
||||
valjeta valkenen valkenee valkenevat valjetkaa valjetaan valkenin valkeni valkenisi valjennut valjettu
|
||||
|
||||
kerjetä kerkeän kerkeää kerkeävät kerjetkää kerjetään kerkesin kerkesi kerkeäisi kerjennyt kerjetty
|
||||
|
||||
pelätä pelkään pelkää pelkäävät pelätkää pelätään pelkäsin pelkäsi pelkäisi pelännyt pelätty
|
||||
|
||||
paeta pakenen pakenee pakenevat paetkaa paetaan pakenin pakeni pakenisi paennut paettu
|
||||
|
||||
pudota putoan putoaa putoavat pudotkaa pudotaan putosin putosi putoaisi pudonnut pudottu
|
||||
|
||||
vastata vastaan vastaa vastaavat vastatkaa vastataan vastasin vastasi vastaisi vastannut vastattu
|
||||
|
||||
karhuta karhuan karhuaa karhuavat karhutkaa karhutaan karhusin karhusi karhuaisi karhunnut karhuttu
|
||||
|
||||
älytä älyän älyää älyävät älytkää älytään älysin älysi älyäisi älynnyt älytty
|
||||
|
||||
hypätä hyppään hyppää hyppäävät hypätkää hypätään hyppäsin hyppäsi hyppäisi hypännyt hypätty
|
||||
|
||||
yrjötä yrjöän yrjöää yrjöävät yrjötkää yrjötään yrjösin yrjösi yrjöäisi yrjönnyt yrjötty
|
||||
|
||||
ällötä ällöän ällöää ällöävät ällötkää ällötään ällösin ällösi ällöäisi ällönnyt ällötty
|
||||
|
||||
naida nain nai naivat naikaa naidaan nain nai naisi nainut naitu
|
||||
|
||||
uida uin ui uivat uikaa uidaan uin ui uisi uinut uitu
|
||||
|
||||
haravoida haravoin haravoi haravoivat haravoikaa haravoidaan haravoin haravoi haravoisi haravoinut haravoitu
|
||||
|
||||
saada saan saa saavat saakaa saadaan sain sai saisi saanut saatu
|
||||
|
||||
jäädä jään jää jäävät jääkää jäädään jäin jäi jäisi jäänyt jääty
|
||||
|
||||
huutaa huudan huutaa huutavat huutakaa huudetaan huudin huuti huutaisi huutanut huudettu
|
||||
|
||||
olla olen olee olevat olkaa ollaan olin oli olisi ollut oltu
|
||||
|
||||
tehdä teen tekee tekevät tehkää tehdään tein teki tekisi tehnyt tehty
|
||||
|
||||
nähdä näen näkee näkevät nähkää nähdään näin näki näkisi nähnyt nähty
|
||||
|
||||
käydä käyn käy käyvät käykää käydään kävin kävi kävisi käynyt käyty
|
||||
|
||||
@@ -85,6 +85,7 @@ computeTermOpt rec gr = comp where
|
||||
(_, FV as) -> mapM (\c -> comp g (App f' c)) as >>= return . variants
|
||||
(FV fs, _) -> mapM (\c -> comp g (App c a')) fs >>= return . variants
|
||||
(Abs x b,_) -> comp (ext x a' g) b
|
||||
|
||||
(QC _ _,_) -> returnC $ App f' a'
|
||||
|
||||
(Alias _ _ d, _) -> comp g (App d a')
|
||||
|
||||
Reference in New Issue
Block a user