1
0
forked from GitHub/gf-rgl

Merge pull request #38 from inariksit/master

Various improvements to Finnish
This commit is contained in:
Inari Listenmaa
2018-10-08 17:59:36 +02:00
committed by GitHub
9 changed files with 145 additions and 119 deletions

View File

@@ -5,54 +5,63 @@ concrete AdjectiveFin of Adjective = CatFin ** open ResFin, StemFin, Prelude in
lin
PositA a = {
PositA a = a ** {
s = \\_ => sAdjFull2nforms Posit a ;
} ;
ComparA a np =
let acomp = sAdjFull2nforms Compar a in {
let acomp = sAdjFull2nforms Compar a in a ** {
s = \\isMod,af => case isMod of {
True => np.s ! NPCase Part ++ acomp ! af ; -- minua isompi
_ => acomp ! af ++ "kuin" ++ np.s ! NPSep -- isompi kuin minä
}
} ;
CAdvAP ad ap np = {
s = \\m,af => ad.s ++ ap.s ! m ! af ++ ad.p ++ np.s ! NPSep
hasPrefix = False
} ;
UseComparA a = {
CAdvAP ad ap np = ap ** {
s = \\m,af => ad.s ++ ap.s ! m ! af ++ ad.p ++ np.s ! NPSep ;
hasPrefix = False
} ;
UseComparA a = a ** {
s = \\_ => sAdjFull2nforms Compar a
} ;
-- $SuperlA$ belongs to determiner syntax in $Noun$.
AdjOrd ord = {
s = \\_ => ord.s
s = \\_ => ord.s ;
p = [] ; hasPrefix = False
} ;
ComplA2 a np = {
s = \\isMod,af =>
preOrPost isMod (appCompl True Pos a.c2 np) (sAdjFull2nforms Posit a ! af)
preOrPost isMod (appCompl True Pos a.c2 np) (sAdjFull2nforms Posit a ! af) ;
p = [] ; hasPrefix = False
} ;
ReflA2 a = {
s = \\isMod,af =>
preOrPost isMod
(appCompl True Pos a.c2 (reflPron (agrP3 Sg))) (sAdjFull2nforms Posit a ! af)
(appCompl True Pos a.c2 (reflPron (agrP3 Sg))) (sAdjFull2nforms Posit a ! af) ;
p = [] ; hasPrefix = False
} ;
SentAP ap sc = {
s = \\b,a => ap.s ! b ! a ++ sc.s
SentAP ap sc = ap ** {
s = \\b,a => ap.s ! b ! a ++ sc.s ;
hasPrefix = False
} ;
AdAP ada ap = {
s = \\b,af => ada.s ++ ap.s ! b ! af
AdAP ada ap = ap ** {
s = \\b,af => ada.s ++ ap.s ! b ! af ;
hasPrefix = False
} ;
AdvAP ap adv = {
s = \\b,af => adv.s ++ ap.s ! b ! af -- luonnostaan vaalea
AdvAP ap adv = ap ** {
s = \\b,af => adv.s ++ ap.s ! b ! af ; -- luonnostaan vaalea
hasPrefix = False
} ;
UseA2 a = {
s = \\_ => sAdjFull2nforms Posit a
s = \\_ => sAdjFull2nforms Posit a ;
p = [] ; hasPrefix = False
} ;
}

View File

@@ -42,7 +42,7 @@ concrete CatFin of Cat = CommonX ** open ResFin, StemFin, Prelude in {
-- The $Bool$ tells whether usage is modifying (as opposed to
-- predicative), e.g. "x on suurempi kuin y" vs. "y:tä suurempi luku".
AP = {s : Bool => NForm => Str} ;
AP = {s : Bool => NForm => Str ; p : Str ; hasPrefix : Bool} ;
-- Noun
@@ -89,7 +89,7 @@ concrete CatFin of Cat = CommonX ** open ResFin, StemFin, Prelude in {
V2V = SVerb1 ** {c2 : Compl ; vi : VVType} ; ---- infinitive form
V3 = SVerb1 ** {c2, c3 : Compl} ;
A = {s : Degree => SAForm => Str ; h : Harmony} ;
A = {s : Degree => SAForm => Str ; h : Harmony ; p : Str ; hasPrefix : Bool} ;
A2 = {s : Degree => SAForm => Str ; h : Harmony ; c2 : Compl} ;
N = SNoun ;

View File

@@ -16,7 +16,7 @@ concrete ConjunctionFin of Conjunction =
isPron = False ; isNeg = ss.isNeg
} ;
ConjAP conj ss = conjunctDistrTable2 Bool NForm conj ss ;
ConjAP conj ss = conjunctDistrTable2 Bool NForm conj ss ** { hasPrefix = False ; p = [] } ;
ConjRS conj ss = conjunctDistrTable Agr conj ss ** {
c = ss.c

View File

@@ -41,11 +41,19 @@ oper
(s + "n")
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
d09A : Str -> NForms -- 1040 ääniraita
= \s -> let a = last s in dSilakka s
= \s -> case s of {
x + "aaka" => dSilakka s (x+"aa'an") (x+"aakoja") ;
x + "aika" => dSilakka s (x+"ajan") (x+"aikoja") ; -- lots of compound words in NewDictFin that end in aika, but are not analysed as compounds
_ => let a = last s
in dSilakka s
(weakGrade s + "n")
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a)
} ;
d10 : Str -> NForms -- 2119 äänittäjä
= \s -> dSilakka s (s + "n") (init s + "i" + vowelHarmony (last s)) ;
= \s -> case s of {
x+"poika" => dSilakka s (x+"pojan") (x+"poikia") ;
_ => dSilakka s (s + "n") (init s + "i" + vowelHarmony (last s))
} ;
d10A : Str -> NForms -- 284 änkkä
= \s -> dSilakka s (weakGrade s + "n") (init s + "i" + vowelHarmony (last s)) ;
d11 : Str -> NForms -- 46 ödeema

View File

@@ -858,7 +858,8 @@ resource MorphoFin = ResFin ** open Prelude in {
("hk" | "tk") + _ => kukko ; -- *tahko-tahon, *pitkä-pitkän
("f"|"s") + ("k" | "p" | "t") + _ => kukko ; -- *lasku-lasvun, *raspi-rasvin, *lastu-lasdun, *afta-aftan
("k"|"p") + "t" + _ => kukko ; -- *projekti-projekdin
x + "ku" => ku + x + "vu" ;
"uku" => ku + "uvu" ;
"yky" => ku + "yvy" ;
x + "k" + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") => ku + x + o ;
x + "p" + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") => ku + x + "v" + o ;
x + "t" + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") => ku + x + "d" + o ;
@@ -882,7 +883,7 @@ resource MorphoFin = ResFin ** open Prelude in {
("tk" | "hk" | "sk" | "sp" | "st") + _ => nke ; -- viuhke,kuiske
a + k@("k"|"p"|"t") + e@("e"|"a"|"ä"|"u"|"y"|"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
s + a@("a"|"ä"|"o"|"ö") + "e" => s + a + "ke" ; -- säe, tae, koe
s + "ui" => s + "uki" ; -- ruis
s + "aa" => s + "aka" ; -- taata
s + "i" + a@("a" | "e" | "i") => s + "ik" + a ; -- liata, siitä, pietä

View File

@@ -327,8 +327,8 @@ lin aiheutua_V = mkV {s = c52A "aiheutua"} ;
lin aiheutus_N = mkN {s = d39 "aiheutus"} ;
lin aihio_N = mkN {s = d03 "aihio"} ;
lin aijai_Adv = mkAdv {s = c99 "aijai"} ;
lin aika_1_N = mkN {s = d09A "aika"} ;
lin aika_2_Adv = mkAdv {s = c99 "aika"} ;
lin aika_N = mkN {s = d09A "aika"} ;
lin aika_Adv = mkAdv {s = c99 "aika"} ;
lin aikaansaannos_N = mkN {s = d39 "aikaansaannos"} ;
lin aikaansaapa_N = mkN {s = d10A "aikaansaapa"} ;
lin aikaansaava_N = mkN {s = d10 "aikaansaava"} ;
@@ -4583,8 +4583,8 @@ lin haaste_N = mkN {s = d48 "haaste"} ;
lin haasteaika_N = mkN {s = d09A "haasteaika"} ;
lin haasteellinen_N = mkN {s = d38 "haasteellinen"} ;
lin haastella_V = mkV {s = c67 "haastella"} ;
lin haava_1_N = mkN {s = d09 "haava"} ;
lin haava_2_Adv = mkAdv {s = c99 "haava"} ;
lin haava_N = mkN {s = d09 "haava"} ;
lin haava_Adv = mkAdv {s = c99 "haava"} ;
lin haavainen_N = mkN {s = d38 "haavainen"} ;
lin haavakko_N = mkN {s = d04A "haavakko"} ;
lin haavauma_N = mkN {s = d10 "haavauma"} ;
@@ -9916,8 +9916,7 @@ lin kallistaa_1_V = mkV {s = c53 "kallistaa"} ;
lin kallistaa_2_V = mkV {s = c53 "kallistaa"} ;
lin kallistella_V = mkV {s = c67 "kallistella"} ;
lin kallistelu_N = mkN {s = d02 "kallistelu"} ;
lin kallistua_1_V = mkV {s = c52 "kallistua"} ;
lin kallistua_2_V = mkV {s = c52 "kallistua"} ;
lin kallistua_V = mkV {s = c52 "kallistua"} ;
lin kallistus_N = mkN {s = d39 "kallistus"} ;
lin kallistuvakorinen_N = mkN {s = d38 "kallistuvakorinen"} ;
lin kallo_N = mkN {s = d01 "kallo"} ;
@@ -12120,8 +12119,7 @@ lin kimputus_N = mkN {s = d39 "kimputus"} ;
lin kimröökki_N = mkN {s = d05A "kimröökki"} ;
lin kimuli_N = mkN {s = d06 "kimuli"} ;
lin kimurantti_N = mkN {s = d05A "kimurantti"} ;
lin kina_1_N = mkN {s = d09 "kina"} ;
lin kina_2_N = mkN {s = d09 "kina"} ;
lin kina_N = mkN {s = d09 "kina"} ;
lin kinailla_V = mkV {s = c67 "kinailla"} ;
lin kinailu_N = mkN {s = d02 "kinailu"} ;
lin kinastella_V = mkV {s = c67 "kinastella"} ;
@@ -12786,12 +12784,10 @@ lin kokkareinen_N = mkN {s = d38 "kokkareinen"} ;
lin kokkaroitua_V = mkV {s = c52A "kokkaroitua"} ;
lin kokkaus_N = mkN {s = d39 "kokkaus"} ;
lin kokkeli_N = mkN {s = d06 "kokkeli"} ;
lin kokki_1_N = mkN {s = d05A "kokki"} ;
lin kokki_2_N = mkN {s = d05A "kokki"} ;
lin kokko_1_N = mkN {s = d01A "kokko"} ;
lin kokko_2_N = mkN {s = d01A "kokko"} ;
lin koko_1_N = mkN {s = d01A "koko"} ;
lin koko_2_Adv = mkAdv {s = c99 "koko"} ;
lin kokki_N = mkN {s = d05A "kokki"} ;
lin kokko_N = mkN {s = d01A "kokko"} ;
lin koko_N = mkN {s = d01A "koko"} ;
lin koko_Adv = mkAdv {s = c99 "koko"} ;
lin kokoaja_N = mkN {s = d10 "kokoaja"} ;
lin kokoelma_N = mkN {s = d10 "kokoelma"} ;
lin kokoilla_V = mkV {s = c67 "kokoilla"} ;
@@ -13653,7 +13649,7 @@ lin kouruilla_V = mkV {s = c67 "kouruilla"} ;
lin kouruttaa_V = mkV {s = c53A "kouruttaa"} ;
lin kouruuntua_V = mkV {s = c52A "kouruuntua"} ;
lin koutsi_N = mkN {s = d05 "koutsi"} ;
lin kova_A = mkA {s = d10 "kova"} ;
lin kova_A = mkA (mkN {s = d10 "kova"}) "kovempi" "kovin" ;
lin kovaa_Adv = mkAdv {s = c99 "kovaa"} ;
lin kovaan_Adv = mkAdv {s = c99 "kovaan"} ;
lin kovakorvaisuus_N = mkN {s = d40 "kovakorvaisuus"} ;
@@ -14937,7 +14933,7 @@ lin kylmiltään_Adv = mkAdv {s = c99 "kylmiltään"} ;
lin kylmissään_Adv = mkAdv {s = c99 "kylmissään"} ;
lin kylmiö_N = mkN {s = d03 "kylmiö"} ;
lin kylmyys_N = mkN {s = d40 "kylmyys"} ;
lin kylmä_A = mkA {s = d10 "kylmä"} ;
lin kylmä_A = mkA (mkN {s = d10 "kylmä"}) "kylmempi" "kylmin" ;
lin kylmäkiskoisesti_Adv = mkAdv {s = c99 "kylmäkiskoisesti"} ;
lin kylmäkiskoisuus_N = mkN {s = d40 "kylmäkiskoisuus"} ;
lin kylmäkkö_N = mkN {s = d04A "kylmäkkö"} ;
@@ -15031,7 +15027,7 @@ lin kypsyttää_V = mkV {s = c53A "kypsyttää"} ;
lin kypsytys_N = mkN {s = d39 "kypsytys"} ;
lin kypsyys_N = mkN {s = d40 "kypsyys"} ;
lin kypsyä_V = mkV {s = c52 "kypsyä"} ;
lin kypsä_A = mkA {s = d10 "kypsä"} ;
lin kypsä_A = mkA (mkN {s = d10 "kypsä"}) "kypsempi" "kypsin" ;
lin kypsästi_Adv = mkAdv {s = c99 "kypsästi"} ;
lin kypärä_N = mkN {s = d10 "kypärä"} ;
lin kyrillinen_N = mkN {s = d38 "kyrillinen"} ;
@@ -23105,7 +23101,7 @@ lin padota_V = mkV {s = c74A "padota"} ;
lin paella_N = mkN {s = d13 "paella"} ;
lin paeta_V = mkV {s = c72A "paeta"} ;
lin pagodi_N = mkN {s = d05 "pagodi"} ;
lin paha_A = mkA {s = d09 "paha"} ;
lin paha_A = mkA (mkN {s = d09 "paha"}) "pahempi" "pahin" ;
lin pahainen_N = mkN {s = d38 "pahainen"} ;
lin pahaksua_V = mkV {s = c52 "pahaksua"} ;
lin pahamaineisuus_N = mkN {s = d40 "pahamaineisuus"} ;
@@ -23337,8 +23333,7 @@ lin pakaste_N = mkN {s = d48 "pakaste"} ;
lin pakastin_N = mkN {s = d33 "pakastin"} ;
lin pakastua_V = mkV {s = c52 "pakastua"} ;
lin pakastus_N = mkN {s = d39 "pakastus"} ;
lin pakata_1_V = mkV {s = c73A "pakata"} ;
lin pakata_2_V = mkV {s = c73A "pakata"} ;
lin pakata_V = mkV {s = c73A "pakata"} ;
lin pakeilla_Adv = mkAdv {s = c99 "pakeilla"} ;
lin pakeillaan_Adv = mkAdv {s = c99 "pakeillaan"} ;
lin pakeille_Adv = mkAdv {s = c99 "pakeille"} ;
@@ -23601,8 +23596,8 @@ lin pankkiaika_N = mkN {s = d09A "pankkiaika"} ;
lin pankkiiri_N = mkN {s = d06 "pankkiiri"} ;
lin pankkisäästäminen_N = mkN {s = d38 "pankkisäästäminen"} ;
lin pankko_N = mkN {s = d01A "pankko"} ;
lin panna_1_V = mkV {s = c67 "panna"} ;
lin panna_2_N = mkN {s = d09 "panna"} ;
lin panna_V = mkV {s = c67 "panna"} ;
lin panna_N = mkN {s = d09 "panna"} ;
lin pannahinen_N = mkN {s = d38 "pannahinen"} ;
lin pannari_N = mkN {s = d06 "pannari"} ;
lin pannu_N = mkN {s = d01 "pannu"} ;
@@ -23879,10 +23874,7 @@ lin passata_2_V = mkV {s = c73 "passata"} ;
lin passauttaa_V = mkV {s = c53A "passauttaa"} ;
lin passeli_N = mkN {s = d06 "passeli"} ;
--? lin passepartout_N = mkN {s = d22 "passepartout"} ;
lin passi_1_N = mkN {s = d05 "passi"} ;
lin passi_2_N = mkN {s = d05 "passi"} ;
lin passi_3_N = mkN {s = d05 "passi"} ;
lin passi_4_N = mkN {s = d05 "passi"} ;
lin passi_N = mkN {s = d05 "passi"} ;
--? lin passiivat_N = mkN {s = d12 "passiivat"} ;
lin passiivi_N = mkN {s = d05 "passiivi"} ;
lin passiivinen_A = mkA {s = d38 "passiivinen"} ;
@@ -23963,8 +23955,7 @@ lin patsastelu_N = mkN {s = d02 "patsastelu"} ;
lin patteri_N = mkN {s = d06 "patteri"} ;
lin patteristi_N = mkN {s = d05 "patteristi"} ;
lin patteristo_N = mkN {s = d01 "patteristo"} ;
lin patti_1_N = mkN {s = d05A "patti"} ;
lin patti_2_N = mkN {s = d05A "patti"} ;
lin patti_N = mkN {s = d05A "patti"} ;
lin patu_N = mkN {s = d01 "patu"} ;
lin patukka_N = mkN {s = d14A "patukka"} ;
lin pauhata_V = mkV {s = c73 "pauhata"} ;
@@ -25134,7 +25125,7 @@ lin pitkittää_V = mkV {s = c53A "pitkittää"} ;
lin pitkitys_N = mkN {s = d39 "pitkitys"} ;
lin pitko_N = mkN {s = d01 "pitko"} ;
lin pitkulainen_N = mkN {s = d38 "pitkulainen"} ;
lin pitkä_A = mkA {s = d10 "pitkä"} ;
lin pitkä_A = mkA (mkN {s = d10 "pitkä"}) "pidempi" "pisin" ;
lin pitkäinen_N = mkN {s = d38 "pitkäinen"} ;
lin pitkäjännitteisesti_Adv = mkAdv {s = c99 "pitkäjännitteisesti"} ;
lin pitkäjänteisesti_Adv = mkAdv {s = c99 "pitkäjänteisesti"} ;
@@ -28531,8 +28522,7 @@ lin riipus_N = mkN {s = d39 "riipus"} ;
lin riipustaa_V = mkV {s = c53 "riipustaa"} ;
lin riiputtaa_V = mkV {s = c53A "riiputtaa"} ;
lin riiputus_N = mkN {s = d39 "riiputus"} ;
lin riisi_1_N = mkN {s = d05 "riisi"} ;
lin riisi_2_N = mkN {s = d05 "riisi"} ;
lin riisi_N = mkN {s = d05 "riisi"} ;
lin riista_N = mkN {s = d09 "riista"} ;
lin riistainen_N = mkN {s = d38 "riistainen"} ;
lin riistamaaliammunta_N = mkN {s = d09A "riistamaaliammunta"} ;
@@ -28570,8 +28560,7 @@ lin riittämätön_N = mkN {s = d34A "riittämätön"} ;
lin riittävyys_N = mkN {s = d40 "riittävyys"} ;
lin riittävä_A = mkA {s = d10 "riittävä"} ;
lin riittävästi_Adv = mkAdv {s = c99 "riittävästi"} ;
lin riittää_1_V = mkV {s = c53A "riittää"} ;
lin riittää_2_V = mkV {s = c53A "riittää"} ;
lin riittää_V = mkV {s = c53A "riittää"} ;
lin riiustaa_V = mkV {s = c53 "riiustaa"} ;
lin riiustella_V = mkV {s = c67 "riiustella"} ;
lin riiustelu_N = mkN {s = d02 "riiustelu"} ;
@@ -28597,8 +28586,8 @@ lin rikka_N = mkN {s = d09A "rikka"} ;
lin rikkaasti_Adv = mkAdv {s = c99 "rikkaasti"} ;
lin rikkaus_N = mkN {s = d40 "rikkaus"} ;
lin rikkeetön_N = mkN {s = d34A "rikkeetön"} ;
lin rikki_1_N = mkN {s = d05A "rikki"} ;
lin rikki_2_Adv = mkAdv {s = c99 "rikki"} ;
lin rikki_N = mkN {s = d05A "rikki"} ;
lin rikki_Adv = mkAdv {s = c99 "rikki"} ;
lin rikkidioksidi_N = mkN {s = d05 "rikkidioksidi"} ;
lin rikkinäinen_N = mkN {s = d38 "rikkinäinen"} ;
lin rikkinäisyys_N = mkN {s = d40 "rikkinäisyys"} ;
@@ -28734,8 +28723,7 @@ lin risauttaa_V = mkV {s = c53A "risauttaa"} ;
lin risiini_N = mkN {s = d05 "risiini"} ;
lin riskaabeli_N = mkN {s = d05 "riskaabeli"} ;
lin riskeerata_V = mkV {s = c73 "riskeerata"} ;
lin riski_1_N = mkN {s = d05 "riski"} ;
lin riski_2_N = mkN {s = d05 "riski"} ;
lin riski_N = mkN {s = d05 "riski"} ;
lin riskilä_N = mkN {s = d12 "riskilä"} ;
lin riskinen_N = mkN {s = d38 "riskinen"} ;
lin riskitön_N = mkN {s = d34A "riskitön"} ;
@@ -33728,7 +33716,7 @@ lin syvyinen_N = mkN {s = d38 "syvyinen"} ;
lin syvyys_N = mkN {s = d40 "syvyys"} ;
lin syvyyttää_V = mkV {s = c53A "syvyyttää"} ;
lin syvyytys_N = mkN {s = d39 "syvyytys"} ;
lin syvä_A = mkA {s = d10 "syvä"} ;
lin syvä_A = mkA (mkN {s = d10 "syvä"}) "syvempi" "syvin" ;
lin syvälle_Adv = mkAdv {s = c99 "syvälle"} ;
lin syvällinen_A = mkA {s = d38 "syvällinen"} ;
lin syvällisesti_Adv = mkAdv {s = c99 "syvällisesti"} ;
@@ -37084,8 +37072,7 @@ lin tuttavallisesti_Adv = mkAdv {s = c99 "tuttavallisesti"} ;
lin tuttavallisuus_N = mkN {s = d40 "tuttavallisuus"} ;
--? lin tuttavukset_N = mkN {s = d39 "tuttavukset"} ;
lin tuttavuus_N = mkN {s = d40 "tuttavuus"} ;
lin tutti_1_N = mkN {s = d05A "tutti"} ;
lin tutti_2_N = mkN {s = d05A "tutti"} ;
lin tutti_N = mkN {s = d05A "tutti"} ;
lin tuttu_N = mkN {s = d01A "tuttu"} ;
lin tuttuus_N = mkN {s = d40 "tuttuus"} ;
lin tutua_V = mkV {s = c52 "tutua"} ;
@@ -38423,7 +38410,7 @@ lin vahingollisuus_N = mkN {s = d40 "vahingollisuus"} ;
lin vahinko_N = mkN {s = d01A "vahinko"} ;
lin vahti_N = mkN {s = d05A "vahti"} ;
lin vahtia_V = mkV {s = c61A "vahtia"} ;
lin vahva_A = mkA {s = d09 "vahva"} ;
lin vahva_A = mkA (mkN {s = d09 "vahva"}) "vahvempi" "vahvin" ;
lin vahvalti_Adv = mkAdv {s = c99 "vahvalti"} ;
lin vahvasti_Adv = mkAdv {s = c99 "vahvasti"} ;
lin vahvennos_N = mkN {s = d39 "vahvennos"} ;
@@ -39121,7 +39108,7 @@ lin varkaisiin_Adv = mkAdv {s = c99 "varkaisiin"} ;
lin varkaissa_Adv = mkAdv {s = c99 "varkaissa"} ;
lin varkaista_Adv = mkAdv {s = c99 "varkaista"} ;
lin varkaus_N = mkN {s = d40 "varkaus"} ;
lin varma_A = mkA {s = d09 "varma"} ;
lin varma_A = mkA (mkN {s = d09 "varma"}) "varmempi" "varmin" ;
lin varmaan_Adv = mkAdv {s = c99 "varmaan"} ;
lin varmasti_Adv = mkAdv {s = c99 "varmasti"} ;
lin varmenne_N = mkN {s = d48A "varmenne"} ;

View File

@@ -321,8 +321,8 @@ fun aiheutua_V : V ;
fun aiheutus_N : N ;
fun aihio_N : N ;
fun aijai_Adv : Adv ;
fun aika_1_N : N ;
fun aika_2_Adv : Adv ;
fun aika_N : N ;
fun aika_Adv : Adv ;
fun aikaansaannos_N : N ;
fun aikaansaapa_N : N ;
fun aikaansaava_N : N ;
@@ -4577,8 +4577,8 @@ fun haaste_N : N ;
fun haasteaika_N : N ;
fun haasteellinen_N : N ;
fun haastella_V : V ;
fun haava_1_N : N ;
fun haava_2_Adv : Adv ;
fun haava_N : N ;
fun haava_Adv : Adv ;
fun haavainen_N : N ;
fun haavakko_N : N ;
fun haavauma_N : N ;
@@ -9910,8 +9910,7 @@ fun kallistaa_1_V : V ;
fun kallistaa_2_V : V ;
fun kallistella_V : V ;
fun kallistelu_N : N ;
fun kallistua_1_V : V ;
fun kallistua_2_V : V ;
fun kallistua_V : V ;
fun kallistus_N : N ;
fun kallistuvakorinen_N : N ;
fun kallo_N : N ;
@@ -12114,8 +12113,7 @@ fun kimputus_N : N ;
fun kimröökki_N : N ;
fun kimuli_N : N ;
fun kimurantti_N : N ;
fun kina_1_N : N ;
fun kina_2_N : N ;
fun kina_N : N ;
fun kinailla_V : V ;
fun kinailu_N : N ;
fun kinastella_V : V ;
@@ -12780,12 +12778,10 @@ fun kokkareinen_N : N ;
fun kokkaroitua_V : V ;
fun kokkaus_N : N ;
fun kokkeli_N : N ;
fun kokki_1_N : N ;
fun kokki_2_N : N ;
fun kokko_1_N : N ;
fun kokko_2_N : N ;
fun koko_1_N : N ;
fun koko_2_Adv : Adv ;
fun kokki_N : N ;
fun kokko_N : N ;
fun koko_N : N ;
fun koko_Adv : Adv ;
fun kokoaja_N : N ;
fun kokoelma_N : N ;
fun kokoilla_V : V ;
@@ -23331,8 +23327,7 @@ fun pakaste_N : N ;
fun pakastin_N : N ;
fun pakastua_V : V ;
fun pakastus_N : N ;
fun pakata_1_V : V ;
fun pakata_2_V : V ;
fun pakata_V : V ;
fun pakeilla_Adv : Adv ;
fun pakeillaan_Adv : Adv ;
fun pakeille_Adv : Adv ;
@@ -23595,8 +23590,8 @@ fun pankkiaika_N : N ;
fun pankkiiri_N : N ;
fun pankkisäästäminen_N : N ;
fun pankko_N : N ;
fun panna_1_V : V ;
fun panna_2_N : N ;
fun panna_V : V ;
fun panna_N : N ;
fun pannahinen_N : N ;
fun pannari_N : N ;
fun pannu_N : N ;
@@ -23873,10 +23868,7 @@ fun passata_2_V : V ;
fun passauttaa_V : V ;
fun passeli_N : N ;
--? fun passepartout_N : N ;
fun passi_1_N : N ;
fun passi_2_N : N ;
fun passi_3_N : N ;
fun passi_4_N : N ;
fun passi_N : N ;
--? fun passiivat_N : N ;
fun passiivi_N : N ;
fun passiivinen_A : A ;
@@ -23957,8 +23949,7 @@ fun patsastelu_N : N ;
fun patteri_N : N ;
fun patteristi_N : N ;
fun patteristo_N : N ;
fun patti_1_N : N ;
fun patti_2_N : N ;
fun patti_N : N ;
fun patu_N : N ;
fun patukka_N : N ;
fun pauhata_V : V ;
@@ -28525,8 +28516,7 @@ fun riipus_N : N ;
fun riipustaa_V : V ;
fun riiputtaa_V : V ;
fun riiputus_N : N ;
fun riisi_1_N : N ;
fun riisi_2_N : N ;
fun riisi_N : N ;
fun riista_N : N ;
fun riistainen_N : N ;
fun riistamaaliammunta_N : N ;
@@ -28564,8 +28554,7 @@ fun riittämätön_N : N ;
fun riittävyys_N : N ;
fun riittävä_A : A ;
fun riittävästi_Adv : Adv ;
fun riittää_1_V : V ;
fun riittää_2_V : V ;
fun riittää_V : V ;
fun riiustaa_V : V ;
fun riiustella_V : V ;
fun riiustelu_N : N ;
@@ -28591,8 +28580,8 @@ fun rikka_N : N ;
fun rikkaasti_Adv : Adv ;
fun rikkaus_N : N ;
fun rikkeetön_N : N ;
fun rikki_1_N : N ;
fun rikki_2_Adv : Adv ;
fun rikki_N : N ;
fun rikki_Adv : Adv ;
fun rikkidioksidi_N : N ;
fun rikkinäinen_N : N ;
fun rikkinäisyys_N : N ;
@@ -28728,8 +28717,7 @@ fun risauttaa_V : V ;
fun risiini_N : N ;
fun riskaabeli_N : N ;
fun riskeerata_V : V ;
fun riski_1_N : N ;
fun riski_2_N : N ;
fun riski_N : N ;
fun riskilä_N : N ;
fun riskinen_N : N ;
fun riskitön_N : N ;
@@ -37078,8 +37066,7 @@ fun tuttavallisesti_Adv : Adv ;
fun tuttavallisuus_N : N ;
--? fun tuttavukset_N : N ;
fun tuttavuus_N : N ;
fun tutti_1_N : N ;
fun tutti_2_N : N ;
fun tutti_N : N ;
fun tuttu_N : N ;
fun tuttuus_N : N ;
fun tutua_V : V ;

View File

@@ -215,7 +215,9 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
} ;
AdjCN ap cn = {
s = \\nf => ap.s ! True ! (n2nform nf) ++ cn.s ! nf ;
s = case ap.hasPrefix of {
True => \\nf => ap.p ++ BIND ++ cn.s ! nf ;
False => \\nf => ap.s ! True ! (n2nform nf) ++ cn.s ! nf } ;
h = cn.h } ;
RelCN cn rs = {s = \\nf => cn.s ! nf ++ BIND ++ "," ++ rs.s ! agrP3 (numN nf) ;

View File

@@ -61,6 +61,7 @@ oper
infIness : InfForm ; -- e.g. "tekemässä"
infElat : InfForm ; -- e.g. "tekemästä"
infIllat : InfForm ; -- e.g. "tekemään"
infAdess : InfForm ; -- e.g. "tekemällä"
infPresPart : InfForm ; -- e.g. "tekevän"
infPresPartAgr : InfForm ; -- e.g. "tekevänsä"
@@ -137,6 +138,19 @@ oper
= \oma, asunto -> lin N {s = \\c => oma.s ! c + "_" + asunto.s ! c ; h = asunto.h} ;
} ;
compN : N -> N -> N = \valkuainen,aine -> aine ** {
s = \\c => (StemFin.snoun2nounBind valkuainen).s ! NCompound + aine.s ! c
} ;
genCompN = overload {
genCompN : N -> N -> N = genitiveCompoundN Sg ;
genCompN : Number -> N -> N -> N = genitiveCompoundN
} ;
genitiveCompoundN : Number -> N -> N -> N = \n,veri,paine -> paine ** {
s = \\c => (StemFin.snoun2nounBind veri).s ! NCase n Gen + paine.s ! c
} ;
-- Nouns used as functions need a case, of which the default is
-- the genitive.
@@ -177,17 +191,23 @@ oper
} ;
invarA : Str -> A -- invariant adjective, e.g. "kelpo"
= \s -> lin A {s = \\_,_ => s ; h = Back} ; ----- stemming adds bogus endings
= \s -> lin A {s = \\_,_ => s ; h = Back ; p = [] ; hasPrefix = False} ; ----- stemming adds bogus endings
prefixA : Str -> A -> A = \pr,a -> a ** {
p = pr ;
hasPrefix = True
} ;
-- Two-place adjectives need a case for the second argument.
mkA2 = overload {
mkA2 : Str -> A2 -- e.g. "vihainen" (jollekin)
= \s -> mkA s ** {c2 = mkPrep allative ; lock_A2 = <>} ;
= \a -> let adj = mkA a ;
in lin A2 (adj ** {c2 = casePrep allative}) ;
mkA2 : Str -> Prep -> A2 -- e.g. "jaollinen" (mkPrep adessive)
= \a,p -> mkA a ** {c2 = p ; lock_A2 = <>} ;
= \a,p -> let adj = mkA a in lin A2 (adj ** {c2=p}) ;
mkA2 : A -> Prep -> A2 -- e.g. "jaollinen" (mkPrep adessive)
= \a,p -> a ** {c2 = p ; lock_A2 = <>} ;
= \a,p -> lin A2 (a ** {c2 = p}) ;
} ;
@@ -384,7 +404,10 @@ mkVS = overload {
ablative = Ablat ;
allative = Allat ;
infFirst = Inf1 ; infElat = Inf3Elat ; infIllat = Inf3Illat ; infIness = Inf3Iness ; infPresPart = InfPresPart ; infPresPartAgr = InfPresPartAgr ;
infFirst = Inf1 ;
infElat = Inf3Elat ; infIllat = Inf3Illat ;
infIness = Inf3Iness ; infAdess = Inf3Adess ;
infPresPart = InfPresPart ; infPresPartAgr = InfPresPartAgr ;
prePrep : Case -> Str -> Prep =
\c,p -> lin Prep {c = NPCase c ; s = <tagFeature (tagPOS "ADP" p) "AdvType" "Pre", [],\\_ => []>} ; -- no possessive suffix
@@ -637,25 +660,26 @@ mkVS = overload {
mkA = overload {
mkA : Str -> A = mkA_1 ;
mkA : N -> A = \n -> noun2adjDeg n ** {lock_A = <>} ;
mkA : N -> (kivempaa,kivinta : Str) -> A = \n -> regAdjective n ;
mkA : N -> (kivempi,kivin : Str) -> A = \n -> regAdjective n ;
mkA : (sana : AK) -> A = \w -> noun2adjDeg (nforms2snoun w.s) ;
mkA : (hyva,parempi,paras : N) -> (hyvin,paremmin,parhaiten : Str) -> A
= \h,p,ps,hn,pn,ph -> lin A (mkAdj h p ps hn pn ph) ;
mkA : V -> A = presPartA ;
= \h,p,ps,hn,pn,ph -> lin A (mkAdj h p ps hn pn ph ** {p=[]; hasPrefix=False}) ;
mkA : V -> A = presActA ;
} ;
mkA_1 : Str -> A = \x -> lin A (noun2adjDeg (mk1N x)) ;
-- auxiliaries
mkAdjective : (_,_,_ : SAdj) -> A = \hyva,parempi,paras ->
mkAdjective : (_,_,_ : SAdj) -> A = \hyva,parempi,paras -> lin A
{s = table {
Posit => hyva.s ;
Compar => parempi.s ;
Superl => paras.s
} ;
h = hyva.h ; ---- different for parempi, paras
lock_A = <>
p = [] ;
hasPrefix = False
} ;
regAdjective : SNoun -> Str -> Str -> A = \kiva, kivempi, kivin ->
mkAdjective
@@ -669,13 +693,21 @@ mkVS = overload {
(snoun2superl suuri) ;
presPartA : SVerb -> A = \tullaSV ->
let tulla = sverb2verb True tullaSV ;
tuleva : NForm => Str = \\nf => tulla.s ! PresPartAct (AN nf) ;
tuleva_SN = { s = tuleva ;
h = tullaSV.h } ;
presActA : SVerb -> A = \tulla ->
let tuleva : NForm => Str = \\nf => (sverb2verb True tulla).s ! PresPartAct (AN nf) ;
in noun2adjDeg { s = tuleva ; h = tulla.h } ;
in noun2adjDeg tuleva_SN ;
presPassA : SVerb -> A = \mennä ->
let mentävä : NForm => Str = \\nf => (sverb2verb True mennä).s ! PresPartPass (AN nf) ;
in noun2adjDeg { s = mentävä ; h = mennä.h } ;
pastActA : SVerb -> A = \syntyä ->
let syntynyt : NForm => Str = \\nf => (sverb2verb True syntyä).s ! PastPartAct (AN nf) ;
in noun2adjDeg { s = syntynyt ; h = syntyä.h } ;
pastPassA : SVerb -> A = \sulkea ->
let suljettu : NForm => Str = \\nf => (sverb2verb True sulkea).s ! PastPartPass (AN nf) ;
in noun2adjDeg { s = suljettu ; h = sulkea.h } ;
-- verbs