Convert many RGL modules from Latin-1 to UTF-8 to speed up compilation

Also add flags coding=utf8 to silence warnings.
This commit is contained in:
hallgren
2014-08-19 19:42:05 +00:00
parent efcec8e7e9
commit be301d8a5e
135 changed files with 2828 additions and 2810 deletions

View File

@@ -1,7 +1,7 @@
--# -coding=latin1
concrete AdjectiveFin of Adjective = CatFin ** open ResFin, StemFin, Prelude in {
flags optimize=all_subs ; -- gfc size from 2864336 to 6786 - i.e. factor 422
coding=utf8 ;
lin
@@ -12,7 +12,7 @@ concrete AdjectiveFin of Adjective = CatFin ** open ResFin, StemFin, Prelude in
let acomp = (snoun2nounSep {s = \\f => a.s ! Compar ! sAN f ; h = a.h}).s in {
s = \\isMod,af => case isMod of {
True => np.s ! NPCase Part ++ acomp ! af ; -- minua isompi
_ => acomp ! af ++ "kuin" ++ np.s ! NPCase Nom -- isompi kuin minä
_ => acomp ! af ++ "kuin" ++ np.s ! NPCase Nom -- isompi kuin minä
}
} ;
CAdvAP ad ap np = {

View File

@@ -1,5 +1,5 @@
--# -coding=latin1
concrete AdverbFin of Adverb = CatFin ** open ResFin, Prelude, StemFin in {
flags coding=utf8 ;
lin
PositAdvAdj a = {s = a.s ! Posit ! sAAdv} ;
@@ -14,7 +14,7 @@ concrete AdverbFin of Adverb = CatFin ** open ResFin, Prelude, StemFin in {
AdAdv = cc2 ;
PositAdAAdj a = {s = sANGen (a.s ! Posit)} ; -- älyttömän
PositAdAAdj a = {s = sANGen (a.s ! Posit)} ; -- älyttömän
SubjS = cc2 ;
----b AdvSC s = s ;

View File

@@ -1,7 +1,7 @@
--# -coding=latin1
concrete CatFin of Cat = CommonX ** open ResFin, StemFin, Prelude in {
flags optimize=all_subs ;
coding=utf8 ;
lincat
@@ -40,7 +40,7 @@ concrete CatFin of Cat = CommonX ** open ResFin, StemFin, Prelude in {
-- Adjective
-- The $Bool$ tells whether usage is modifying (as opposed to
-- predicative), e.g. "x on suurempi kuin y" vs. "y:tä suurempi luku".
-- predicative), e.g. "x on suurempi kuin y" vs. "y:tä suurempi luku".
AP = {s : Bool => NForm => Str} ;
@@ -53,13 +53,13 @@ concrete CatFin of Cat = CommonX ** open ResFin, StemFin, Prelude in {
NP = {s : NPForm => Str ; a : Agr ; isPron : Bool ; isNeg : Bool} ;
Det = {
s1 : Case => Str ; -- minun kolme
s2 : Harmony => Str ; -- -ni (Front for -nsä, Back for -nsa)
s2 : Harmony => Str ; -- -ni (Front for -nsä, Back for -nsa)
sp : Case => Str ; -- se (substantival form)
n : Number ; -- Pl (agreement feature for verb)
isNum : Bool ; -- True (a numeral is present)
isPoss : Bool ; -- True (a possessive suffix is present)
isDef : Bool ; -- True (verb agrees in Pl, Nom is not Part)
isNeg : Bool -- False (only True for "mikään", "kukaan")
isNeg : Bool -- False (only True for "mikään", "kukaan")
} ;
---- QuantSg, QuantPl = {s1 : Case => Str ; s2 : Str ; isPoss, isDef : Bool} ;
Ord = {s : NForm => Str} ;

View File

@@ -2,6 +2,7 @@
concrete ConstructionFin of Construction = CatFin **
open SyntaxFin, SymbolicFin, ParadigmsFin, (L = LexiconFin), (E = ExtraFin), (R = ResFin), Prelude in {
flags coding=utf8 ;
lin
hungry_VP = mkVP have_V2 (lin NP (mkNP (ParadigmsFin.mkN "nälkä"))) ;

View File

@@ -1,13 +1,13 @@
--# -path=.:abstract:common:prelude
--# -coding=latin1
concrete ExtraFin of ExtraFinAbs = CatFin **
open ResFin, MorphoFin, Coordination, Prelude, NounFin, VerbFin, StructuralFin, StemFin, (R = ParamX) in {
flags coding=utf8 ;
lin
GenNP np = {
s1,sp = \\_,_ => np.s ! NPCase Gen ;
s2 = case np.isPron of { -- "isän auto", "hänen autonsa"
s2 = case np.isPron of { -- "isän auto", "hänen autonsa"
True => table {Front => BIND ++ possSuffixFront np.a ;
Back => BIND ++ possSuffix np.a } ;
False => \\_ => []
@@ -50,8 +50,8 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
[VPS] = {
s1,s2 : Agr => Str ;
sc : SubjCase ; --- take the first: minä osaan kutoa ja täytyy virkata
h : Harmony --- take the first: osaanko minä kutoa ja käyn koulua
sc : SubjCase ; --- take the first: minä osaan kutoa ja täytyy virkata
h : Harmony --- take the first: osaanko minä kutoa ja käyn koulua
} ;
lin
@@ -120,7 +120,7 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
-- i_implicPron = mkPronoun [] "minun" "minua" "minuna" "minuun" Sg P1 ;
whatPart_IP = {
s = table {
NPCase Nom | NPAcc => "mitä" ;
NPCase Nom | NPAcc => "mitä" ;
c => whatSg_IP.s ! c
} ;
n = Sg
@@ -150,7 +150,7 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
let
n = complNumAgr agr ;
c = case n of {
Sg => Nom ; -- minä olen iso ; te olette iso
Sg => Nom ; -- minä olen iso ; te olette iso
Pl => ResFin.Part -- me olemme isoja ; te olette isoja
} --- definiteness of NP ?
in "kuinka" ++ ap.s ! False ! (NCase n c)
@@ -161,13 +161,13 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
ProDrop p = {
s = table {NPCase (Nom) => [] ; c => p.s ! c} ;
poss = [] ;
-- drop Gen only works in adjectival position: "autoni", but not in "ø täytyy mennä"
-- drop Gen only works in adjectival position: "autoni", but not in "ø täytyy mennä"
a = p.a ;
hasPoss = p.hasPoss ;
} ;
ProDropPoss p = {
s1 = \\_,_ => case p.a of {Ag _ P3 => p.s ! NPCase Gen ; _ => []} ; -- hänen nimensä ; minun nimeni
s1 = \\_,_ => case p.a of {Ag _ P3 => p.s ! NPCase Gen ; _ => []} ; -- hänen nimensä ; minun nimeni
sp = \\_,_ => p.s ! NPCase Gen ;
s2 = case p.hasPoss of {
True => table {Front => BIND ++ possSuffixFront p.a ;
@@ -233,13 +233,13 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
ClPlusWithAdv c = c ;
noPart = {s = \\_ => []} ;
han_Part = mkPart "han" "hän" ;
pa_Part = mkPart "pa" "pä" ;
pas_Part = mkPart "pas" "päs" ;
ko_Part = mkPart "ko" "kö" ;
kos_Part = mkPart "kos" "kös" ;
kohan_Part = mkPart "kohan" "köhän" ;
pahan_Part = mkPart "pahan" "pähän" ;
han_Part = mkPart "han" "hän" ;
pa_Part = mkPart "pa" "pä" ;
pas_Part = mkPart "pas" "päs" ;
ko_Part = mkPart "ko" "kö" ;
kos_Part = mkPart "kos" "kös" ;
kohan_Part = mkPart "kohan" "köhän" ;
pahan_Part = mkPart "pahan" "pähän" ;
PassVPSlash vp = passVP vp vp.c2 ;
@@ -252,7 +252,7 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
---- uses inversion of active: Guernican maalasi Picasso. TODO: use the agent participle
---- TODO maybe squeeze s2 between the fin and inf (but this is subtle)
---- sinua olen rakastanut minä -> sinua olen minä rakastanus
---- sinua olen rakastanut minä -> sinua olen minä rakastanus
-- advantage though: works for all V2 verbs, need not be transitive
---- TODO: agr should be to the agent

View File

@@ -1,4 +1,3 @@
--# -coding=latin1
abstract ExtraFinAbs = Extra [
IP, IQuant,Num,CN,VPSlash,
GenNP,GenIP,GenRP,
@@ -6,6 +5,7 @@ abstract ExtraFinAbs = Extra [
VPI,ListVPI,BaseVPI,ConsVPI,MkVPI,ComplVPIVV,ConjVPI,
VPS,ListVPS,BaseVPS,ConsVPS,ConjVPS,MkVPS,PredVPS,ConjVPS,Tense,Temp,Pol,S,
VV,VP,Conj,NP,Quant,IAdv,IComp,ICompAP,IAdvAdv,Adv,AP, Pron, RP, ProDrop] ** {
flags coding=utf8 ;
fun
GenCN : NP -> CN -> CN ; -- auton merkki
@@ -13,17 +13,17 @@ abstract ExtraFinAbs = Extra [
AdvExistNP : Adv -> NP -> Cl ; -- kuvassa olemme me --- now obsolete because of Idiom.ExistNPAdv
AdvPredNP : Adv -> V -> NP -> Cl ; -- kuvassa hymyilee Veikko
ICompExistNP : IComp -> NP -> QCl ; -- missä/kuka on Veikko
IAdvPredNP : IAdv -> V -> NP -> QCl ; -- mistä alkaa Ruotsi
ICompExistNP : IComp -> NP -> QCl ; -- missä/kuka on Veikko
IAdvPredNP : IAdv -> V -> NP -> QCl ; -- mistä alkaa Ruotsi
RelExistNP : Prep -> RP -> NP -> RCl ; -- jossa on jazzia
-- i_implicPron : Pron ; -- (minä), minut, ...
-- i_implicPron : Pron ; -- (minä), minut, ...
whatPart_IP : IP ;
PartCN : CN -> NP ; -- olutta
vai_Conj : Conj ; -- minä vai sinä? ("or" in question)
vai_Conj : Conj ; -- minä vai sinä? ("or" in question)
CompPartAP : AP -> Comp ; -- kahvi on valmista
@@ -36,12 +36,12 @@ abstract ExtraFinAbs = Extra [
Part ; -- discourse particle
fun
S_SVO : Part -> Temp -> Pol -> ClPlus -> S ; -- mepäs juomme maitoa nyt
S_SVO : Part -> Temp -> Pol -> ClPlus -> S ; -- mepäs juomme maitoa nyt
S_OSV : Part -> Temp -> Pol -> ClPlusObj -> S ; -- maitoapas me juomme nyt
S_VSO : Part -> Temp -> Pol -> ClPlus -> S ; -- juommepas me maitoa nyt
S_ASV : Part -> Temp -> Pol -> ClPlusAdv -> S ; -- nytpäs me juomme maitoa
S_ASV : Part -> Temp -> Pol -> ClPlusAdv -> S ; -- nytpäs me juomme maitoa
-- S_SOV : Part -> Temp -> Pol -> ClPlus -> S ; -- mepäs maitoa juomme
-- S_SOV : Part -> Temp -> Pol -> ClPlus -> S ; -- mepäs maitoa juomme
S_OVS : Part -> Temp -> Pol -> ClPlus -> S ; -- maitoapas juomme me
-- S_VOS : Part -> Temp -> Pol -> ClPlus -> S ; -- juommepas maitoa me

View File

@@ -1,6 +1,6 @@
--# -coding=latin1
resource Kotus = open MorphoFin, Prelude in {
flags coding=utf8 ;
-- interpretations of paradigms in KOTUS word list, used in DictFin.
@@ -8,61 +8,61 @@ oper vowelHarmony = vowHarmony ;
oper
d01 : Str -> NForms -- 1780 öljy
d01 : Str -> NForms -- 1780 öljy
= \s -> dUkko s (s + "n") ;
d01A : Str -> NForms -- 166 yökkö
d01A : Str -> NForms -- 166 yökkö
= \s -> dUkko s (weakGrade s + "n") ;
d02 : Str -> NForms -- 1189 ääntely
d02 : Str -> NForms -- 1189 ääntely
= \s -> dSilakka s (s + "n") (s + "j" + getHarmony (last s)) ;
d03 : Str -> NForms -- 481 ääntiö
d03 : Str -> NForms -- 481 ääntiö
= \s -> dSilakka s (s + "n") (s + "it" + vowelHarmony s) ;
d04A : Str -> NForms -- 273 äpärikkö
d04A : Str -> NForms -- 273 äpärikkö
= \s -> let ws = weakGrade s in
dSilakka s (ws + "n") (ws + "it" + getHarmony (last s)) ;
d05 : Str -> NForms -- 3212 öljymaali
d05 : Str -> NForms -- 3212 öljymaali
= \s -> case last s of {
"i" => dPaatti s (s + "n") ;
_ => dUnix s
} ;
d05A : Str -> NForms -- 1959 öylätti
d05A : Str -> NForms -- 1959 öylätti
= \s -> dPaatti s (weakGrade s + "n") ;
d06 : Str -> NForms -- 1231 öykkäri
d06 : Str -> NForms -- 1231 öykkäri
= \s -> dTohtori s ;
d07 : Str -> NForms -- 81 vuoksi
= \s -> dArpi s (init s + "en") ;
d07A : Str -> NForms -- 70 väki
d07A : Str -> NForms -- 70 väki
= \s -> dArpi s (init (weakGrade s) + "en") ;
d08 : Str -> NForms -- 99 à la carte
d08 : Str -> NForms -- 99 à la carte
= \s -> dNukke s (s + "n") ;
d08A : Str -> NForms -- 5 vinaigrette
= \s -> dNukke s (weakGrade s + "n") ;
d09 : Str -> NForms -- 696 ääriraja
d09 : Str -> NForms -- 696 ääriraja
= \s -> let a = last s in dSilakka s
(s + "n")
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
d09A : Str -> NForms -- 1040 ääniraita
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
d09A : Str -> NForms -- 1040 ääniraita
= \s -> let a = last s in dSilakka s
(weakGrade s + "n")
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
d10 : Str -> NForms -- 2119 äänittäjä
(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)) ;
d10A : Str -> NForms -- 284 änkkä
d10A : Str -> NForms -- 284 änkkä
= \s -> dSilakka s (weakGrade s + "n") (init s + "i" + vowelHarmony (last s)) ;
d11 : Str -> NForms -- 46 ödeema
d11 : Str -> NForms -- 46 ödeema
= \s -> dSilakka s (weakGrade s + "n") (init s + "i" + vowelHarmony (last s)) ;
d12 : Str -> NForms -- 1125 örinä
d12 : Str -> NForms -- 1125 örinä
= \s -> let a = vowelHarmony (last s) in
dSilakka s (s + "n")
(init s + case a of {"a" => "o" ; _ => "ö"} + "it" + a) ;
(init s + case a of {"a" => "o" ; _ => "ö"} + "it" + a) ;
d13 : Str -> NForms -- 157 virtaska
= \s -> let a = vowelHarmony (last s) in
dSilakka s (s + "n")
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
d14A : Str -> NForms -- 244 ötökkä
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
d14A : Str -> NForms -- 244 ötökkä
= \s -> let a = vowelHarmony (last s) ; ws = weakGrade s in
dSilakka s (ws + "n")
(init ws + case a of {"a" => "o" ; _ => "ö"} + "it" + a) ;
d15 : Str -> NForms -- 170 äreä
(init ws + case a of {"a" => "o" ; _ => "ö"} + "it" + a) ;
d15 : Str -> NForms -- 170 äreä
= dKorkea ;
d16 : Str -> NForms -- 2 kumpikin --?
= \s -> let kumpi = Predef.take 5 s ; kin = Predef.drop 5 s in
@@ -71,13 +71,13 @@ oper
= dSuurempi ;
d17 : Str -> NForms -- 38 virkkuu
= dPaluu ;
d18 : Str -> NForms -- voi, tee, sää
d18 : Str -> NForms -- voi, tee, sää
= dPuu ;
d19 : Str -> NForms -- 6 yö
d19 : Str -> NForms -- 6 yö
= dSuo ;
d20 : Str -> NForms -- 46 voodoo
= dPaluu ;
d21 : Str -> NForms -- 22 tax-free --? rosé
d21 : Str -> NForms -- 22 tax-free --? rosé
= dPuu ;
d22 : Str -> NForms -- 13 tournedos
= \s -> nForms10
@@ -89,20 +89,20 @@ oper
= \s -> dArpi s (init s + "en") ;
d25 : Str -> NForms -- 9 tuomi
= \s -> dArpi s (init s + "en") ;
d26 : Str -> NForms -- 113 ääri
d26 : Str -> NForms -- 113 ääri
= \s -> dArpi s (init s + "en") ;
d27 : Str -> NForms -- 23 vuosi
= \s -> dArpi s (Predef.tk 2 s + "den") ;
d28 : Str -> NForms -- 13 virsi
= \s -> dArpi s (Predef.tk 2 s + "ren") ;
d28A : Str -> NForms -- 1 jälsi
d28A : Str -> NForms -- 1 jälsi
= \s -> dArpi s (Predef.tk 2 s + "len") ;
d29 : Str -> NForms -- 1 lapsi
= \s -> let lapsi = dArpi s (init s + "en") in
table {2 => Predef.tk 3 s + "ta" ; i => lapsi ! i} ;
d30 : Str -> NForms -- 2 veitsi
= \s -> let lapsi = dArpi s (init s + "en") in
table {2 => Predef.tk 3 s + "stä" ; i => lapsi ! i} ;
table {2 => Predef.tk 3 s + "stä" ; i => lapsi ! i} ;
d31 : Str -> NForms -- 3 yksi
= \s -> let
y = Predef.tk 3 s ;
@@ -112,9 +112,9 @@ oper
(s + "en") (s + a) (s + "n" + a) (s + "ss" + a) (s + "in") ;
d32 : Str -> NForms -- 20 uumen
= \s -> dPiennar s (s + "en") ;
d32A : Str -> NForms -- 54 ystävätär
d32A : Str -> NForms -- 54 ystävätär
= \s -> dPiennar s (strongGrade (init s) + last s + "en") ;
d33 : Str -> NForms -- 168 väistin
d33 : Str -> NForms -- 168 väistin
= \s -> dLiitin s (init s + "men") ;
d33A : Str -> NForms -- 181 yllytin
= \s -> dLiitin s (strongGrade (init s) + "men") ;
@@ -124,14 +124,14 @@ oper
s (alastom + "an") (s + "ta") (alastom + "ana") (alastom + "aan")
(alastom + "ien") (alastom + "ia") (alastom + "ina") (alastom + "issa")
(alastom + "iin") ;
d34A : Str -> NForms -- 569 ääretön
d34A : Str -> NForms -- 569 ääretön
= dOnneton ;
d35A : Str -> NForms -- 1 lämmin
= \s -> let lämpim = strongGrade (init s) + "m" in
d35A : Str -> NForms -- 1 lämmin
= \s -> let lämpim = strongGrade (init s) + "m" in
nForms10
s (lämpim + "än") (s + "tä") (lämpim + "änä") (lämpim + "ään")
(lämpim + "ien") (lämpim + "iä") (lämpim + "inä") (lämpim + "issä")
(lämpim + "iin") ;
s (lämpim + "än") (s + "tä") (lämpim + "änä") (lämpim + "ään")
(lämpim + "ien") (lämpim + "iä") (lämpim + "inä") (lämpim + "issä")
(lämpim + "iin") ;
d36 : Str -> NForms -- 11 ylin
= dSuurin ;
d37 : Str -> NForms -- 1 vasen
@@ -140,32 +140,32 @@ oper
s (vasem + "man") (s + "ta") (vasem + "pana") (vasem + "paan")
(vasem + "pien") (vasem + "pia") (vasem + "pina") (vasem + "missa")
(vasem + "piin") ;
d38 : Str -> NForms -- 4195 öykkärimäinen
d38 : Str -> NForms -- 4195 öykkärimäinen
= dNainen ;
d39 : Str -> NForms -- 2730 örähdys
d39 : Str -> NForms -- 2730 örähdys
= dJalas ;
d40 : Str -> NForms -- 2482 öykkärimäisyys
d40 : Str -> NForms -- 2482 öykkärimäisyys
= dLujuus ;
d41 : Str -> NForms -- 127 äyräs
d41 : Str -> NForms -- 127 äyräs
= \s -> let is = init s in dRae s (is + last is + "n") ;
d41A : Str -> NForms -- 401 öljykangas
d41A : Str -> NForms -- 401 öljykangas
= \s -> let is = init s in dRae s (strongGrade is + last is + "n") ;
d42 : Str -> NForms -- 1 mies
= \s -> let mieh = init s + "h" in
nForms10
s (mieh + "en") (s + "tä") (mieh + "enä") (mieh + "een")
(s + "ten") (mieh + "iä") (mieh + "inä") (mieh + "issä")
s (mieh + "en") (s + "tä") (mieh + "enä") (mieh + "een")
(s + "ten") (mieh + "iä") (mieh + "inä") (mieh + "issä")
(mieh + "iin") ;
d43 : Str -> NForms -- 11 tiehyt
= \s -> dRae s (init s + "en") ;
d43A : Str -> NForms -- 1 immyt
= \s -> dRae s (strongGrade (init s) + "en") ;
d44 : Str -> NForms -- 1 kevät
= \s -> let kevä = init s in
d44 : Str -> NForms -- 1 kevät
= \s -> let kevä = init s in
nForms10
s (kevä + "än") (s + "tä") (kevä + "änä") (kevä + "äseen")
(s + "iden") (kevä + "itä") (kevä + "inä") (kevä + "issä")
(kevä + "isiin") ;
s (kevä + "än") (s + "tä") (kevä + "änä") (kevä + "äseen")
(s + "iden") (kevä + "itä") (kevä + "inä") (kevä + "issä")
(kevä + "isiin") ;
d45 : Str -> NForms -- 23 yhdes
= \s -> let yhde = init s ; a = vowelHarmony s in
nForms10
@@ -180,9 +180,9 @@ oper
(tuha + "nsiin") ;
d47 : Str -> NForms -- 46 ylirasittunut
= dOttanut ;
d48 : Str -> NForms -- 346 äpäre
d48 : Str -> NForms -- 346 äpäre
= \s -> dRae s (s + last s + "n") ;
d48A : Str -> NForms -- 481 äänne
d48A : Str -> NForms -- 481 äänne
= \s -> dRae s (strongGrade s + "en") ;
d49 : Str -> NForms -- 31 vempele
= \s -> case last s of {
@@ -192,32 +192,32 @@ oper
d49A : Str -> NForms -- 11 vemmel
= \s -> dPiennar s (strongGrade (init s) + "len") ;
{-
d50 : Str -> NForms -- 520 vääräsääri
d50 : Str -> NForms -- 520 vääräsääri
= \s -> ;
d51 : Str -> NForms -- 62 vierasmies
= \s -> ;
-}
c52 : Str -> VForms -- 667 ärjyä
c52 : Str -> VForms -- 667 ärjyä
= \s -> cHukkua s (init s + "n") ;
c52A : Str -> VForms -- 1568 öljyyntyä
c52A : Str -> VForms -- 1568 öljyyntyä
= \s -> cHukkua s (weakGrade (init s) + "n") ;
c53 : Str -> VForms -- 605 äänestää
c53 : Str -> VForms -- 605 äänestää
= \s -> let ott = Predef.tk 2 s in
cOttaa s (init s + "n") (ott + "in") (ott + "i") ;
c53A : Str -> VForms -- 2121 örähtää
c53A : Str -> VForms -- 2121 örähtää
= \s -> let ota = weakGrade (init s) in
cOttaa s (ota + "n") (init ota + "in") (Predef.tk 2 s + "i") ;
c54 : Str -> VForms -- 2 pieksää
c54 : Str -> VForms -- 2 pieksää
= \s -> let ott = Predef.tk 2 s in
cOttaa s (init s + "n") (ott + "in") (ott + "i") ;
c54A : Str -> VForms -- 316 ääntää
c54A : Str -> VForms -- 316 ääntää
= \s -> let ota = weakGrade (init s) ; o = Predef.tk 2 ota in
cOttaa s (ota + "n") (o + "sin") (o + "si") ;
c55A : Str -> VForms -- 7 yltää
c55A : Str -> VForms -- 7 yltää
= c54A ; --? diff: variation ylti/ylsi
c56 : Str -> VForms -- 22 valaa
= \s -> let val = Predef.tk 2 s in
cOttaa s (init s + "n") (val + "oin") (val + "oi") ; -- never ö
cOttaa s (init s + "n") (val + "oin") (val + "oi") ; -- never ö
c56A : Str -> VForms -- 28 virkkaa
= \s -> let ota = weakGrade (init s) ; ot = init ota in
cOttaa s (ota + "n") (ot + "oin") (ot + "oi") ;
@@ -232,69 +232,69 @@ oper
vForms12 s (tunne + "n") (tunte + "e") (tunte + "vat") (tunte + "kaa") (tunne + "taan")
(tuns + "in") (tuns + "i") (init tunte + "isi") (tunte + "nut") (tunne + "ttu")
(tunte + "nee") ; -- just one verb
c60A : Str -> VForms -- 1 lähteä
= c58A ; --? diff lähti/läksi, just one verb
c61 : Str -> VForms -- 249 äyskiä
c60A : Str -> VForms -- 1 lähteä
= c58A ; --? diff lähti/läksi, just one verb
c61 : Str -> VForms -- 249 äyskiä
= \s -> cHukkua s (init s + "n") ;
c61A : Str -> VForms -- 153 vääntelehtiä
c61A : Str -> VForms -- 153 vääntelehtiä
= \s -> cHukkua s (weakGrade (init s) + "n") ;
c62 : Str -> VForms -- 684 öykkäröidä
c62 : Str -> VForms -- 684 öykkäröidä
= \s -> cJuoda s ;
c63 : Str -> VForms -- 3 saada
= c62 ;
c64 : Str -> VForms -- 8 viedä
c64 : Str -> VForms -- 8 viedä
= c62 ;
c65 : Str -> VForms -- 1 käydä
c65 : Str -> VForms -- 1 käydä
= \s -> let kay = Predef.tk 2 s ; kavi = init kay + "vi" in
vForms12 s (kay + "n") kay (kay + "vät") (kay + "kää") (kay + "dään")
vForms12 s (kay + "n") kay (kay + "vät") (kay + "kää") (kay + "dään")
(kavi + "n") kavi (kavi + "si") (kay + "nyt") (kay + "tty")
(kay + "nee") ; -- just one verb
c66 : Str -> VForms -- 268 öristä
c66 : Str -> VForms -- 268 öristä
= \s -> cKuunnella s (Predef.tk 2 s + "in") ;
c66A : Str -> VForms -- 3 vavista
= \s -> cKuunnella s (strongGrade (Predef.tk 3 s) + "sin") ;
c67 : Str -> VForms -- 704 ällistellä
c67 : Str -> VForms -- 704 ällistellä
= \s -> cKuunnella s (Predef.tk 2 s + "in") ;
c67A : Str -> VForms -- 634 äännellä
c67A : Str -> VForms -- 634 äännellä
= \s -> cKuunnella s (strongGrade (Predef.tk 3 s) + "lin") ;
c68 : Str -> VForms -- 49 viheriöidä
= c62 ; -- diff viheriöin/viheriöitsen
c69 : Str -> VForms -- 48 villitä
c68 : Str -> VForms -- 49 viheriöidä
= c62 ; -- diff viheriöin/viheriöitsen
c69 : Str -> VForms -- 48 villitä
= \s -> cHarkita s ;
c70 : Str -> VForms -- 3 syöstä
c70 : Str -> VForms -- 3 syöstä
= \s -> cJuosta s (Predef.tk 3 s + "ksen") ;
c71 : Str -> VForms -- 2 tehdä
c71 : Str -> VForms -- 2 tehdä
= \s -> let te = Predef.tk 3 s in
vForms12 s (te + "en") (te + "kee") (te + "kevät") (te + "hkää") (te + "hdään")
vForms12 s (te + "en") (te + "kee") (te + "kevät") (te + "hkää") (te + "hdään")
(te + "en") (te + "ki") (te + "kisi") (te + "hnyt") (te + "hty")
(te + "hnee") ; -- just two verbs: nähdä, tehdä
c72 : Str -> VForms -- 93 yletä
(te + "hnee") ; -- just two verbs: nähdä, tehdä
c72 : Str -> VForms -- 93 yletä
= \s -> cValjeta s (Predef.tk 2 s + "ni") ;
c72A : Str -> VForms -- 52 yhdetä
c72A : Str -> VForms -- 52 yhdetä
= \s -> cValjeta s (strongGrade (Predef.tk 2 s) + "ni") ;
c73 : Str -> VForms -- 600 äkseerata
c73 : Str -> VForms -- 600 äkseerata
= \s -> cPudota s (Predef.tk 2 s + "si") ;
c73A : Str -> VForms -- 313 änkätä
c73A : Str -> VForms -- 313 änkätä
= \s -> cPudota s (strongGrade (Predef.tk 2 s) + "si") ;
c74 : Str -> VForms -- 99 öljytä
c74 : Str -> VForms -- 99 öljytä
= \s -> cPudota s (Predef.tk 2 s + "si") ;
c74A : Str -> VForms -- 72 ängetä
c74A : Str -> VForms -- 72 ängetä
= \s -> cPudota s (strongGrade (Predef.tk 2 s) + "si") ;
c75 : Str -> VForms -- 39 viritä
c75 : Str -> VForms -- 39 viritä
= \s -> cPudota s (Predef.tk 2 s + "si") ;
c75A : Str -> VForms -- 9 siitä
c75A : Str -> VForms -- 9 siitä
= \s -> cPudota s (strongGrade (Predef.tk 2 s) + "si") ;
c76A : Str -> VForms -- 2 tietää
c76A : Str -> VForms -- 2 tietää
= \s -> let tieta = init s ; tieda = weakGrade tieta ; ties = Predef.tk 2 tieta + "s" in
cOttaa s (tieda + "n") (ties + "in") (ties + "i") ; -- only tietaa, taitaa
-- defective verbs
c77 : Str -> VForms -- 3 vipajaa
= c56A ; ----
c78 : Str -> VForms -- 31 ähkää
c78 : Str -> VForms -- 31 ähkää
= c56A ; ----
c78A : Str -> VForms -- 1 tuikkaa
= c56A ; ----
c99 : Str -> Str -- 5453 öykkärimäisesti
c99 : Str -> Str -- 5453 öykkärimäisesti
= \s -> s ;
c101 : Str -> Str -- pronouns etc

View File

@@ -1,9 +1,9 @@
--# -path=.:prelude
--# -coding=latin1
concrete LexiconFin of Lexicon = CatFin ** open MorphoFin, StemFin, ParadigmsFin in {
flags
coding=utf8 ;
optimize=values ;
@@ -14,16 +14,16 @@ lin
apartment_N = mkN "asunto" ;
apple_N = mkN "omena" ; --- omenia, not omenoita
art_N = mkN "taide" ;
ask_V2Q = mkV2 (mkV "kysyä") (casePrep ablative) ;
ask_V2Q = mkV2 (mkV "kysyä") (casePrep ablative) ;
baby_N = mkN "vauva" ;
bad_A = mkA (mkN "paha") "pahempi" "pahin" ;
bank_N = mkN "pankki" ;
beautiful_A = mkA (mkN "kaunis") "kauniimpi" "kaunein" ;
become_VA = mkVA (mkV "tulla") (casePrep translative) ;
beer_N = mkN "olut" "oluita" ;
beg_V2V = mkV2V (mk2V "pyytää" "pyysi") (casePrep partitive) ;
beg_V2V = mkV2V (mk2V "pyytää" "pyysi") (casePrep partitive) ;
big_A = mkA (mkN "suuri" "suuria") "suurempi" "suurin" ;
bike_N = mkN "polku" (mkN "pyörä") ;
bike_N = mkN "polku" (mkN "pyörä") ;
bird_N = mkN "lintu" ;
black_A = mkA (mkN "musta") "mustempi" "mustin" ;
blue_A = mkA (mkN "sininen") "sinisempi" "sinisin" ;
@@ -32,12 +32,12 @@ lin
boot_N = mkN "saapas" ;
boss_N = mkN "pomo" ;
boy_N = mkN "poika" "pojan" "poikia" ;
bread_N = mkN "leipä" ;
bread_N = mkN "leipä" ;
break_V2 = mkV2 (mkV "rikkoa") ;
broad_A = mkA (mkN "leveä") "leveämpi" "levein" ;
broad_A = mkA (mkN "leveä") "leveämpi" "levein" ;
brother_N2 = mkN2 (
mkN "veli" "veljen" "veljenä" "veljeä" "veljeen"
"veljinä" "veljissä" "veljien" "veljiä" "veljiin") ;
mkN "veli" "veljen" "veljenä" "veljeä" "veljeen"
"veljinä" "veljissä" "veljien" "veljiä" "veljiin") ;
brown_A = mkA (mkN "ruskea") "ruskeampi" "ruskein" ;
butter_N = mk3N "voi" "voin" "voita" ; ---- errors in Part
buy_V2 = mkV2 (mkV "ostaa") ;
@@ -57,42 +57,42 @@ lin
clever_A = mkA (mkN "viisas") ;
close_V2 = mkV2 (mkV "sulkea") ;
coat_N = mkN "takki" ;
cold_A = mkA (mkN "kylmä") "kylmempi" "kylmin" ;
cold_A = mkA (mkN "kylmä") "kylmempi" "kylmin" ;
come_V = mkV "tulla" ;
computer_N = mkN "tietokone" ;
country_N = mkN "maa" ;
cousin_N = mkN "serkku" ;
cow_N = mkN "lehmä" ;
cow_N = mkN "lehmä" ;
die_V = mkV "kuolla" ;
dirty_A = mkA (mkN "likainen") "likaisempi" "likaisin" ;
distance_N3 = mkN3 (mkN "etäisyys") (casePrep elative) (casePrep illative) ;
distance_N3 = mkN3 (mkN "etäisyys") (casePrep elative) (casePrep illative) ;
doctor_N = mk2N "tohtori" "tohtoreita" ;
dog_N = mkN "koira" ;
door_N = mkN "ovi" "ovia" ;
drink_V2 = mkV2 (mkV "juoda") (casePrep partitive) ;
easy_A2V = mkA2 (mkA (mkN "helppo") "helpompi" "helpoin")
(casePrep allative) ;
eat_V2 = mkV2 (mkV "syödä") (casePrep partitive) ;
empty_A = mkA (mkN "tyhjä") "tyhjempi" "tyhjin" ;
eat_V2 = mkV2 (mkV "syödä") (casePrep partitive) ;
empty_A = mkA (mkN "tyhjä") "tyhjempi" "tyhjin" ;
enemy_N = mkN "vihollinen" ;
factory_N = mkN "tehdas" ;
father_N2 = mkN2 (mkN "isä") ;
fear_VS = mkVS (mk2V "pelätä" "pelkäsi") ;
find_V2 = mkV2 (mk2V "löytää" "löysi") ;
father_N2 = mkN2 (mkN "isä") ;
fear_VS = mkVS (mk2V "pelätä" "pelkäsi") ;
find_V2 = mkV2 (mk2V "löytää" "löysi") ;
fish_N = mkN "kala" ;
floor_N = mk2N "lattia" "lattioita" ;
forget_V2 = mkV2 (mkV "unohtaa") ;
fridge_N = mkN "jääkaappi" ;
friend_N = mkN "ystävä" ;
fruit_N = mkN "hedelmä" ;
fridge_N = mkN "jääkaappi" ;
friend_N = mkN "ystävä" ;
fruit_N = mkN "hedelmä" ;
fun_AV = mkAV (mkA (mkN "hauska") "hauskempi" "hauskin") ;
garden_N = mkN "puutarha" "puutarhan" "puutarhoja" ;
girl_N = mkN "tyttö" ;
glove_N = mkN "käsine" ;
girl_N = mkN "tyttö" ;
glove_N = mkN "käsine" ;
gold_N = mkN "kulta" ;
good_A = mkA (mkN "hyvä") (mkN "parempi" "paremman" "parempia") (exceptNomN (mkN "parhas" "parhaan" "parhaita" "parasta") "paras") "hyvin" "paremmin" "parhaiten" ;
go_V = mkV "mennä" ;
green_A = mkA (mkN "vihreä") "vihreämpi" "vihrein" ;
good_A = mkA (mkN "hyvä") (mkN "parempi" "paremman" "parempia") (exceptNomN (mkN "parhas" "parhaan" "parhaita" "parasta") "paras") "hyvin" "paremmin" "parhaiten" ;
go_V = mkV "mennä" ;
green_A = mkA (mkN "vihreä") "vihreämpi" "vihrein" ;
harbour_N = mkN "satama" "sataman" "satamia" ;
hate_V2 = mkV2 (mkV "vihata") cpartitive ;
hat_N = mkN "hattu" ;
@@ -102,54 +102,54 @@ lin
horse_N = mkN "hevonen" ;
hot_A = mkA (mkN "kuuma") "kuumempi" "kuumin" ;
house_N = mkN "talo" ;
important_A = mkA (mkN "tärkeä") "tärkeämpi" "tärkein" ;
important_A = mkA (mkN "tärkeä") "tärkeämpi" "tärkein" ;
industry_N = mkN "teollisuus" ;
iron_N = mkN "rauta" ;
king_N = mkN "kuningas" ;
know_VS = mkVS (mkV "tietää" "tiesi") ;
know_VQ = mkVQ (mkV "tietää" "tiesi") ;
know_VS = mkVS (mkV "tietää" "tiesi") ;
know_VQ = mkVQ (mkV "tietää" "tiesi") ;
know_V2 = mkV2 (mkV "tuntea" "tunsi") ;
lake_N = mkN "järvi" "järviä" ;
lake_N = mkN "järvi" "järviä" ;
lamp_N = mkN "lamppu" ;
learn_V2 =
mkV2 (mk12V "oppia" "opin" "oppii" "oppivat" "oppikaa" "opitaan"
"opin" "oppi" "oppisi" "oppinut" "opittu" "opitun") ;
leather_N = mkN "nahka" ; --- nahan
leave_V2 = mkV2 (mkV "jättää") ;
like_V2 = mkV2 (mkV "pitää") elative ;
leave_V2 = mkV2 (mkV "jättää") ;
like_V2 = mkV2 (mkV "pitää") elative ;
listen_V2 = mkV2 (mkV "kuunnella" "kuunteli") partitive ;
live_V = mkV "elää" ;
long_A = mkA (mkN "pitkä") "pitempi" "pisin" ;
lose_V2 = mkV2 (mkV "hävitä" "hävisi") ; --- hukata
live_V = mkV "elää" ;
long_A = mkA (mkN "pitkä") "pitempi" "pisin" ;
lose_V2 = mkV2 (mkV "hävitä" "hävisi") ; --- hukata
love_N = mk3N "rakkaus" "rakkauden" "rakkauksia" ;
love_V2 = mkV2 (mkV "rakastaa") partitive ;
man_N = mkN "mies" "miehen" "miestä" "miehenä" "mieheen"
"miesten" "miehiä" "miehinä" "miehissä" "miehiin" ;
man_N = mkN "mies" "miehen" "miestä" "miehenä" "mieheen"
"miesten" "miehiä" "miehinä" "miehissä" "miehiin" ;
married_A2 = mkA2 (mkA "avioitunut") (postPrep genitive "kanssa") ; ---- infl
meat_N = mkN "liha" ;
milk_N = mkN "maito" ;
moon_N = mkN "kuu" ;
mother_N2 = mkN2 (mkN "äiti") ;
mother_N2 = mkN2 (mkN "äiti") ;
mountain_N = mkN "vuori" "vuoria" ;
music_N = mkN "musiikki" ;
narrow_A = mkA (mkN "kapea") "kapeampi" "kapein" ;
new_A = mkA (mk3N "uusi" "uuden" "uusia") "uudempi" "uusin" ;
newspaper_N = mkN "sanoma" (mkN "lehti" "lehtiä") ; --- for correct vowel harmony
oil_N = mkN "öljy" ;
newspaper_N = mkN "sanoma" (mkN "lehti" "lehtiä") ; --- for correct vowel harmony
oil_N = mkN "öljy" ;
old_A = mkA (mkN "vanha") "vanhempi" "vanhin" ;
open_V2 = mkV2 (mkV "avata" "avasi") ;
paint_V2A = mkV2A (mkV "maalata") accPrep (casePrep translative) ;
paper_N = mk2N "paperi" "papereita" ;
paris_PN = mkPN (mkN "Pariisi") ;
peace_N = mkN "rauha" ;
pen_N = mkN "kynä" ;
pen_N = mkN "kynä" ;
planet_N = mkN "planeetta" ;
plastic_N = mkN "muovi" ;
play_V2 = mkV2 (mkV "pelata") cpartitive ; --- leikkiä, soittaa
play_V2 = mkV2 (mkV "pelata") cpartitive ; --- leikkiä, soittaa
policeman_N = mkN "poliisi" ;
priest_N = mkN "pappi" ;
probable_AS = mkAS --- for vowel harmony
(mkA (mkN "todennäköinen") "tonennäköisempi" "todennäköisin") ; ---- sta
(mkA (mkN "todennäköinen") "tonennäköisempi" "todennäköisin") ; ---- sta
queen_N = mkN "kuningatar" ;
radio_N = mk2N "radio" "radioita" ;
rain_V0 = mkV0 (mk2V "sataa" "satoi") ;
@@ -165,36 +165,36 @@ lin
say_VS = mkVS (mkV "sanoa") ;
school_N = mkN "koulu" ;
science_N = mkN "tiede" ;
sea_N = mkN "meri" "meren" "meriä" "merta" ;
seek_V2 = mkV2 (mkV "etsiä") cpartitive ;
sea_N = mkN "meri" "meren" "meriä" "merta" ;
seek_V2 = mkV2 (mkV "etsiä") cpartitive ;
see_V2 = mkV2 (
mk12V "nähdä" "näen" "näkee" "näkevät" "nähkää" "nähdään"
"näin" "näki" "näkisi" "nähnyt" "nähty" "nähdyn") ;
sell_V3 = mkV3 (mkV "myydä") accPrep (casePrep allative) ;
send_V3 = mkV3 (mkV "lähettää") accPrep (casePrep allative) ;
mk12V "nähdä" "näen" "näkee" "näkevät" "nähkää" "nähdään"
"näin" "näki" "näkisi" "nähnyt" "nähty" "nähdyn") ;
sell_V3 = mkV3 (mkV "myydä") accPrep (casePrep allative) ;
send_V3 = mkV3 (mkV "lähettää") accPrep (casePrep allative) ;
sheep_N = mkN "lammas" ;
ship_N = mkN "laiva" ;
shirt_N = mkN "paita" ;
shoe_N = mkN "kenkä" ;
shoe_N = mkN "kenkä" ;
shop_N = mkN "kauppa" ;
short_A = mkA (mkN "lyhyt" "lyhyitä") ;
short_A = mkA (mkN "lyhyt" "lyhyitä") ;
silver_N = mkN "hopea" ;
sister_N = mkN "sisko" ;
sleep_V = mkV "nukkua" ;
small_A = mkA (mk2N "pieni" "pieniä") "pienempi" "pienin" ;
snake_N = mkN "käärme" ;
small_A = mkA (mk2N "pieni" "pieniä") "pienempi" "pienin" ;
snake_N = mkN "käärme" ;
sock_N = mkN "sukka" ;
speak_V2 = mkV2 (mkV "puhua") cpartitive ;
star_N = mkN "tähti" "tähtiä" ;
steel_N = mkN "teräs" ;
stone_N = mkN "kivi" "kiviä" ;
stove_N = mk3N "liesi" "lieden" "liesiä" ;
star_N = mkN "tähti" "tähtiä" ;
steel_N = mkN "teräs" ;
stone_N = mkN "kivi" "kiviä" ;
stove_N = mk3N "liesi" "lieden" "liesiä" ;
student_N = mk2N "opiskelija" "opiskelijoita" ;
stupid_A = mkA "tyhmä" ;
stupid_A = mkA "tyhmä" ;
sun_N = mkN "aurinko" ;
switch8off_V2 = mkV2 (mkV "sammuttaa") ; ---
switch8on_V2 = mkV2 (mkV "sytyttää") ; ---
table_N = mkN "pöytä" ;
switch8on_V2 = mkV2 (mkV "sytyttää") ; ---
table_N = mkN "pöytä" ;
talk_V3 = mkV3 (mkV "puhua") (casePrep allative) (casePrep elative) ;
teacher_N = mkN "opettaja" ;
teach_V2 = mkV2 (mkV "opettaa") ;
@@ -206,107 +206,107 @@ lin
tree_N = mkN "puu" ;
---- trousers_N = mkN "trousers" ;
ugly_A = mkA (mkN "ruma") "rumempi" "rumin" ;
understand_V2 = mkV2 (mkV "ymmärtää" "ymmärrän" "ymmärsi") ;
understand_V2 = mkV2 (mkV "ymmärtää" "ymmärrän" "ymmärsi") ;
university_N = mkN "yliopisto" ;
village_N = mkN "kylä" ;
village_N = mkN "kylä" ;
wait_V2 = mkV2 (mkV "odottaa") partitive ;
walk_V = mkV "kävellä" "käveli" ;
walk_V = mkV "kävellä" "käveli" ;
warm_A = mkA
(mkN "lämmin" "lämpimän" "lämmintä" "lämpimänä" "lämpimään"
"lämpiminä" "lämpimiä" "lämpimien" "lämpimissä" "lämpimiin"
(mkN "lämmin" "lämpimän" "lämmintä" "lämpimänä" "lämpimään"
"lämpiminä" "lämpimiä" "lämpimien" "lämpimissä" "lämpimiin"
)
"lämpimämpi" "lämpimin" ;
"lämpimämpi" "lämpimin" ;
war_N = mkN "sota" ;
watch_V2 = mkV2 (mkV "katsella") cpartitive ;
water_N = mk3N "vesi" "veden" "vesiä" ;
water_N = mk3N "vesi" "veden" "vesiä" ;
white_A = mkA "valkoinen" ;
window_N = mk2N "ikkuna" "ikkunoita" ;
wine_N = mkN "viini" ;
win_V2 = mkV2 (mkV "voittaa") ;
woman_N = mkN "nainen" ;
wonder_VQ = mkVQ (mkV "ihmetellä") ;
wonder_VQ = mkVQ (mkV "ihmetellä") ;
wood_N = mkN "puu" ;
write_V2 = mkV2 (mkV "kirjoittaa") ;
yellow_A = mkA "keltainen" ;
young_A = mkA (mkN "nuori" "nuoria") "nuorempi" "nuorin" ;
do_V2 = mkV2 (
mkV "tehdä" "teen" "tekee" "tekevät" "tehkää" "tehdään"
mkV "tehdä" "teen" "tekee" "tekevät" "tehkää" "tehdään"
"tein" "teki" "tekisi" "tehnyt" "tehty" "tehdyn") ;
now_Adv = mkAdv "nyt" ;
already_Adv = mkAdv "jo" ;
song_N = mkN "laulu" ;
add_V3 = mkV3 (mkV "lisätä") accPrep (casePrep illative) ;
add_V3 = mkV3 (mkV "lisätä") accPrep (casePrep illative) ;
number_N = mk2N "numero" "numeroita" ;
put_V2 = mkV2 (mkV "panna") ;
stop_V = mkV "pysähtyä" ;
jump_V = mkV "hypätä" ;
stop_V = mkV "pysähtyä" ;
jump_V = mkV "hypätä" ;
left_Ord = mkOrd (snoun2nounBind (mkN "vasen")) ;
right_Ord = mkOrd (snoun2nounBind (mkN "oikea")) ;
far_Adv = mkAdv "kaukana" ;
correct_A = mkA "oikea" ;
dry_A = mkA (mkN "kuiva") "kuivempi" "kuivin" ;
dull_A = mkA (mkN "tylsä") "tylsempi" "tylsin" ;
full_A = mkA (mk3N "täysi" "täyden" "täysiä") "täydempi" "täysin" ;
dull_A = mkA (mkN "tylsä") "tylsempi" "tylsin" ;
full_A = mkA (mk3N "täysi" "täyden" "täysiä") "täydempi" "täysin" ;
heavy_A = mkA "raskas" ;
near_A = mkA (mkN "läheinen") "läheisempi" "lähin" ;
rotten_A = mkA "mätä" ;
round_A = mkA "pyöreä" ;
sharp_A = mkA "terävä" ;
smooth_A = mkA "sileä" ;
near_A = mkA (mkN "läheinen") "läheisempi" "lähin" ;
rotten_A = mkA "mätä" ;
round_A = mkA "pyöreä" ;
sharp_A = mkA "terävä" ;
smooth_A = mkA "sileä" ;
straight_A = mkA (mkN "suora") "suorempi" "suorin" ;
wet_A = mkA (mkN "märkä") "märempi" "märin" ;
wide_A = mkA "leveä" ;
animal_N = mk3N "eläin" "eläimen" "eläimiä" ;
wet_A = mkA (mkN "märkä") "märempi" "märin" ;
wide_A = mkA "leveä" ;
animal_N = mk3N "eläin" "eläimen" "eläimiä" ;
ashes_N = mkN "tuhka" ;
back_N = mkN "selkä" ;
back_N = mkN "selkä" ;
bark_N = mkN "kaarna" ;
belly_N = mkN "vatsa" ;
blood_N = mkN "veri" "veren" "veriä" "verta" ;
blood_N = mkN "veri" "veren" "veriä" "verta" ;
bone_N = mkN "luu" ;
breast_N = mkN "rinta" ;
cloud_N = mk2N "pilvi" "pilviä" ;
day_N = mkN "päivä" ;
dust_N = mkN "pöly" ;
cloud_N = mk2N "pilvi" "pilviä" ;
day_N = mkN "päivä" ;
dust_N = mkN "pöly" ;
ear_N = mkN "korva" ;
earth_N = mkN "maa" ;
egg_N = mkN "muna" ;
eye_N = mkN "silmä" ;
eye_N = mkN "silmä" ;
fat_N = mkN "rasva" ;
feather_N = mk3N "höyhen" "höyhenen" "höyheniä" ;
fingernail_N = mk3N "kynsi" "kynnen" "kynsiä" ;
feather_N = mk3N "höyhen" "höyhenen" "höyheniä" ;
fingernail_N = mk3N "kynsi" "kynnen" "kynsiä" ;
fire_N = mk2N "tuli" "tulia" ;
flower_N = mkN "kukka" ;
fog_N = mkN "sumu" ;
foot_N = mkN "jalka" ;
forest_N = mkN "metsä" ;
forest_N = mkN "metsä" ;
grass_N = mkN "ruoho" ;
guts_N = mkN "sisälmys" ; --- suoli
guts_N = mkN "sisälmys" ; --- suoli
hair_N = mkN "hius" ;
hand_N = mk3N "käsi" "käden" "käsiä" ;
head_N = mkN "pää" ;
heart_N = mkN "sydän" "sydämen" "sydäntä" "sydämenä" "sydämeen"
"sydänten" "sydämiä" "sydäminä" "sydämissä" "sydämiin" ;
hand_N = mk3N "käsi" "käden" "käsiä" ;
head_N = mkN "pää" ;
heart_N = mkN "sydän" "sydämen" "sydäntä" "sydämenä" "sydämeen"
"sydänten" "sydämiä" "sydäminä" "sydämissä" "sydämiin" ;
horn_N = mk2N "sarvi" "sarvia" ;
husband_N = mkN "mies" "miehen" "miestä" "miehenä" "mieheen"
"miesten" "miehiä" "miehinä" "miehissä" "miehiin" ;
ice_N = mkN "jää" ;
husband_N = mkN "mies" "miehen" "miestä" "miehenä" "mieheen"
"miesten" "miehiä" "miehinä" "miehissä" "miehiin" ;
ice_N = mkN "jää" ;
knee_N = mk2N "polvi" "polvia" ;
leaf_N = mk2N "lehti" "lehtiä" ;
leg_N = mkN "jalka" ; --- sääri
leaf_N = mk2N "lehti" "lehtiä" ;
leg_N = mkN "jalka" ; --- sääri
liver_N = mkN "maksa" ;
louse_N = mkN "lude" ;
mouth_N = mkN "suu" ;
name_N = mk2N "nimi" "nimiä" ;
name_N = mk2N "nimi" "nimiä" ;
neck_N = mkN "niska" ;
night_N = mkN "yö" ;
nose_N = mkN "nenä" ;
person_N = mkN "henkilö" ;
night_N = mkN "yö" ;
nose_N = mkN "nenä" ;
person_N = mkN "henkilö" ;
rain_N = mkN "sade" ;
road_N = mkN "tie" ;
root_N = mk2N "juuri" "juuria" ;
rope_N = mk3N "köysi" "köyden" "köysiä" ;
rope_N = mk3N "köysi" "köyden" "köysiä" ;
salt_N = mkN "suola" ;
sand_N = mkN "hiekka" ;
seed_N = mkN "siemen" ;
@@ -315,12 +315,12 @@ lin
smoke_N = mkN "savu" ;
snow_N = mkN "lumi" "lumen" "lumia" "lunta" ;
stick_N = mkN "keppi" ;
tail_N = mkN "häntä" ;
tongue_N = mk2N "kieli" "kieliä" ;
tail_N = mkN "häntä" ;
tongue_N = mk2N "kieli" "kieliä" ;
tooth_N = mkN "hammas" ;
wife_N = mkN "vaimo" ;
wind_N = mk2N "tuuli" "tuulia" ;
wing_N = mk2N "siipi" "siipiä" ;
wing_N = mk2N "siipi" "siipiä" ;
worm_N = mkN "mato" ;
year_N = mk3N "vuosi" "vuoden" "vuosia" ;
bite_V2 = mkV2 (mkV "purra") ;
@@ -330,57 +330,57 @@ lin
cut_V2 = mkV2 (mk2V "leikata" "leikkasi") ;
dig_V = mkV "kaivaa" ;
fall_V = mkV "pudota" "putoan" "putosi" ;
fear_V2 = mkV2 (mkV "pelätä" "pelkään" "pelkäsi") cpartitive ;
fear_V2 = mkV2 (mkV "pelätä" "pelkään" "pelkäsi") cpartitive ;
fight_V2 = mkV2 (mkV "taistella") (postPrep partitive "vastaan") ;
float_V = mkV "kellua" ;
flow_V = mkV "virrata" "virtaan" "virtasi" ;
fly_V = mkV "lentää" ;
freeze_V = mkV "jäätyä" ;
fly_V = mkV "lentää" ;
freeze_V = mkV "jäätyä" ;
give_V3 = mkV3 (mkV "antaa" "annan" "antoi") accPrep (casePrep allative) ;
hit_V2 = mkV2 (mkV "lyödä") cpartitive ;
hold_V2 = mkV2 (mkV "pitää") cpartitive ;
hunt_V2 = mkV2 (mkV "metsästää") cpartitive ;
hit_V2 = mkV2 (mkV "lyödä") cpartitive ;
hold_V2 = mkV2 (mkV "pitää") cpartitive ;
hunt_V2 = mkV2 (mkV "metsästää") cpartitive ;
kill_V2 = mkV2 (mkV "tappaa") ;
laugh_V = mkV "nauraa" "nauroi" ;
lie_V = mkV "maata" "makasi" ;
play_V = mkV "pelata" ;
pull_V2 = mkV2 (mkV "vetää") ;
push_V2 = mkV2 (mkV "työntää") ;
pull_V2 = mkV2 (mkV "vetää") ;
push_V2 = mkV2 (mkV "työntää") ;
rub_V2 = mkV2 (mkV "hieroa") cpartitive ;
scratch_V2 = mkV2 (mkV "raapia") cpartitive ;
sew_V = mkV "ommella" ;
sing_V = mkV "laulaa" ;
sit_V = mkV "istua" ;
smell_V = mk2V "haista" "haisi" ;
spit_V = mkV "sylkeä" ;
spit_V = mkV "sylkeä" ;
split_V2 = mkV2 (mk2V "halkaista" "halkaisi") ;
squeeze_V2 = mkV2 (mkV "puristaa") cpartitive ;
stab_V2 = mkV2 (mkV "pistää") cpartitive ;
stand_V = mk12V "seistä" "seison" "seisoo" "seisovat" "seiskää" "seistään"
"seisoin" "seisoi" "seisoisi" "seissyt" "seisty" "seistyn" ; --- *seisoivät
suck_V2 = mkV2 (mkV "imeä") cpartitive ;
stab_V2 = mkV2 (mkV "pistää") cpartitive ;
stand_V = mk12V "seistä" "seison" "seisoo" "seisovat" "seiskää" "seistään"
"seisoin" "seisoi" "seisoisi" "seissyt" "seisty" "seistyn" ; --- *seisoivät
suck_V2 = mkV2 (mkV "imeä") cpartitive ;
swell_V = mkV "turvota" "turposi" ;
swim_V = mkV "uida" "uin" "ui" ;
think_V = mkV "ajatella" "ajattelen" "ajatteli" ;
throw_V2 = mkV2 (mkV "heittää") ;
throw_V2 = mkV2 (mkV "heittää") ;
tie_V2 = mkV2 (mkV "sitoa") ;
turn_V = mkV "kääntyä" ;
turn_V = mkV "kääntyä" ;
vomit_V = mkV "oksentaa" ;
wash_V2 = mkV2 (mkV "pestä") ;
wipe_V2 = mkV2 (mkV "pyyhkiä") ;
wash_V2 = mkV2 (mkV "pestä") ;
wipe_V2 = mkV2 (mkV "pyyhkiä") ;
breathe_V = mkV "hengittää" ;
breathe_V = mkV "hengittää" ;
grammar_N = mkN "kielioppi" ;
language_N = mk2N "kieli" "kieliä" ;
rule_N = mkN "sääntö" ;
language_N = mk2N "kieli" "kieliä" ;
rule_N = mkN "sääntö" ;
john_PN = mkPN "Jussi" ;
question_N = mkN "kysymys" ;
ready_A = mkA (mkN "valmis") ;
reason_N = mkN "syy" ;
today_Adv = mkAdv "tänään" ;
uncertain_A = mkA "epävarma" ;
today_Adv = mkAdv "tänään" ;
uncertain_A = mkA "epävarma" ;
oper
mkOrd : Noun -> Ord ;

View File

@@ -1,5 +1,4 @@
--# -path=.:../common:prelude
--# -coding=latin1
--1 A Simple Finnish Resource Morphology
--
@@ -12,6 +11,7 @@
resource MorphoFin = ResFin ** open Prelude in {
flags optimize=noexpand ;
coding=utf8 ;
oper
@@ -109,7 +109,7 @@ resource MorphoFin = ResFin ** open Prelude in {
(onnettom + "in" + a) (onnettom + "iss" + a)
(onnettom + "iin") ;
-- 2-syllable a/ä, o/ö, u/y
-- 2-syllable a/ä, o/ö, u/y
dUkko : (_,_ : Str) -> NForms = \ukko,ukon ->
let
o = last ukko ;
@@ -118,8 +118,8 @@ resource MorphoFin = ResFin ** open Prelude in {
uko = init ukon ;
uk = init uko ;
ukkoja = case <ukko : Str> of {
_ + "ä" => -- kylä,kyliä,kylien,kylissä,kyliin
<ukk + "iä", ukk + "ien", ukk, uk, ukk + "iin"> ;
_ + "ä" => -- 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
@@ -136,7 +136,7 @@ resource MorphoFin = ResFin ** open Prelude in {
ukkoja.p2 ukkoja.p1
ukkoina ukoissa ukkoja.p5 ;
-- 3-syllable a/ä/o/ö
-- 3-syllable a/ä/o/ö
dSilakka : (_,_,_ : Str) -> NForms = \silakka,silakan,silakoita ->
let
o = last silakka ;
@@ -145,15 +145,15 @@ resource MorphoFin = ResFin ** open Prelude in {
silaka = init silakan ;
silak = init silaka ;
silakkaa = silakka + case o of {
"o" | "ö" => "t" + a ; -- radiota
"o" | "ö" => "t" + a ; -- radiota
_ => a -- sammakkoa
} ;
silakoiden = case <silakoita : Str> of {
_ + "i" + ("a" | "ä") => -- asemia
_ + "i" + ("a" | "ä") => -- asemia
<silakka+a, silakk + "ien", silakk, silak, silakk + "iin"> ;
_ + O@("o" | "ö" | "u" | "y" | "e") + ("ja" | "jä") => -- pasuunoja
_ + O@("o" | "ö" | "u" | "y" | "e") + ("ja" | "jä") => -- pasuunoja
<silakka+a,silakk+O+"jen",silakk+O, silak+O, silakk +O+ "ihin"> ;
_ + O@("o" | "ö" | "u" | "y" | "e") + ("ita" | "itä") => -- silakoita
_ + O@("o" | "ö" | "u" | "y" | "e") + ("ita" | "itä") => -- silakoita
<silakkaa, silak+O+"iden",silakk+O, silak+O, silakk +O+ "ihin"> ;
_ => Predef.error silakoita
} ;
@@ -172,7 +172,7 @@ resource MorphoFin = ResFin ** open Prelude in {
ar = init arp ;
arpe = case last arp of {
"s" => case last arv of {
"d" | "l" | "n" | "r" => -- suden,sutta ; jälsi ; kansi ; hirsi
"d" | "l" | "n" | "r" => -- suden,sutta ; jälsi ; kansi ; hirsi
<ar + "tt" + a, arpi + "en",arpi,ar + "t"> ;
_ => -- kuusta,kuusien
<arp + "t" + a,arp + "ien",arpi, arp>
@@ -183,7 +183,7 @@ resource MorphoFin = ResFin ** open Prelude in {
<arp + "t" + a,arp + "ien",arpi, arp>;
_ => -- arpea,arpien,arvissa
<arp + "e" + a,arp + "ien",arv+"i",arp>
} ; ---- pieni,pientä; uni,unta
} ; ---- pieni,pientä; uni,unta
in nForms10
arpi arven arpe.p1 (arpe.p4 + "en" + a) (arpe.p4 + "een")
arpe.p2 (arpi + a)
@@ -282,23 +282,23 @@ resource MorphoFin = ResFin ** open Prelude in {
"A" =>
<"n","ta","na","han","iden","ita","ina","issa","ihin"> ;
"B" | "C" | "D" | "E" | "G" | "P" | "T" | "V" | "W" =>
<"n","tä","nä","hen","iden","itä","inä","issä","ihin"> ;
<"n","tä","nä","hen","iden","itä","inä","issä","ihin"> ;
"F" | "L" | "M" | "N" | "R" | "S" | "X" =>
<"n","ää","nä","ään","ien","iä","inä","issä","iin"> ;
"H" | "K" | "O" | "Å" =>
<"n","ää","nä","ään","ien","iä","inä","issä","iin"> ;
"H" | "K" | "O" | "Å" =>
<"n","ta","na","hon","iden","ita","ina","issa","ihin"> ;
"I" | "J" =>
<"n","tä","nä","hin","iden","itä","inä","issä","ihin"> ;
<"n","tä","nä","hin","iden","itä","inä","issä","ihin"> ;
"Q" | "U" =>
<"n","ta","na","hun","iden","ita","ina","issa","ihin"> ;
"Z" =>
<"n","aa","na","aan","ojen","oja","oina","oissa","oihin"> ;
"Ä" =>
<"n","tä","nä","hän","iden","itä","inä","issä","ihin"> ;
"Ö" =>
<"n","tä","nä","hön","iden","itä","inä","issä","ihin"> ;
"Ä" =>
<"n","tä","nä","hän","iden","itä","inä","issä","ihin"> ;
"Ö" =>
<"n","tä","nä","hön","iden","itä","inä","issä","ihin"> ;
"Y" =>
<"n","tä","nä","hyn","iden","itä","inä","issä","ihin"> ;
<"n","tä","nä","hyn","iden","itä","inä","issä","ihin"> ;
_ => Predef.error (["illegal abbreviation"] ++ SDP)
} ;
in nForms10
@@ -609,7 +609,7 @@ resource MorphoFin = ResFin ** open Prelude in {
pudot = init pudota ;
pudo = init pudot ;
ai = case last pudo of {
"a" | "ä" => <[], "i"> ;
"a" | "ä" => <[], "i"> ;
_ => <a, a + "i">
} ;
puto = Predef.tk 2 putosi ;
@@ -735,7 +735,7 @@ resource MorphoFin = ResFin ** open Prelude in {
tule_ = init tulen ;
tuli_ = init tulin ;
a = last tulkaa ;
tulko = Predef.tk 2 tulkaa + (ifTok Str a "a" "o" "ö") ;
tulko = Predef.tk 2 tulkaa + (ifTok Str a "a" "o" "ö") ;
o = last tulko ;
tulkoo = tulko + o ;
tullee = Predef.tk 2 tullut + "ee" ;
@@ -853,13 +853,13 @@ resource MorphoFin = ResFin ** open Prelude in {
"rk" + ("i" | "e") => ku + "rj" + o ;
"lk" + _ => ku + "l" + o ;
"rk" + _ => ku + "r" + o ;
("hk" | "tk") + _ => kukko ; -- *tahko-tahon, *pitkä-pitkän
("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" ;
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 ;
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 ;
_ => kukko
} ;
@@ -878,13 +878,13 @@ resource MorphoFin = ResFin ** open Prelude in {
"ll" + a => "lt" + a ;
h@("h" | "l") + "je" + e => h + "ke" ; -- pohje/lahje impossible
("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
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 + "ui" => s + "uki" ; -- ruis
s + "aa" => s + "aka" ; -- taata
s + "i" + a@("a" | "e" | "i") => s + "ik" + a ; -- liata, siitä, pietä
a + "v" + e@("e"|"a"|"ä"|"u"|"i") => a + "p" + e ; -- taive/toive imposs
s + "i" + a@("a" | "e" | "i") => s + "ik" + a ; -- liata, siitä, pietä
a + "v" + e@("e"|"a"|"ä"|"u"|"i") => a + "p" + e ; -- taive/toive imposs
ase => ase
} ;
@@ -895,12 +895,12 @@ resource MorphoFin = ResFin ** open Prelude in {
vowHarmony : Str -> Str = \s -> case s of {
_ + ("a" | "o" | "u" | "A" | "O" | "U") + _ => "a" ;
_ => "ä"
_ => "ä"
} ;
getHarmony : Str -> Str = \u -> case u of {
"a"|"o"|"u" => "a" ;
_ => "ä"
_ => "ä"
} ;
-----------------------
@@ -914,7 +914,7 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
mkDetPol : Bool -> Number -> CommonNoun -> {
s1,sp : Case => Str ; -- minun kolme
s2 : Harmony => Str ; -- -ni ; nsa/nsä
s2 : Harmony => Str ; -- -ni ; nsa/nsä
n : Number ; -- Pl (agreement feature for verb)
isNum : Bool ; -- True (a numeral is present)
isPoss : Bool ; -- True (a possessive suffix is present)
@@ -930,7 +930,7 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
} ;
-- Here we define personal and relative pronouns.
-- Personal pronouns have possessive suffix (hänen talonsa) but "se" doesn't (sen talo)
-- Personal pronouns have possessive suffix (hänen talonsa) but "se" doesn't (sen talo)
mkPronoun : (_,_,_,_,_ : Str) -> Number -> Person ->
{s : NPForm => Str ; a : Agr ; hasPoss : Bool ; poss : Str} = mkPronounGen True ;
@@ -999,16 +999,16 @@ oper
s = table {
Nom => "se" ;
Gen => "sen" ;
Part => "sitä" ;
Part => "sitä" ;
Transl => "siksi" ;
Ess => "sinä" ;
Iness => "siinä" ;
Elat => "siitä" ;
Ess => "sinä" ;
Iness => "siinä" ;
Elat => "siitä" ;
Illat => "siihen" ;
Adess => "sillä" ;
Ablat => "siltä" ;
Adess => "sillä" ;
Ablat => "siltä" ;
Allat => "sille" ;
Abess => "sittä"
Abess => "sittä"
} ;
} ;
@@ -1016,16 +1016,16 @@ oper
s = table {
Nom => "ne" ;
Gen => "niiden" ;
Part => "niitä" ;
Part => "niitä" ;
Transl => "niiksi" ;
Ess => "niinä" ;
Iness => "niissä" ;
Elat => "niitä" ;
Ess => "niinä" ;
Iness => "niissä" ;
Elat => "niitä" ;
Illat => "niihin" ;
Adess => "niillä" ;
Ablat => "niiltä" ;
Adess => "niillä" ;
Ablat => "niiltä" ;
Allat => "niille" ;
Abess => "niittä"
Abess => "niittä"
} ;
} ;

View File

@@ -1,6 +1,6 @@
--# -coding=latin1
concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in {
flags coding=utf8 ;
lin
-- The $Number$ is subtle: "nuo autot", "nuo kolme autoa" are both plural
@@ -16,10 +16,10 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
let k = npform2case n c
in
case <n, c, det.isNum, det.isPoss, det.isDef> of {
<_, NPAcc, True,_,_> => <Nom,NCase Sg Part> ; -- myin kolme kytkintä(ni)
<_, NPCase Nom, True,_,_> => <Nom,NCase Sg Part> ; -- kolme kytkintä(ni) on
<_, NPAcc, True,_,_> => <Nom,NCase Sg Part> ; -- myin kolme kytkintä(ni)
<_, NPCase Nom, True,_,_> => <Nom,NCase Sg Part> ; -- kolme kytkintä(ni) on
<_, _, True,False,_> => <k, NCase Sg k> ; -- kolmeksi kytkimeksi
<Pl,NPAcc, _, _, False> => <k, NCase Pl Part> ; -- myin kytkimiä
<Pl,NPAcc, _, _, False> => <k, NCase Pl Part> ; -- myin kytkimiä
<_, NPAcc, _,True,_> => <k, NPossNom n> ; -- myin kytkime+ni
<_, NPCase Nom,_,True,_> => <k, NPossNom n> ; -- kytkime+ni on/ovat...
<_, NPCase Gen,_,True,_> => <k, NPossGen n> ; -- kytkime+ni vika
@@ -34,7 +34,7 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
in
det.s1 ! k.p1 ++ cn.s ! k.p2 ++ det.s2 ! cn.h ;
a = agrP3 (case <det.isDef, det.isNum> of {
<False,True> => Sg ; -- kolme kytkintä on
<False,True> => Sg ; -- kolme kytkintä on
_ => det.n
}) ;
isPron = False ; isNeg = det.isNeg
@@ -73,21 +73,21 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
PPartNP np v2 = {
s = \\c => np.s ! c ++ (sverb2verbSep v2).s ! PastPartPass (AN (NCase (complNumAgr np.a) Ess)) ;
a = np.a ;
isPron = np.isPron ; -- minun täällä - ni
isPron = np.isPron ; -- minun täällä - ni
isNeg = np.isNeg
} ;
AdvNP np adv = {
s = \\c => np.s ! c ++ adv.s ;
a = np.a ;
isPron = np.isPron ; -- minun täällä - ni
isPron = np.isPron ; -- minun täällä - ni
isNeg = np.isNeg
} ;
ExtAdvNP np adv = {
s = \\c => np.s ! c ++ embedInCommas adv.s ;
a = np.a ;
isPron = np.isPron ; -- minun täällä - ni
isPron = np.isPron ; -- minun täällä - ni
isNeg = np.isNeg
} ;
@@ -164,8 +164,8 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
IndefArt = {
s1 = \\_,_ => [] ; -- Nom is Part in Pl: use isDef in DetCN
sp = \\n,c =>
(nhn (mkSubst "ä" "yksi" "yhde" "yhte" "yhtä" "yhteen" "yksi" "yksi"
"yksien" "yksiä" "yksiin")).s ! NCase n c ;
(nhn (mkSubst "ä" "yksi" "yhde" "yhte" "yhtä" "yhteen" "yksi" "yksi"
"yksien" "yksiä" "yksiin")).s ! NCase n c ;
s2 = \\_ => [] ;
isNum,isPoss,isDef,isNeg = False -- autoja on
} ;
@@ -239,7 +239,7 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
} ;
PartNP cn np = {s = \\nf => cn.s ! nf ++ np.s ! NPCase Part ;
h = cn.h ---- gives "lasin viiniänsa" ; should be "lasinsa viiniä"
h = cn.h ---- gives "lasin viiniänsa" ; should be "lasinsa viiniä"
} ;

View File

@@ -1,10 +1,10 @@
--# -coding=latin1
concrete NumeralFin of Numeral = CatFin [Numeral,Digits] ** open Prelude, ParadigmsFin, MorphoFin, StemFin in {
-- Notice: possessive forms are not used. They get wrong, since every
-- part is made to agree in them.
flags optimize = all_subs ;
coding=utf8 ;
lincat
Sub1000000 = {s : CardOrd => Str ; n : MorphoFin.Number} ;
@@ -18,23 +18,23 @@ lin
(nhn (mkSubst "a" "kolme" "kolme" "kolme" "kolmea" "kolmeen" "kolmi" "kolmi"
"kolmien" "kolmia" "kolmiin"))
(ordN "a" "kolmas") ;
n4 = co (snoun2nounBind (mkN "neljä")) (ordN "ä" "neljäs") ;
n5 = co (snoun2nounBind (mkN "viisi" "viiden" "viisiä")) (ordN "ä" "viides") ;
n4 = co (snoun2nounBind (mkN "neljä")) (ordN "ä" "neljäs") ;
n5 = co (snoun2nounBind (mkN "viisi" "viiden" "viisiä")) (ordN "ä" "viides") ;
n6 = co (snoun2nounBind (mkN "kuusi" "kuuden" "kuusia")) (ordN "a" "kuudes") ;
n7 = co
(nhn (mkSubst "ä" "seitsemän" "seitsemä" "seitsemä" "seitsemää"
"seitsemään" "seitsemi" "seitsemi" "seitsemien" "seitsemiä"
(nhn (mkSubst "ä" "seitsemän" "seitsemä" "seitsemä" "seitsemää"
"seitsemään" "seitsemi" "seitsemi" "seitsemien" "seitsemiä"
"seitsemiin"))
(ordN "ä" "seitsemäs") ;
(ordN "ä" "seitsemäs") ;
n8 = co
(nhn (mkSubst "a" "kahdeksan" "kahdeksa" "kahdeksa" "kahdeksaa"
"kahdeksaan" "kahdeksi" "kahdeksi" "kahdeksien" "kahdeksia"
"kahdeksiin"))
(ordN "a" "kahdeksas") ;
n9 = co
(nhn (mkSubst "ä" "yhdeksän" "yhdeksä" "yhdeksä" "yhdeksää"
"yhdeksään" "yhdeksi" "yhdeksi" "yhdeksien" "yhdeksiä" "yhdeksiin"))
(ordN "ä" "yhdeksäs") ;
(nhn (mkSubst "ä" "yhdeksän" "yhdeksä" "yhdeksä" "yhdeksää"
"yhdeksään" "yhdeksi" "yhdeksi" "yhdeksien" "yhdeksiä" "yhdeksiin"))
(ordN "ä" "yhdeksäs") ;
pot01 =
{s = table {
@@ -100,21 +100,21 @@ param
oper
yksiN = co
(nhn (mkSubst "ä" "yksi" "yhde" "yhte" "yhtä" "yhteen" "yksi" "yksi"
"yksien" "yksiä" "yksiin"))
(ordN "ä" "yhdes") ; -- yhdestoista
(nhn (mkSubst "ä" "yksi" "yhde" "yhte" "yhtä" "yhteen" "yksi" "yksi"
"yksien" "yksiä" "yksiin"))
(ordN "ä" "yhdes") ; -- yhdestoista
yksi_ensiN = co
(nhn (mkSubst "ä" "yksi" "yhde" "yhte" "yhtä" "yhteen" "yksi" "yksi"
"yksien" "yksiä" "yksiin"))
(snoun2nounBind (mkN "ensimmäinen")) ; -- ensimmäinen ---- sadasensimmäinentuhannes
(nhn (mkSubst "ä" "yksi" "yhde" "yhte" "yhtä" "yhteen" "yksi" "yksi"
"yksien" "yksiä" "yksiin"))
(snoun2nounBind (mkN "ensimmäinen")) ; -- ensimmäinen ---- sadasensimmäinentuhannes
kaksi_toinenN = co
(nhn (mkSubst "a" "kaksi" "kahde" "kahte" "kahta" "kahteen" "kaksi" "kaksi"
"kaksien" "kaksia" "kaksiin"))
(snoun2nounBind (mkN "toinen")) ;
kymmenenN = co
(nhn (mkSubst "ä" "kymmenen" "kymmene" "kymmene" "kymmentä"
"kymmeneen" "kymmeni" "kymmeni" "kymmenien" "kymmeniä" "kymmeniin"))
(ordN "ä" "kymmenes") ;
(nhn (mkSubst "ä" "kymmenen" "kymmene" "kymmene" "kymmentä"
"kymmeneen" "kymmeni" "kymmeni" "kymmenien" "kymmeniä" "kymmeniin"))
(ordN "ä" "kymmenes") ;
sataN = co
(snoun2nounBind (mkN "sata"))
(ordN "a" "sadas") ;
@@ -126,7 +126,7 @@ oper
kymmentaN =
{s = table {
NCard (NCase Sg Nom) => "kymmentä" ;
NCard (NCase Sg Nom) => "kymmentä" ;
k => kymmenenN.s ! k
}
} ;

View File

@@ -1,5 +1,4 @@
--# -path=.:../abstract:../common:../../prelude
--# -coding=latin1
--1 Finnish Lexical Paradigms
--
@@ -30,6 +29,7 @@ resource ParadigmsFin = open
in {
flags optimize=noexpand ;
coding=utf8 ;
--2 Parameters
--
@@ -57,12 +57,12 @@ oper
ablative : Case ; -- e.g. "talolta"
allative : Case ; -- e.g. "talolle"
infFirst : InfForm ; -- e.g. "tehdä"
infIness : InfForm ; -- e.g. "tekemässä"
infElat : InfForm ; -- e.g. "tekemästä"
infIllat : InfForm ; -- e.g. "tekemään"
infPresPart : InfForm ; -- e.g. "tekevän"
infPresPartAgr : InfForm ; -- e.g. "tekevänsä"
infFirst : InfForm ; -- e.g. "tehdä"
infIness : InfForm ; -- e.g. "tekemässä"
infElat : InfForm ; -- e.g. "tekemästä"
infIllat : InfForm ; -- e.g. "tekemään"
infPresPart : InfForm ; -- e.g. "tekevän"
infPresPartAgr : InfForm ; -- e.g. "tekevänsä"
-- The following type is used for defining *rection*, i.e. complements
-- of many-place verbs and adjective. A complement can be defined by
@@ -107,16 +107,16 @@ oper
--
-- If the one-argument paradigm does not give the correct result, one can try and give
-- two or three forms. Most notably, the two-argument variant is used
-- for nouns like "kivi - kiviä", which would otherwise become like
-- "rivi - rivejä". Three arguments are used e.g. for
-- for nouns like "kivi - kiviä", which would otherwise become like
-- "rivi - rivejä". Three arguments are used e.g. for
-- "auto - auton - autoja", which would otherwise become
-- "auto - audon".
mkN : overload {
mkN : (kukko : Str) -> N ; -- predictable nouns, covers 82%
mkN : (savi,savia : Str) -> N ; -- different pl.part
mkN : (vesi,veden,vesiä : Str) -> N ; -- also different sg.gen
mkN : (vesi,veden,vesiä,vettä : Str) -> N ; -- also different sg.part
mkN : (vesi,veden,vesiä : Str) -> N ; -- also different sg.gen
mkN : (vesi,veden,vesiä,vettä : Str) -> N ; -- also different sg.part
mkN : (olo,n,a,na,oon,jen,ja,ina,issa,ihin : Str) -> N ; -- worst case, 10 forms
mkN : (pika : Str) -> (juna : N) -> N ; -- compound with invariable prefix
mkN : (oma : N) -> (tunto : N) -> N ; -- compound with inflecting prefix
@@ -166,7 +166,7 @@ oper
-- Comparison adjectives have three forms.
-- The comparative and the superlative
-- are always inflected in the same way, so the nominative of them is actually
-- enough (except for the superlative "paras" of "hyvä").
-- enough (except for the superlative "paras" of "hyvä").
mkA : overload {
mkA : Str -> A ; -- regular noun made into adjective
@@ -204,14 +204,14 @@ oper
mkV : (huutaa,huudan,huusi : Str) -> V ; -- also deviating pres. 1sg
mkV : (huutaa,dan,taa,tavat,takaa,detaan,sin,si,sisi,tanut,dettu,tanee : Str) -> V ; -- worst-case verb
mkV : VK -> V ; -- verb from DictFin (Kotus)
mkV : V -> Str -> V ; -- hakata päälle (particle verb)
mkV : Str -> V -> V ; -- laimin+lyödä (prefixed verb)
mkV : V -> Str -> V ; -- hakata päälle (particle verb)
mkV : Str -> V -> V ; -- laimin+lyödä (prefixed verb)
} ;
-- All the patterns above have $nominative$ as subject case.
-- If another case is wanted, use the following.
caseV : Case -> V -> V ; -- deviating subj. case, e.g. genitive "täytyä"
caseV : Case -> V -> V ; -- deviating subj. case, e.g. genitive "täytyä"
-- The verbs "be" is special.
@@ -251,7 +251,7 @@ oper
= \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V3 = <>} ;
} ;
dirV3 : V -> Case -> V3 ; -- siirtää, (accusative), illative
dirV3 : V -> Case -> V3 ; -- siirtää, (accusative), illative
dirdirV3 : V -> V3 ; -- antaa, (accusative), (allative)
@@ -261,7 +261,7 @@ oper
-- questions, verb phrases, and adjectives.
mkVV = overload {
mkVV : Str -> VV -- e.g. "yrittää" (puhua)
mkVV : Str -> VV -- e.g. "yrittää" (puhua)
= \s -> mkVVf (mkV s) infFirst ;
mkVV : V -> VV -- e.g. "alkaa" (puhua)
= \v -> mkVVf v infFirst ;
@@ -272,7 +272,7 @@ mkVV = overload {
} ;
mkVS = overload {
mkVS : Str -> VS -- e.g. "väittää"
mkVS : Str -> VS -- e.g. "väittää"
= \s -> lin VS (mk1V s) ;
mkVS : V -> VS -- e.g. "sanoa"
= \v -> lin VS v ;
@@ -283,9 +283,9 @@ mkVS = overload {
= \s -> mkV2Vf (mkV s) (casePrep partitive) infIllat ; ----
mkV2V : V -> V2V -- partitive + infillat
= \v -> mkV2Vf v (casePrep partitive) infIllat ; ----
mkV2V : V -> Prep -> V2V -- e.g. "käskeä" genitive + infFiilat
mkV2V : V -> Prep -> V2V -- e.g. "käskeä" genitive + infFiilat
= \v,p -> mkV2Vf v p infIllat ;
mkV2V : V -> Prep -> InfForm -> V2V -- e.g. "kieltää" partitive infElat
mkV2V : V -> Prep -> InfForm -> V2V -- e.g. "kieltää" partitive infElat
= \v,p,f -> mk2V2 v p ** {vi = infform2vvtype f ; lock_V2V = <>} ;
mkV2V : V -> Case -> InfForm -> V2V
= \v,c,f -> mk2V2 v (casePrep c) ** {vi = infform2vvtype f ; lock_V2V = <>} ;
@@ -295,11 +295,11 @@ mkVS = overload {
mkV2S : V -> Prep -> V2S ; -- e.g. "sanoa" allative
mkVVf : V -> InfForm -> VV ; -- e.g. "ruveta" infIllat
mkV2Vf : V -> Prep -> InfForm -> V2V ; -- e.g. "kieltää" partitive infElat
mkV2Vf : V -> Prep -> InfForm -> V2V ; -- e.g. "kieltää" partitive infElat
mkVA : V -> Prep -> VA ; -- e.g. "maistua" ablative
mkV2A : V -> Prep -> Prep -> V2A ; -- e.g. "maalata" accusative translative
mkVQ : V -> VQ ;
mkV2Q : V -> Prep -> V2Q ; -- e.g. "kysyä" ablative
mkV2Q : V -> Prep -> V2Q ; -- e.g. "kysyä" ablative
mkAS : A -> AS ; --%
--- mkA2S : A -> Prep -> A2S ; --%
@@ -344,7 +344,7 @@ mkVS = overload {
= \nu,noun -> lin Det (MorphoFin.mkDet nu (snoun2nounBind noun)) ;
mkDet : (isNeg : Bool) -> Number -> N -> Det -- use this with True to create a negative determiner
= \isNeg,nu,noun -> lin Det (MorphoFin.mkDetPol isNeg nu (snoun2nounBind noun)) ;
mkDet : (isNeg : Bool) -> Number -> N -> Case -> Det -- paljon + False + partitive, ei yhtään + True + partitive
mkDet : (isNeg : Bool) -> Number -> N -> Case -> Det -- paljon + False + partitive, ei yhtään + True + partitive
= \isNeg,nu,noun,_ -> lin Det (MorphoFin.mkDetPol isNeg nu (snoun2nounBind noun)) ;
} ;
@@ -459,51 +459,51 @@ mkVS = overload {
ukk = init ukko ;
uko = weakGrade ukko ;
ukon = uko + "n" ;
o = case last ukko of {"ä" => "ö" ; "a" => "o"} ; -- only used then
o = case last ukko of {"ä" => "ö" ; "a" => "o"} ; -- only used then
renka = strongGrade (init ukko) ;
rake = strongGrade ukko ;
in
case ukko of {
_ + "nen" => dNainen ukko ;
_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" |"ää"|"öö") => dPuu ukko ;
_ + ("ai" | "ei" | "oi" | "ui" | "yi" | "äi" | "öi") => dPuu ukko ;
_ + ("ie" | "uo" | "yö") => dSuo ukko ;
_ + ("ea" | "eä") => dKorkea ukko ;
_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" |"ää"|"öö") => dPuu ukko ;
_ + ("ai" | "ei" | "oi" | "ui" | "yi" | "äi" | "öi") => dPuu ukko ;
_ + ("ie" | "uo" | "yö") => dSuo ukko ;
_ + ("ea" | "eä") => dKorkea ukko ;
_ + "is" => dKaunis ukko ;
_ + ("i" | "u") + "n" => dLiitin ukko (renka + "men") ;
_ + ("ton" | "tön") => dOnneton ukko ;
_ + ("ton" | "tön") => dOnneton ukko ;
_ + "e" => dRae ukko (rake + "en") ;
_ + ("ut" | "yt") => dOttanut ukko ;
_ + ("as" | "äs") => dRae ukko (renka + last renka + "n") ;
_ + ("as" | "äs") => dRae ukko (renka + last renka + "n") ;
_ + ("uus" | "yys" | "eus" | "eys") => dLujuus ukko ;
_ + "s" => dJalas ukko ;
-- {- heuristics for 3-syllable nouns ending a/ä
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + ? +
_ + "i" + ? + a@("a" | "ä") =>
dSilakka ukko (ukko + "n") (ukk + o + "it" + a) ; -- pesijä
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + ? + _ +
("a" | "e" | "o" | "u" | "y" | "ä" | "ö") +
("l" | "r" | "n") + a@("a" | "ä") =>
-- {- heuristics for 3-syllable nouns ending a/ä
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + ? +
_ + "i" + ? + a@("a" | "ä") =>
dSilakka ukko (ukko + "n") (ukk + o + "it" + a) ; -- pesijä
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + ? + _ +
("a" | "e" | "o" | "u" | "y" | "ä" | "ö") +
("l" | "r" | "n") + a@("a" | "ä") =>
dSilakka ukko (ukko + "n") (ukk + o + "it" + a) ; -- sarana, omena
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + ? + _ +
("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") +
("n" | "k" | "s") + "k" + a@("a" | "ä") =>
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + ? + _ +
("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") +
("n" | "k" | "s") + "k" + a@("a" | "ä") =>
dSilakka ukko (uko + "n") (init uko + o + "it" + a) ; -- silakka
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + ? + _ +
("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") +
("n" | "t" | "s") + "t" + a@("a" | "ä") =>
dSilakka ukko (uko + "n") (ukk + o + "j" + a) ; -- yhdyntä (but not isäntä)
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + ? + _ +
("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") +
("n" | "t" | "s") + "t" + a@("a" | "ä") =>
dSilakka ukko (uko + "n") (ukk + o + "j" + a) ; -- yhdyntä (but not isäntä)
_ + ("a" | "e" | "i" | "o" | "u") + ? + _ +
("a" | "e" | "o" | "u") + ? + "a" =>
dSilakka ukko (ukko + "n") (ukk + "ia") ; -- asema, johtaja
-- -}
_ + "i" +o@("o"|"ö") => dSilakka ukko (ukko+"n") (ukko+"it"+getHarmony o);
_ + "i" +o@("o"|"ö") => dSilakka ukko (ukko+"n") (ukko+"it"+getHarmony o);
_ + "i" + "a" => dSilakka ukko (ukko + "n") (ukk + "oita") ;
_ + "i" + "ä" => dSilakka ukko (ukko + "n") (ukk + "öitä") ;
_ + ("a" | "o" | "u" | "y" | "ä" | "ö") => dUkko ukko ukon ;
_ + "i" + "ä" => dSilakka ukko (ukko + "n") (ukk + "öitä") ;
_ + ("a" | "o" | "u" | "y" | "ä" | "ö") => dUkko ukko ukon ;
_ + "i" => dPaatti ukko ukon ;
_ + ("ar" | "är") => dPiennar ukko (renka + "ren") ;
_ + ("ar" | "är") => dPiennar ukko (renka + "ren") ;
_ + "e" + ("l" | "n") => dPiennar ukko (ukko + "en") ;
_ => dUnix ukko
} ;
@@ -515,28 +515,28 @@ mkVS = overload {
ukon = weakGrade ukko + "n" ;
in
case <ukko,ukkoja> of {
<_, _ + ":" + ? + ("a" | "ä")> => dSDP ukko ;
<_, _ + ":" + ? + ("a" | "ä")> => dSDP ukko ;
<_ + "ea", _ + "oita"> =>
dSilakka ukko ukon ukkoja ; -- idea, but not korkea
<_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö" |
"ie" | "uo" | "yö" | "ea" | "eä" |
"ia" | "iä" | "io" | "iö"), _ + ("a" | "ä")> =>
<_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö" |
"ie" | "uo" | "yö" | "ea" | "eä" |
"ia" | "iä" | "io" | "iö"), _ + ("a" | "ä")> =>
nForms1 ukko ; --- to protect --- how to get "dioja"?
<_ + ("a" | "ä" | "o" | "ö"), _ + ("a" | "ä")> =>
<_ + ("a" | "ä" | "o" | "ö"), _ + ("a" | "ä")> =>
dSilakka ukko ukon ukkoja ;
<arp + "i", _ + "i" + ("a" | "ä")> =>
<arp + "i", _ + "i" + ("a" | "ä")> =>
dArpi ukko (init (weakGrade ukko) + "en") ;
<_ + "i", _ + ("eita" | "eitä")> =>
<_ + "i", _ + ("eita" | "eitä")> =>
dTohtori ukko ;
<_ + ("ut" | "yt"),_ + ("uita" | "yitä")> => dRae ukko (init ukko + "en") ;
<_ + "e", nuk + ("eja" | "ejä")> =>
<_ + ("ut" | "yt"),_ + ("uita" | "yitä")> => dRae ukko (init ukko + "en") ;
<_ + "e", nuk + ("eja" | "ejä")> =>
dNukke ukko ukon ;
<_ + "s", _ + "ksi" + ?> => dJalas ukko ;
<_ + ("l" | "n" | "r" | "s"), _ + ("eja" | "ejä")> => dUnix ukko ;
<_, _ + ("a" | "ä")> => ukot ;
<_ + ("l" | "n" | "r" | "s"), _ + ("eja" | "ejä")> => dUnix ukko ;
<_, _ + ("a" | "ä")> => ukot ;
_ =>
Predef.error
(["last argument should end in a/ä, not"] ++ ukkoja)
(["last argument should end in a/ä, not"] ++ ukkoja)
} ;
nForms3 : (_,_,_ : Str) -> NForms = \ukko,ukon,ukkoja ->
@@ -546,17 +546,17 @@ mkVS = overload {
in
case <ukko,ukon> of {
<_, _ + ":n"> => dSDP ukko ;
<_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö" |
"ie" | "uo" | "yö" | "ea" | "eä" |
"ia" | "iä" | "io" | "iö" | "ja" | "jä"), _ + "n"> =>
<_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö" |
"ie" | "uo" | "yö" | "ea" | "eä" |
"ia" | "iä" | "io" | "iö" | "ja" | "jä"), _ + "n"> =>
ukot ; --- to protect
<_ + ("a" | "o" | "u" | "y" | "ä" | "ö"), _ + "n"> =>
<_ + ("a" | "o" | "u" | "y" | "ä" | "ö"), _ + "n"> =>
dSilakka ukko ukon ukkoja ; -- auto,auton
<_ + "mpi", _ + ("emman" | "emmän")> => dSuurempi ukko ;
<_ + "in", _ + ("imman" | "immän")> => dSuurin ukko ;
<_ + "mpi", _ + ("emman" | "emmän")> => dSuurempi ukko ;
<_ + "in", _ + ("imman" | "immän")> => dSuurin ukko ;
<terv + "e", terv2 + "een"> => -- was nonlinear
dRae ukko ukon ;
<taiv + ("as" | "äs"), taiv2 + ("aan" | "ään")> => -- was nonlinear
<taiv + ("as" | "äs"), taiv2 + ("aan" | "ään")> => -- was nonlinear
dRae ukko ukon ;
<nukk + "e", nuk + "een"> => dRae ukko ukon ;
<arp + "i", arv + "en"> => dArpi ukko ukon ;
@@ -571,14 +571,14 @@ mkVS = overload {
ukot = nForms3 ukko ukon ukkoja ;
in
case <ukko,ukon,ukkoja,ukkoa> of {
<_,_ + "n", _ + ("a" | "ä"), _ + ("a" | "ä")> =>
<_,_ + "n", _ + ("a" | "ä"), _ + ("a" | "ä")> =>
table {
2 => ukkoa ;
n => ukot ! n
} ;
_ =>
Predef.error
(["last arguments should end in n, a/ä, and a/ä, not"] ++
(["last arguments should end in n, a/ä, and a/ä, not"] ++
ukon ++ ukkoja ++ ukkoa)
} ;
@@ -613,7 +613,7 @@ mkVS = overload {
noun : Str -> NForms = \s -> case s of {
_ + "i" => dPaatti s (s + "n") ;
_ + "e" => dNukke s (s + "n") ;
_ + ("a" | "o" | "u" | "y" | "ä" | "ö" | "ü") => dUkko s (s + "n") ;
_ + ("a" | "o" | "u" | "y" | "ä" | "ö" | "ü") => dUkko s (s + "n") ;
_ => dUnix s
}
} ;
@@ -693,28 +693,28 @@ mkVS = overload {
ot = init ota ;
in
case ottaa of {
_ + ("e" | "i" | "o" | "u" | "y" | "ö") + ("a" | "ä") =>
_ + ("e" | "i" | "o" | "u" | "y" | "ö") + ("a" | "ä") =>
cHukkua ottaa (ota + "n") ;
_ + ("l" | "n" | "r") + ("taa" | "tää") =>
_ + ("l" | "n" | "r") + ("taa" | "tää") =>
cOttaa ottaa (ota + "n") (ots + "in") (ots + "i") ;
("" | ?) + ("a" | "e" | "i" | "o" | "u") + ? + _ +
("a" | "e" | "i" | "o" | "u") + _ + "aa" =>
cOttaa ottaa (ota + "n") (ot + "in") (ott + "i") ;
("" | ?) + ("a" | "e" | "i") + _ + "aa" =>
cOttaa ottaa (ota + "n") (ot + "oin") (ott + "oi") ;
_ + ("aa" | "ää") =>
_ + ("aa" | "ää") =>
cOttaa ottaa (ota + "n") (ot + "in") (ott + "i") ;
_ + ("ella" | "ellä") =>
_ + ("ella" | "ellä") =>
cKuunnella ottaa otin ;
_ + ("osta" | "östä") =>
_ + ("osta" | "östä") =>
cJuosta ottaa (init ott + "ksen") ;
_ + ("st" | "nn" | "ll" | "rr") + ("a" | "ä") =>
_ + ("st" | "nn" | "ll" | "rr") + ("a" | "ä") =>
cJuosta ottaa (ott + "en") ;
_ + ("ita" | "itä") =>
_ + ("ita" | "itä") =>
cHarkita ottaa ;
_ + ("eta" | "etä" | "ota" | "ata" | "uta" | "ytä" | "ätä" | "ötä") =>
_ + ("eta" | "etä" | "ota" | "ata" | "uta" | "ytä" | "ätä" | "ötä") =>
cPudota ottaa (strongGrade ott + "si") ;
_ + ("da" | "dä") =>
_ + ("da" | "dä") =>
cJuoda ottaa ;
_ => Predef.error (["expected infinitive, found"] ++ ottaa)
} ;
@@ -726,17 +726,17 @@ mkVS = overload {
autoin = weakGrade (init huusi) + "in" ;
in
case <huutaa,huusi> of {
<_ + ("taa" | "tää"), _ + ("oi" | "öi")> =>
<_ + ("taa" | "tää"), _ + ("oi" | "öi")> =>
cOttaa huutaa (huuda + "n") autoin huusi ;
<_ + ("aa" | "ää"), _ + "i"> =>
<_ + ("aa" | "ää"), _ + "i"> =>
cOttaa huutaa (huuda + "n") huusin huusi ;
<_ + ("eta" | "etä"), _ + "eni"> =>
<_ + ("eta" | "etä"), _ + "eni"> =>
cValjeta huutaa huusi ;
<_ + ("sta" | "stä"), _ + "si"> =>
vForms1 huutaa ; -- pestä, halkaista
<_ + ("ta" | "tä"), _ + "si"> =>
<_ + ("sta" | "stä"), _ + "si"> =>
vForms1 huutaa ; -- pestä, halkaista
<_ + ("ta" | "tä"), _ + "si"> =>
cPudota huutaa huusi ;
<_ + ("lla" | "llä"), _ + "li"> =>
<_ + ("lla" | "llä"), _ + "li"> =>
cKuunnella huutaa huusin ;
_ => vForms1 huutaa
} ;
@@ -747,7 +747,7 @@ mkVS = overload {
vOlla = {
s = ollaSVerbForms ;
sc = SCNom ; h = Back ; lock_V = <> ; p = []} ; ---- lieneekö
sc = SCNom ; h = Back ; lock_V = <> ; p = []} ; ---- lieneekö
mk2V2 : V -> Prep -> V2 = \v,c -> v ** {c2 = c ; lock_V2 = <>} ;
caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ;

View File

@@ -1,7 +1,7 @@
--# -coding=latin1
concrete QuestionFin of Question = CatFin ** open ResFin, StemFin, Prelude in {
flags optimize=all_subs ;
coding=utf8 ;
lin
@@ -55,9 +55,9 @@ concrete QuestionFin of Question = CatFin ** open ResFin, StemFin, Prelude in {
let
k = npform2case n c ;
ncase = case <k,idet.isNum> of {
<Nom, True> => NCase Sg Part ; -- mitkä kolme kytkintä
<Nom, True> => NCase Sg Part ; -- mitkä kolme kytkintä
<_, True> => NCase Sg k ; -- miksi kolmeksi kytkimeksi
_ => NCase n k -- mitkä kytkimet
_ => NCase n k -- mitkä kytkimet
}
in
idet.s ! k ++ cn.s ! ncase ;
@@ -81,9 +81,9 @@ concrete QuestionFin of Question = CatFin ** open ResFin, StemFin, Prelude in {
s = \\k =>
let
ncase = case <k,isn> of {
<Nom, True> => NCase Sg Part ; -- mitkä kolme kytkintä
<Nom, True> => NCase Sg Part ; -- mitkä kolme kytkintä
<_, True> => NCase Sg k ; -- miksi kolmeksi kytkimeksi
_ => NCase n k -- mitkä kytkimet
_ => NCase n k -- mitkä kytkimet
}
in
idet.s ! n ! k ++ num.s ! Sg ! k ;

View File

@@ -1,12 +1,12 @@
--# -coding=latin1
concrete RelativeFin of Relative = CatFin ** open Prelude, ResFin, MorphoFin, StemFin in {
flags optimize=all_subs ;
coding=utf8 ;
lin
RelCl cl = {
s = \\t,a,p,_ => "siten" ++ "että" ++ cl.s ! t ! a ! p ! SDecl ;
s = \\t,a,p,_ => "siten" ++ "että" ++ cl.s ! t ! a ! p ! SDecl ;
---- sellainen
c = NPCase Nom
} ;

View File

@@ -1,5 +1,4 @@
--# -path=.:../abstract:../common:../../prelude
--# -coding=latin1
--1 Finnish auxiliary operations.
@@ -11,6 +10,7 @@
resource ResFin = ParamX ** open Prelude in {
flags optimize=all ;
coding=utf8 ;
--2 Parameters for $Noun$
@@ -220,11 +220,11 @@ param
let
c = case co.c of {
NPAcc => case b of {
Neg => NPCase Part ; -- en näe taloa/sinua
Neg => NPCase Part ; -- en näe taloa/sinua
Pos => case isFin of {
True => NPAcc ; -- näen/täytyy nähdä sinut
True => NPAcc ; -- näen/täytyy nähdä sinut
_ => case np.isPron of {
False => NPCase Nom ; -- täytyy nähdä talo
False => NPCase Nom ; -- täytyy nähdä talo
_ => NPAcc
}
}
@@ -298,7 +298,7 @@ oper
} ;
kin : Polarity -> Harmony -> Str =
\p,b -> case p of {Pos => (mkPart "kin" "kin").s ! b ; Neg => (mkPart "kaan" "kään").s ! b} ;
\p,b -> case p of {Pos => (mkPart "kin" "kin").s ! b ; Neg => (mkPart "kaan" "kään").s ! b} ;
mkPart : Str -> Str -> {s : Harmony => Str} = \ko,koe ->
{s = table {Back => glueTok ko ; Front => glueTok koe}} ;
@@ -311,7 +311,7 @@ oper
subjForm : NP -> SubjCase -> Polarity -> Str = \np,sc,b ->
appCompl False b {s = <[],[],\\_ => []> ; c = subjcase2npform sc} np ;
questPart : Harmony -> Str = \b -> case b of {Back => "ko" ; _ => "kö"} ;
questPart : Harmony -> Str = \b -> case b of {Back => "ko" ; _ => "kö"} ;
-- The definitions below were moved here from $MorphoFin$ so that the
-- auxiliary of predication can be defined.
@@ -365,7 +365,7 @@ oper
Potent Sg P3 => "lienee" ; --# notpresent
Potent Pl P1 => "lienemme" ; --# notpresent
Potent Pl P2 => "lienette" ; --# notpresent
Potent Pl P3 => "lienevät" ; --# notpresent
Potent Pl P3 => "lienevät" ; --# notpresent
PotentNeg => "liene" ; --# notpresent
Imper Sg => "ole" ;
Imper Pl => "olkaa" ;
@@ -398,8 +398,8 @@ oper
-- Unfortunately not enough (without complicated processes).
-- We moreover give grade alternation forms as arguments, since it does not
-- happen automatically.
--- A problem remains with the verb "seistä", where the infinitive
--- stem has vowel harmony "ä" but the others "a", thus "seisoivat" but "seiskää".
--- A problem remains with the verb "seistä", where the infinitive
--- stem has vowel harmony "ä" but the others "a", thus "seisoivat" but "seiskää".
noun2adj : CommonNoun -> Adj = noun2adjComp True ;
@@ -521,9 +521,9 @@ oper
(rakei + "den")
(rakei + ("t" + a))
(rakei + "siin") ;
-- Nouns with partitive "a"/"ä" ;
-- Nouns with partitive "a"/"ä" ;
-- to account for grade and vowel alternation, three forms are usually enough
-- Examples: "talo", "kukko", "huippu", "koira", "kukka", "syylä",...
-- Examples: "talo", "kukko", "huippu", "koira", "kukka", "syylä",...
sKukko : (_,_,_ : Str) -> NounH = \kukko,kukon,kukkoja ->
let {
@@ -555,7 +555,7 @@ oper
oper
reflPron : Agr -> NP = \agr ->
let
itse = (nhn (sKukko "itse" "itsen" "itsejä")).s ;
itse = (nhn (sKukko "itse" "itsen" "itsejä")).s ;
nsa = possSuffixFront agr
in {
s = table {
@@ -575,7 +575,7 @@ oper
} ;
possSuffixFront : Agr -> Str = \agr ->
table Agr ["ni" ; "si" ; "nsä" ; "mme" ; "nne" ; "nsä" ; "nne"] ! agr ;
table Agr ["ni" ; "si" ; "nsä" ; "mme" ; "nne" ; "nsä" ; "nne"] ! agr ;
possSuffix : Agr -> Str = \agr ->
table Agr ["ni" ; "si" ; "nsa" ; "mme" ; "nne" ; "nsa" ; "nne"] ! agr ;
@@ -586,7 +586,7 @@ oper
isPron = False -- has no special accusative
} ;
etta_Conj : Str = "että" ;
etta_Conj : Str = "että" ;
heavyDet : PDet -> PDet ** {sp : Case => Str} = \d -> d ** {sp = d.s1} ;
PDet : Type = {

View File

@@ -1,7 +1,7 @@
--# -coding=latin1
concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin, StemFin in {
flags optimize=all_subs ;
coding=utf8 ;
lin
@@ -38,7 +38,7 @@ concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin, StemFin in {
SlashVS np vs slash = {
s = \\t,a,p =>
(mkClause (subjForm np vs.sc) np.a
(insertExtrapos ("että" ++ slash.s)
(insertExtrapos ("että" ++ slash.s)
(predSV vs))
).s ! t ! a ! p ! SDecl ;
c2 = slash.c2
@@ -63,7 +63,7 @@ concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin, StemFin in {
AdvS a s = {s = a.s ++ s.s} ;
ExtAdvS a s = {s = a.s ++ "," ++ s.s} ;
RelS s r = {s = s.s ++ "," ++ r.s ! agrP3 Sg} ; ---- mikä
RelS s r = {s = s.s ++ "," ++ r.s ! agrP3 Sg} ; ---- mikä
SSubjS a subj b = {s = a.s ++ "," ++ subj.s ++ b.s} ;

View File

@@ -1,12 +1,12 @@
--# -coding=latin1
concrete StructuralFin of Structural = CatFin **
open MorphoFin, ParadigmsFin, (X = ConstructX), StemFin, Prelude in {
flags optimize=all ;
coding=utf8 ;
lin
above_Prep = postGenPrep "yläpuolella" ;
after_Prep = postGenPrep "jälkeen" ;
above_Prep = postGenPrep "yläpuolella" ;
after_Prep = postGenPrep "jälkeen" ;
all_Predet = {s = \\n,c =>
let
@@ -24,8 +24,8 @@ concrete StructuralFin of Structural = CatFin **
because_Subj = ss "koska" ;
before_Prep = prePrep partitive "ennen" ;
behind_Prep = postGenPrep "takana" ;
between_Prep = postGenPrep "välissä" ;
both7and_DConj = sd2 "sekä" "että" ** {n = Pl} ;
between_Prep = postGenPrep "välissä" ;
both7and_DConj = sd2 "sekä" "että" ** {n = Pl} ;
but_PConj = ss "mutta" ;
by8agent_Prep = postGenPrep "toimesta" ;
by8means_Prep = casePrep adessive ;
@@ -38,20 +38,20 @@ concrete StructuralFin of Structural = CatFin **
everything_NP = makeNP ((((mkN "kaikki" "kaiken" "kaikkena")))) Sg ;
everywhere_Adv = ss "kaikkialla" ;
few_Det = MorphoFin.mkDet Sg (snoun2nounBind (mkN "harva")) ;
--- first_Ord = {s = \\n,c => (mkN "ensimmäinen").s ! NCase n c} ;
--- first_Ord = {s = \\n,c => (mkN "ensimmäinen").s ! NCase n c} ;
for_Prep = casePrep allative ;
from_Prep = casePrep elative ;
he_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
here_Adv = ss "täällä" ;
here7to_Adv = ss "tänne" ;
here7from_Adv = ss "täältä" ;
he_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
here_Adv = ss "täällä" ;
here7to_Adv = ss "tänne" ;
here7from_Adv = ss "täältä" ;
how_IAdv = ss "miten" ;
how8much_IAdv = ss "kuinka paljon" ;
how8many_IDet =
{s = \\c => "kuinka" ++ (snoun2nounBind (mkN "moni" "monia")).s ! NCase Sg c ; n = Sg ; isNum = False} ;
if_Subj = ss "jos" ;
in8front_Prep = postGenPrep "edessä" ;
i_Pron = mkPronoun "minä" "minun" "minua" "minuna" "minuun" Sg P1 ;
in8front_Prep = postGenPrep "edessä" ;
i_Pron = mkPronoun "minä" "minun" "minua" "minuna" "minuun" Sg P1 ;
in_Prep = casePrep inessive ;
it_Pron = {
s = \\c => pronSe.s ! npform2case Sg c ;
@@ -59,12 +59,12 @@ concrete StructuralFin of Structural = CatFin **
hasPoss = False ;
poss = "sen" ;
} ;
less_CAdv = X.mkCAdv "vähemmän" "kuin" ;
less_CAdv = X.mkCAdv "vähemmän" "kuin" ;
many_Det = MorphoFin.mkDet Sg (snoun2nounBind (mkN "moni" "monia")) ;
more_CAdv = X.mkCAdv "enemmän" "kuin" ;
more_CAdv = X.mkCAdv "enemmän" "kuin" ;
most_Predet = {s = \\n,c => (nForms2N (dSuurin "useinta")).s ! NCase n (npform2case n c)} ;
much_Det = MorphoFin.mkDet Sg {s = \\_ => "paljon" ; h = Back} ; --Harmony not relevant, it's just a CommonNoun
must_VV = mkVV (caseV genitive (mkV "täytyä")) ;
must_VV = mkVV (caseV genitive (mkV "täytyä")) ;
no_Utt = ss "ei" ;
on_Prep = casePrep adessive ;
--- one_Quant = MorphoFin.mkDet Sg DEPREC
@@ -72,10 +72,10 @@ concrete StructuralFin of Structural = CatFin **
or_Conj = {s1 = [] ; s2 = "tai" ; n = Sg} ;
otherwise_PConj = ss "muuten" ;
part_Prep = casePrep partitive ;
please_Voc = ss ["ole hyvä"] ; --- number
please_Voc = ss ["ole hyvä"] ; --- number
possess_Prep = casePrep genitive ;
quite_Adv = ss "melko" ;
she_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
she_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
so_AdA = ss "niin" ;
somebody_NP = {
s = \\c => jokuPron ! Sg ! npform2case Sg c ;
@@ -109,19 +109,19 @@ concrete StructuralFin of Structural = CatFin **
} ;
s2 = \\_ => [] ; isNum,isPoss = False ; isDef = True ; isNeg = False
} ;
that_Subj = ss "että" ;
there_Adv = ss "siellä" ; --- tuolla
that_Subj = ss "että" ;
there_Adv = ss "siellä" ; --- tuolla
there7to_Adv = ss "sinne" ;
there7from_Adv = ss "sieltä" ;
there7from_Adv = ss "sieltä" ;
therefore_PConj = ss "siksi" ;
they_Pron = mkPronoun "he" "heidän" "heitä" "heinä" "heihin" Pl P3 ; --- ne
they_Pron = mkPronoun "he" "heidän" "heitä" "heinä" "heihin" Pl P3 ; --- ne
this_Quant = heavyQuant {
s1 = table (MorphoFin.Number) {
Sg => table (MorphoFin.Case) {
c => (mkPronoun "tämä" "tämän" "tätä" "tänä" "tähän" Sg P3).s ! NPCase c
c => (mkPronoun "tämä" "tämän" "tätä" "tänä" "tähän" Sg P3).s ! NPCase c
} ;
Pl => table (MorphoFin.Case) {
c => (mkPronoun "nämä" "näiden" "näitä" "näinä" "näihin" Sg P3).s ! NPCase c
c => (mkPronoun "nämä" "näiden" "näitä" "näinä" "näihin" Sg P3).s ! NPCase c
}
} ;
s2 = \\_ => [] ; isNum,isPoss = False ; isDef = True ; isNeg = False
@@ -130,11 +130,11 @@ concrete StructuralFin of Structural = CatFin **
too_AdA = ss "liian" ;
to_Prep = casePrep illative ; --- allative
under_Prep = postGenPrep "alla" ;
very_AdA = ss "erittäin" ;
very_AdA = ss "erittäin" ;
want_VV = mkVV (mkV "tahtoa") ;
we_Pron = mkPronoun "me" "meidän" "meitä" "meinä" "meihin" Pl P1 ;
we_Pron = mkPronoun "me" "meidän" "meitä" "meinä" "meihin" Pl P1 ;
whatPl_IP = {
s = table {NPAcc => "mitkä" ; c => mikaInt ! Pl ! npform2case Pl c} ;
s = table {NPAcc => "mitkä" ; c => mikaInt ! Pl ! npform2case Pl c} ;
n = Pl
} ;
whatSg_IP = {
@@ -143,7 +143,7 @@ concrete StructuralFin of Structural = CatFin **
} ;
when_IAdv = ss "milloin" ;
when_Subj = ss "kun" ;
where_IAdv = ss "missä" ;
where_IAdv = ss "missä" ;
which_IQuant = {
s = mikaInt
} ;
@@ -152,17 +152,17 @@ concrete StructuralFin of Structural = CatFin **
n = Sg
} ;
whoPl_IP = {
s = table {NPAcc => "ketkä" ; c => kukaInt ! Pl ! npform2case Pl c} ;
s = table {NPAcc => "ketkä" ; c => kukaInt ! Pl ! npform2case Pl c} ;
n = Pl
} ;
why_IAdv = ss "miksi" ;
without_Prep = prePrep partitive "ilman" ;
with_Prep = postGenPrep "kanssa" ;
yes_Utt = ss "kyllä" ;
youSg_Pron = mkPronoun "sinä" "sinun" "sinua" "sinuna" "sinuun" Sg P2 ;
youPl_Pron = mkPronoun "te" "teidän" "teitä" "teinä" "teihin" Pl P2 ;
yes_Utt = ss "kyllä" ;
youSg_Pron = mkPronoun "sinä" "sinun" "sinua" "sinuna" "sinuun" Sg P2 ;
youPl_Pron = mkPronoun "te" "teidän" "teitä" "teinä" "teihin" Pl P2 ;
youPol_Pron =
let p = mkPronoun "te" "teidän" "teitä" "teinä" "teihin" Pl P2 in
let p = mkPronoun "te" "teidän" "teitä" "teinä" "teihin" Pl P2 in
{s = p.s ; a = AgPol ; hasPoss = True ; poss = p.poss} ;
oper
@@ -201,16 +201,16 @@ oper
} in
table {
Sg => table {
Nom => "mikä" ;
Gen => "minkä" ;
Part => "mitä" ;
Nom => "mikä" ;
Gen => "minkä" ;
Part => "mitä" ;
Illat => "mihin" ;
c => mi.s ! NCase Sg c
} ;
Pl => table {
Nom => "mitkä" ;
Gen => "minkä" ;
Part => "mitä" ;
Nom => "mitkä" ;
Gen => "minkä" ;
Part => "mitä" ;
Illat => "mihin" ;
c => mi.s ! NCase Sg c
}
@@ -218,55 +218,55 @@ oper
kukaInt : MorphoFin.Number => (MorphoFin.Case) => Str =
let
kuka = snoun2nounBind (mkN "kuka" "kenen" "ketä" "kenä" "keneen"
"keiden" "keitä" "keinä" "keissä" "keihin") ;
kuka = snoun2nounBind (mkN "kuka" "kenen" "ketä" "kenä" "keneen"
"keiden" "keitä" "keinä" "keissä" "keihin") ;
in
table {
Sg => table {
c => kuka.s ! NCase Sg c
} ;
Pl => table {
Nom => "ketkä" ;
Nom => "ketkä" ;
c => kuka.s ! NCase Pl c
}
} ;
mikaanPron : MorphoFin.Number => (MorphoFin.Case) => Str = \\n,c =>
case <n,c> of {
<Sg,Nom> => "mikään" ;
<_,Part> => "mitään" ;
<Sg,Gen> => "minkään" ;
<Pl,Nom> => "mitkään" ;
<Pl,Gen> => "mittenkään" ;
<_,Ess> => "minään" ;
<_,Iness> => "missään" ;
<_,Elat> => "mistään" ;
<_,Adess> => "millään" ;
<_,Ablat> => "miltään" ;
_ => mikaInt ! n ! c + "kään"
<Sg,Nom> => "mikään" ;
<_,Part> => "mitään" ;
<Sg,Gen> => "minkään" ;
<Pl,Nom> => "mitkään" ;
<Pl,Gen> => "mittenkään" ;
<_,Ess> => "minään" ;
<_,Iness> => "missään" ;
<_,Elat> => "mistään" ;
<_,Adess> => "millään" ;
<_,Ablat> => "miltään" ;
_ => mikaInt ! n ! c + "kään"
} ;
kukaanPron : MorphoFin.Number => (MorphoFin.Case) => Str =
table {
Sg => table {
Nom => "kukaan" ;
Part => "ketään" ;
Ess => "kenään" ;
Iness => "kessään" ;
Elat => "kestään" ;
Illat => "kehenkään" ;
Adess => "kellään" ;
Ablat => "keltään" ;
c => kukaInt ! Sg ! c + "kään"
Part => "ketään" ;
Ess => "kenään" ;
Iness => "kessään" ;
Elat => "kestään" ;
Illat => "kehenkään" ;
Adess => "kellään" ;
Ablat => "keltään" ;
c => kukaInt ! Sg ! c + "kään"
} ;
Pl => table {
Nom => "ketkään" ;
Part => "keitään" ;
Ess => "keinään" ;
Iness => "keissään" ;
Elat => "keistään" ;
Adess => "keillään" ;
Ablat => "keiltään" ;
c => kukaInt ! Pl ! c + "kään"
Nom => "ketkään" ;
Part => "keitään" ;
Ess => "keinään" ;
Iness => "keissään" ;
Elat => "keistään" ;
Adess => "keillään" ;
Ablat => "keiltään" ;
c => kukaInt ! Pl ! c + "kään"
}
} ;
@@ -300,10 +300,10 @@ lin
isPron = False ; isNeg = True
} ;
at_least_AdN = ss "vähintään" ;
at_most_AdN = ss "enintään" ;
at_least_AdN = ss "vähintään" ;
at_most_AdN = ss "enintään" ;
as_CAdv = X.mkCAdv "yhtä" "kuin" ;
as_CAdv = X.mkCAdv "yhtä" "kuin" ;
except_Prep = postPrep partitive "lukuunottamatta" ;

View File

@@ -10,6 +10,7 @@ concrete TerminologyFin of Terminology = CatFin ** open
Prelude,
HTML
in {
flags coding=utf8 ;
lincat

View File

@@ -1,9 +1,9 @@
--1 Verb Phrases in Finnish
--# -coding=latin1
concrete VerbFin of Verb = CatFin ** open Prelude, ResFin, StemFin in {
flags optimize=all_subs ;
coding=utf8 ;
lin
UseV = predSV ;
@@ -22,8 +22,8 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin, StemFin in {
(\\_,b,a => infVP v.sc b a vp (vvtype2infform v.vi))
(predSV {s = v.s ;
sc = case vp.s.sc of {
SCNom => v.sc ; -- minun täytyy pestä auto
c => c -- minulla täytyy olla auto
SCNom => v.sc ; -- minun täytyy pestä auto
c => c -- minulla täytyy olla auto
} ;
h = v.h ; p = v.p
}
@@ -71,8 +71,8 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin, StemFin in {
(\\_,b,a => infVP v.sc b a vp v.vi)
(predSV {s = v.s ;
sc = case vp.s.sc of {
NPCase Nom => v.sc ; -- minun täytyy pestä auto
c => c -- minulla täytyy olla auto
NPCase Nom => v.sc ; -- minun täytyy pestä auto
c => c -- minulla täytyy olla auto
} ;
h = v.h ; p = v.p
}
@@ -108,7 +108,7 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin, StemFin in {
let
n = complNumAgr agr ;
c = case n of {
Sg => Nom ; -- minä olen iso ; te olette iso
Sg => Nom ; -- minä olen iso ; te olette iso
Pl => Part -- me olemme isoja ; te olette isoja
} --- definiteness of NP ?
in ap.s ! False ! (NCase n c)
@@ -118,7 +118,7 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin, StemFin in {
let
n = complNumAgr agr ;
c = case n of {
Sg => Nom ; -- minä olen iso ; te olette iso
Sg => Nom ; -- minä olen iso ; te olette iso
Pl => Part -- me olemme isoja ; te olette isoja
} --- definiteness of NP ?
in cn.s ! (NCase n c)
@@ -136,13 +136,13 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin, StemFin in {
-- The work is done jointly in ResFin.infVP and appCompl.
-- Cases to test: l -table (to see negated forms)
--```
-- minun täytyy ostaa auto
-- minun täytyy ostaa auto
-- PredVP (UsePron i_Pron) (ComplVV must_VV
-- (ComplV2 buy_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N))))
-- minä tahdon ostaa auton
-- minä tahdon ostaa auton
-- PredVP (UsePron i_Pron) (ComplVV want_VV
-- (ComplV2 buy_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N))))
-- minulla täytyy olla auto
-- minulla täytyy olla auto
-- PredVP (UsePron i_Pron) (ComplVV must_VV
-- (ComplV2 have_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N))))
--```

View File

@@ -1,8 +1,8 @@
--# -path=.:..:../../abstract:../../common:../../english:../kotus
--# -coding=latin1
resource WNKotus = open Kotus, MorphoFin, ParadigmsFin, CatFin, StemFin, Prelude in {
flags coding=utf8 ;
-- interpretations of paradigms in KOTUS word list, used in DictFin built with the Finnish Wordnet
oper vowelHarmony = vowHarmony ;
@@ -33,7 +33,7 @@ oper
mkWN : NForms -> Str -> Str -> N = \s,t,u -> separateN (t ++ u) (lin N (nforms2snoun s)) ;
mkWN : (_ : N) -> N = \n -> n ;
mkWN : N -> Str -> N = \n,s -> separateN s n ; --- emansipaation kannattaja
mkWN : N -> (_,_ : Str) -> N = \n,s,t -> separateN (s ++ t) n ; --- silmäluomien synnynnäinen puuttuminen
mkWN : N -> (_,_ : Str) -> N = \n,s,t -> separateN (s ++ t) n ; --- silmäluomien synnynnäinen puuttuminen
} ;
mkWA = overload {
@@ -43,7 +43,7 @@ oper
mkWN : NForms -> Str -> A = \s,t -> mkA (separateN t (lin N (nforms2snoun s))) ;
mkWA : (_ : N) -> A = \n -> mkA n ;
mkWA : N -> Str -> A = \n,s -> mkA (separateN s n) ; --- emansipaation kannattaja
mkWA : N -> (_,_ : Str) -> A = \n,s,t -> mkA (separateN (s ++ t) n) ; --- silmäluomien synnynnäinen puuttuminen
mkWA : N -> (_,_ : Str) -> A = \n,s,t -> mkA (separateN (s ++ t) n) ; --- silmäluomien synnynnäinen puuttuminen
} ;
mkWAdv = overload {
@@ -143,61 +143,61 @@ oper
-- kotus paradigms
k1 : Str -> NForms -- 1780 öljy
k1 : Str -> NForms -- 1780 öljy
= \s -> dUkko s (s + "n") ;
k1A : Str -> NForms -- 166 yökkö
k1A : Str -> NForms -- 166 yökkö
= \s -> dUkko s (weakGrade s + "n") ;
k2 : Str -> NForms -- 1189 ääntely
k2 : Str -> NForms -- 1189 ääntely
= \s -> dSilakka s (s + "n") (s + "j" + getHarmony (last s)) ;
k3 : Str -> NForms -- 481 ääntiö
k3 : Str -> NForms -- 481 ääntiö
= \s -> dSilakka s (s + "n") (s + "it" + vowelHarmony s) ;
k4A : Str -> NForms -- 273 äpärikkö
k4A : Str -> NForms -- 273 äpärikkö
= \s -> let ws = weakGrade s in
dSilakka s (ws + "n") (ws + "it" + getHarmony (last s)) ;
k5 : Str -> NForms -- 3212 öljymaali
k5 : Str -> NForms -- 3212 öljymaali
= \s -> case last s of {
"i" => dPaatti s (s + "n") ;
_ => dUnix s
} ;
k5A : Str -> NForms -- 1959 öylätti
k5A : Str -> NForms -- 1959 öylätti
= \s -> dPaatti s (weakGrade s + "n") ;
k6 : Str -> NForms -- 1231 öykkäri
k6 : Str -> NForms -- 1231 öykkäri
= \s -> dTohtori s ;
k7 : Str -> NForms -- 81 vuoksi
= \s -> dArpi s (init s + "en") ;
k7A : Str -> NForms -- 70 väki
k7A : Str -> NForms -- 70 väki
= \s -> dArpi s (init (weakGrade s) + "en") ;
k8 : Str -> NForms -- 99 à la carte
k8 : Str -> NForms -- 99 à la carte
= \s -> dNukke s (s + "n") ;
k8A : Str -> NForms -- 5 vinaigrette
= \s -> dNukke s (weakGrade s + "n") ;
k9 : Str -> NForms -- 696 ääriraja
k9 : Str -> NForms -- 696 ääriraja
= \s -> let a = last s in dSilakka s
(s + "n")
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
k9A : Str -> NForms -- 1040 ääniraita
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
k9A : Str -> NForms -- 1040 ääniraita
= \s -> let a = last s in dSilakka s
(weakGrade s + "n")
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
k10 : Str -> NForms -- 2119 äänittäjä
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
k10 : Str -> NForms -- 2119 äänittäjä
= \s -> dSilakka s (s + "n") (init s + "i" + vowelHarmony (last s)) ;
k10A : Str -> NForms -- 284 änkkä
k10A : Str -> NForms -- 284 änkkä
= \s -> dSilakka s (weakGrade s + "n") (init s + "i" + vowelHarmony (last s)) ;
k11 : Str -> NForms -- 46 ödeema
k11 : Str -> NForms -- 46 ödeema
= \s -> dSilakka s (weakGrade s + "n") (init s + "i" + vowelHarmony (last s)) ;
k12 : Str -> NForms -- 1125 örinä
k12 : Str -> NForms -- 1125 örinä
= \s -> let a = vowelHarmony (last s) in
dSilakka s (s + "n")
(init s + case a of {"a" => "o" ; _ => "ö"} + "it" + a) ;
(init s + case a of {"a" => "o" ; _ => "ö"} + "it" + a) ;
k13 : Str -> NForms -- 157 virtaska
= \s -> let a = vowelHarmony (last s) in
dSilakka s (s + "n")
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
k14A : Str -> NForms -- 244 ötökkä
(init s + case a of {"a" => "o" ; _ => "ö"} + "j" + a) ;
k14A : Str -> NForms -- 244 ötökkä
= \s -> let a = vowelHarmony (last s) ; ws = weakGrade s in
dSilakka s (ws + "n")
(init ws + case a of {"a" => "o" ; _ => "ö"} + "it" + a) ;
k15 : Str -> NForms -- 170 äreä
(init ws + case a of {"a" => "o" ; _ => "ö"} + "it" + a) ;
k15 : Str -> NForms -- 170 äreä
= dKorkea ;
k16 : Str -> NForms -- 2 kumpikin --?
= \s -> let kumpi = Predef.take 5 s ; kin = Predef.drop 5 s in
@@ -206,13 +206,13 @@ oper
= dSuurempi ;
k17 : Str -> NForms -- 38 virkkuu
= dPaluu ;
k18 : Str -> NForms -- voi, tee, sää
k18 : Str -> NForms -- voi, tee, sää
= dPuu ;
k19 : Str -> NForms -- 6 yö
k19 : Str -> NForms -- 6 yö
= dSuo ;
k20 : Str -> NForms -- 46 voodoo
= dPaluu ;
k21 : Str -> NForms -- 22 tax-free --? rosé
k21 : Str -> NForms -- 22 tax-free --? rosé
= dPuu ;
k22 : Str -> NForms -- 13 tournedos
= \s -> nForms10
@@ -224,20 +224,20 @@ oper
= \s -> dArpi s (init s + "en") ;
k25 : Str -> NForms -- 9 tuomi
= \s -> dArpi s (init s + "en") ;
k26 : Str -> NForms -- 113 ääri
k26 : Str -> NForms -- 113 ääri
= \s -> dArpi s (init s + "en") ;
k27 : Str -> NForms -- 23 vuosi
= \s -> dArpi s (Predef.tk 2 s + "den") ;
k28 : Str -> NForms -- 13 virsi
= \s -> dArpi s (Predef.tk 2 s + "ren") ;
k28A : Str -> NForms -- 1 jälsi
k28A : Str -> NForms -- 1 jälsi
= \s -> dArpi s (Predef.tk 2 s + "len") ;
k29 : Str -> NForms -- 1 lapsi
= \s -> let lapsi = dArpi s (init s + "en") in
table {2 => Predef.tk 3 s + "ta" ; i => lapsi ! i} ;
k30 : Str -> NForms -- 2 veitsi
= \s -> let lapsi = dArpi s (init s + "en") in
table {2 => Predef.tk 3 s + "stä" ; i => lapsi ! i} ;
table {2 => Predef.tk 3 s + "stä" ; i => lapsi ! i} ;
k31 : Str -> NForms -- 3 yksi
= \s -> let
y = Predef.tk 3 s ;
@@ -247,9 +247,9 @@ oper
(s + "en") (s + a) (s + "n" + a) (s + "ss" + a) (s + "in") ;
k32 : Str -> NForms -- 20 uumen
= \s -> dPiennar s (s + "en") ;
k32A : Str -> NForms -- 54 ystävätär
k32A : Str -> NForms -- 54 ystävätär
= \s -> dPiennar s (strongGrade (init s) + last s + "en") ;
k33 : Str -> NForms -- 168 väistin
k33 : Str -> NForms -- 168 väistin
= \s -> dLiitin s (init s + "men") ;
k33A : Str -> NForms -- 181 yllytin
= \s -> dLiitin s (strongGrade (init s) + "men") ;
@@ -259,14 +259,14 @@ oper
s (alastom + "an") (s + "ta") (alastom + "ana") (alastom + "aan")
(alastom + "ien") (alastom + "ia") (alastom + "ina") (alastom + "issa")
(alastom + "iin") ;
k34A : Str -> NForms -- 569 ääretön
k34A : Str -> NForms -- 569 ääretön
= dOnneton ;
k35A : Str -> NForms -- 1 lämmin
= \s -> let lämpim = strongGrade (init s) + "m" in
k35A : Str -> NForms -- 1 lämmin
= \s -> let lämpim = strongGrade (init s) + "m" in
nForms10
s (lämpim + "än") (s + "tä") (lämpim + "änä") (lämpim + "ään")
(lämpim + "ien") (lämpim + "iä") (lämpim + "inä") (lämpim + "issä")
(lämpim + "iin") ;
s (lämpim + "än") (s + "tä") (lämpim + "änä") (lämpim + "ään")
(lämpim + "ien") (lämpim + "iä") (lämpim + "inä") (lämpim + "issä")
(lämpim + "iin") ;
k36 : Str -> NForms -- 11 ylin
= dSuurin ;
k37 : Str -> NForms -- 1 vasen
@@ -275,32 +275,32 @@ oper
s (vasem + "man") (s + "ta") (vasem + "pana") (vasem + "paan")
(vasem + "pien") (vasem + "pia") (vasem + "pina") (vasem + "missa")
(vasem + "piin") ;
k38 : Str -> NForms -- 4195 öykkärimäinen
k38 : Str -> NForms -- 4195 öykkärimäinen
= dNainen ;
k39 : Str -> NForms -- 2730 örähdys
k39 : Str -> NForms -- 2730 örähdys
= dJalas ;
k40 : Str -> NForms -- 2482 öykkärimäisyys
k40 : Str -> NForms -- 2482 öykkärimäisyys
= dLujuus ;
k41 : Str -> NForms -- 127 äyräs
k41 : Str -> NForms -- 127 äyräs
= \s -> let is = init s in dRae s (is + last is + "n") ;
k41A : Str -> NForms -- 401 öljykangas
k41A : Str -> NForms -- 401 öljykangas
= \s -> let is = init s in dRae s (strongGrade is + last is + "n") ;
k42 : Str -> NForms -- 1 mies
= \s -> let mieh = init s + "h" in
nForms10
s (mieh + "en") (s + "tä") (mieh + "enä") (mieh + "een")
(s + "ten") (mieh + "iä") (mieh + "inä") (mieh + "issä")
s (mieh + "en") (s + "tä") (mieh + "enä") (mieh + "een")
(s + "ten") (mieh + "iä") (mieh + "inä") (mieh + "issä")
(mieh + "iin") ;
k43 : Str -> NForms -- 11 tiehyt
= \s -> dRae s (init s + "en") ;
k43A : Str -> NForms -- 1 immyt
= \s -> dRae s (strongGrade (init s) + "en") ;
k44 : Str -> NForms -- 1 kevät
= \s -> let kevä = init s in
k44 : Str -> NForms -- 1 kevät
= \s -> let kevä = init s in
nForms10
s (kevä + "än") (s + "tä") (kevä + "änä") (kevä + "äseen")
(s + "iden") (kevä + "itä") (kevä + "inä") (kevä + "issä")
(kevä + "isiin") ;
s (kevä + "än") (s + "tä") (kevä + "änä") (kevä + "äseen")
(s + "iden") (kevä + "itä") (kevä + "inä") (kevä + "issä")
(kevä + "isiin") ;
k45 : Str -> NForms -- 23 yhdes
= \s -> let yhde = init s ; a = vowelHarmony s in
nForms10
@@ -315,9 +315,9 @@ oper
(tuha + "nsiin") ;
k47 : Str -> NForms -- 46 ylirasittunut
= dOttanut ;
k48 : Str -> NForms -- 346 äpäre
k48 : Str -> NForms -- 346 äpäre
= \s -> dRae s (s + last s + "n") ;
k48A : Str -> NForms -- 481 äänne
k48A : Str -> NForms -- 481 äänne
= \s -> dRae s (strongGrade s + "en") ;
k49 : Str -> NForms -- 31 vempele
= \s -> case last s of {
@@ -327,27 +327,27 @@ oper
k49A : Str -> NForms -- 11 vemmel
= \s -> dPiennar s (strongGrade (init s) + "len") ;
k52 : Str -> VForms -- 667 ärjyä
k52 : Str -> VForms -- 667 ärjyä
= \s -> cHukkua s (init s + "n") ;
k52A : Str -> VForms -- 1568 öljyyntyä
k52A : Str -> VForms -- 1568 öljyyntyä
= \s -> cHukkua s (weakGrade (init s) + "n") ;
k53 : Str -> VForms -- 605 äänestää
k53 : Str -> VForms -- 605 äänestää
= \s -> let ott = Predef.tk 2 s in
cOttaa s (init s + "n") (ott + "in") (ott + "i") ;
k53A : Str -> VForms -- 2121 örähtää
k53A : Str -> VForms -- 2121 örähtää
= \s -> let ota = weakGrade (init s) in
cOttaa s (ota + "n") (init ota + "in") (Predef.tk 2 s + "i") ;
k54 : Str -> VForms -- 2 pieksää
k54 : Str -> VForms -- 2 pieksää
= \s -> let ott = Predef.tk 2 s in
cOttaa s (init s + "n") (ott + "in") (ott + "i") ;
k54A : Str -> VForms -- 316 ääntää
k54A : Str -> VForms -- 316 ääntää
= \s -> let ota = weakGrade (init s) ; o = Predef.tk 2 ota in
cOttaa s (ota + "n") (o + "sin") (o + "si") ;
k55A : Str -> VForms -- 7 yltää
k55A : Str -> VForms -- 7 yltää
= c54A ; --? diff: variation ylti/ylsi
k56 : Str -> VForms -- 22 valaa
= \s -> let val = Predef.tk 2 s in
cOttaa s (init s + "n") (val + "oin") (val + "oi") ; -- never ö
cOttaa s (init s + "n") (val + "oin") (val + "oi") ; -- never ö
k56A : Str -> VForms -- 28 virkkaa
= \s -> let ota = weakGrade (init s) ; ot = init ota in
cOttaa s (ota + "n") (ot + "oin") (ot + "oi") ;
@@ -362,69 +362,69 @@ oper
vForms12 s (tunne + "n") (tunte + "e") (tunte + "vat") (tunte + "kaa") (tunne + "taan")
(tuns + "in") (tuns + "i") (init tunte + "isi") (tunte + "nut") (tunne + "ttu")
(tunte + "nee") ; -- just one verb
k60A : Str -> VForms -- 1 lähteä
= c58A ; --? diff lähti/läksi, just one verb
k61 : Str -> VForms -- 249 äyskiä
k60A : Str -> VForms -- 1 lähteä
= c58A ; --? diff lähti/läksi, just one verb
k61 : Str -> VForms -- 249 äyskiä
= \s -> cHukkua s (init s + "n") ;
k61A : Str -> VForms -- 153 vääntelehtiä
k61A : Str -> VForms -- 153 vääntelehtiä
= \s -> cHukkua s (weakGrade (init s) + "n") ;
k62 : Str -> VForms -- 684 öykkäröidä
k62 : Str -> VForms -- 684 öykkäröidä
= \s -> cJuoda s ;
k63 : Str -> VForms -- 3 saada
= c62 ;
k64 : Str -> VForms -- 8 viedä
k64 : Str -> VForms -- 8 viedä
= c62 ;
k65 : Str -> VForms -- 1 käydä
k65 : Str -> VForms -- 1 käydä
= \s -> let kay = Predef.tk 2 s ; kavi = init kay + "vi" in
vForms12 s (kay + "n") kay (kay + "vät") (kay + "kää") (kay + "dään")
vForms12 s (kay + "n") kay (kay + "vät") (kay + "kää") (kay + "dään")
(kavi + "n") kavi (kavi + "si") (kay + "nyt") (kay + "tty")
(kay + "nee") ; -- just one verb
k66 : Str -> VForms -- 268 öristä
k66 : Str -> VForms -- 268 öristä
= \s -> cKuunnella s (Predef.tk 2 s + "in") ;
k66A : Str -> VForms -- 3 vavista
= \s -> cKuunnella s (strongGrade (Predef.tk 3 s) + "sin") ;
k67 : Str -> VForms -- 704 ällistellä
k67 : Str -> VForms -- 704 ällistellä
= \s -> cKuunnella s (Predef.tk 2 s + "in") ;
k67A : Str -> VForms -- 634 äännellä
k67A : Str -> VForms -- 634 äännellä
= \s -> cKuunnella s (strongGrade (Predef.tk 3 s) + "lin") ;
k68 : Str -> VForms -- 49 viheriöidä
= c62 ; -- diff viheriöin/viheriöitsen
k69 : Str -> VForms -- 48 villitä
k68 : Str -> VForms -- 49 viheriöidä
= c62 ; -- diff viheriöin/viheriöitsen
k69 : Str -> VForms -- 48 villitä
= \s -> cHarkita s ;
k70 : Str -> VForms -- 3 syöstä
k70 : Str -> VForms -- 3 syöstä
= \s -> cJuosta s (Predef.tk 3 s + "ksen") ;
k71 : Str -> VForms -- 2 tehdä
k71 : Str -> VForms -- 2 tehdä
= \s -> let te = Predef.tk 3 s in
vForms12 s (te + "en") (te + "kee") (te + "kevät") (te + "hkää") (te + "hdään")
vForms12 s (te + "en") (te + "kee") (te + "kevät") (te + "hkää") (te + "hdään")
(te + "en") (te + "ki") (te + "kisi") (te + "hnyt") (te + "hty")
(te + "hnee") ; -- just two verbs: nähdä, tehdä
k72 : Str -> VForms -- 93 yletä
(te + "hnee") ; -- just two verbs: nähdä, tehdä
k72 : Str -> VForms -- 93 yletä
= \s -> cValjeta s (Predef.tk 2 s + "ni") ;
k72A : Str -> VForms -- 52 yhdetä
k72A : Str -> VForms -- 52 yhdetä
= \s -> cValjeta s (strongGrade (Predef.tk 2 s) + "ni") ;
k73 : Str -> VForms -- 600 äkseerata
k73 : Str -> VForms -- 600 äkseerata
= \s -> cPudota s (Predef.tk 2 s + "si") ;
k73A : Str -> VForms -- 313 änkätä
k73A : Str -> VForms -- 313 änkätä
= \s -> cPudota s (strongGrade (Predef.tk 2 s) + "si") ;
k74 : Str -> VForms -- 99 öljytä
k74 : Str -> VForms -- 99 öljytä
= \s -> cPudota s (Predef.tk 2 s + "si") ;
k74A : Str -> VForms -- 72 ängetä
k74A : Str -> VForms -- 72 ängetä
= \s -> cPudota s (strongGrade (Predef.tk 2 s) + "si") ;
k75 : Str -> VForms -- 39 viritä
k75 : Str -> VForms -- 39 viritä
= \s -> cPudota s (Predef.tk 2 s + "si") ;
k75A : Str -> VForms -- 9 siitä
k75A : Str -> VForms -- 9 siitä
= \s -> cPudota s (strongGrade (Predef.tk 2 s) + "si") ;
k76A : Str -> VForms -- 2 tietää
k76A : Str -> VForms -- 2 tietää
= \s -> let tieta = init s ; tieda = weakGrade tieta ; ties = Predef.tk 2 tieta + "s" in
cOttaa s (tieda + "n") (ties + "in") (ties + "i") ; -- only tietaa, taitaa
-- defective verbs
k77 : Str -> VForms -- 3 vipajaa
= c56A ; ----
k78 : Str -> VForms -- 31 ähkää
k78 : Str -> VForms -- 31 ähkää
= c56A ; ----
k78A : Str -> VForms -- 1 tuikkaa
= c56A ; ----
k99 : Str -> Str -- 5453 öykkärimäisesti
k99 : Str -> Str -- 5453 öykkärimäisesti
= \s -> s ;
k101 : Str -> Str -- pronouns etc
@@ -440,7 +440,7 @@ oper
---- remnants of erroneous annotations
k50 : Str -> N ---- Forms -- 520 vääräsääri
k50 : Str -> N ---- Forms -- 520 vääräsääri
= \s -> mkN s ;
k51 : Str -> N ---- Forms -- 62 vierasmies
= \s -> mkN s ;