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"> ; + _ => + } ; + 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 = <> + } ; +} + diff --git a/examples/uusisuomi/Declensions.gf b/examples/uusisuomi/Declensions.gf index 6bcd1ae06..c9971af50 100644 --- a/examples/uusisuomi/Declensions.gf +++ b/examples/uusisuomi/Declensions.gf @@ -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 diff --git a/examples/uusisuomi/Makefile b/examples/uusisuomi/Makefile index a054f0a20..43899cbc1 100644 --- a/examples/uusisuomi/Makefile +++ b/examples/uusisuomi/Makefile @@ -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 diff --git a/examples/uusisuomi/MkLex.hs b/examples/uusisuomi/MkLex.hs index 9e35e88a0..faf980d75 100644 --- a/examples/uusisuomi/MkLex.hs +++ b/examples/uusisuomi/MkLex.hs @@ -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 diff --git a/examples/uusisuomi/Nominal.gf b/examples/uusisuomi/Nominal.gf index 349c7dae2..e9973f95d 100644 --- a/examples/uusisuomi/Nominal.gf +++ b/examples/uusisuomi/Nominal.gf @@ -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 ; diff --git a/examples/uusisuomi/Verbal.gf b/examples/uusisuomi/Verbal.gf new file mode 100644 index 000000000..cdf61f88e --- /dev/null +++ b/examples/uusisuomi/Verbal.gf @@ -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 ; + } ; + + 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 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 + } ; + +} diff --git a/examples/uusisuomi/correct-VNSSK.txt b/examples/uusisuomi/correct-VNSSK.txt new file mode 100644 index 000000000..ea13446b4 --- /dev/null +++ b/examples/uusisuomi/correct-VNSSK.txt @@ -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 + diff --git a/examples/uusisuomi/correct-VOmat.txt b/examples/uusisuomi/correct-VOmat.txt new file mode 100644 index 000000000..261008c37 --- /dev/null +++ b/examples/uusisuomi/correct-VOmat.txt @@ -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 + diff --git a/src/GF/Grammar/Compute.hs b/src/GF/Grammar/Compute.hs index e3185849c..f75a092b1 100644 --- a/src/GF/Grammar/Compute.hs +++ b/src/GF/Grammar/Compute.hs @@ -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')