mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-20 02:09:32 -06:00
1253 lines
38 KiB
Plaintext
1253 lines
38 KiB
Plaintext
--1 A Simple Swedish Resource Morphology
|
|
--
|
|
-- Aarne Ranta 2002
|
|
--
|
|
-- This resource morphology contains definitions needed in the resource
|
|
-- syntax. It moreover contains copies of the most usual inflectional patterns
|
|
-- as defined in functional morphology (in the Haskell file $RulesSw.hs$).
|
|
--
|
|
-- We use the parameter types and word classes defined for morphology.
|
|
|
|
resource MorphoSwe = TypesSwe ** open Prelude in {
|
|
|
|
-- Nouns
|
|
|
|
oper
|
|
mkNoun : (apa,apan,apor,aporna : Str) -> Subst =
|
|
\apa,apan,apor,aporna ->
|
|
{s = table {
|
|
SF Sg Indef c => mkCase c apa ;
|
|
SF Sg Def c => mkCase c apan ;
|
|
SF Pl Indef c => mkCase c apor ;
|
|
SF Pl Def c => mkCase c aporna
|
|
} ;
|
|
h1 = case last apan of {
|
|
"n" => Utr ;
|
|
_ => Neutr
|
|
}
|
|
} ;
|
|
|
|
reg2Noun : Str -> Str -> Subst = \bil,bilar ->
|
|
let
|
|
l = last bil ;
|
|
b = Predef.tk 2 bil ;
|
|
ar = Predef.dp 2 bilar ;
|
|
bile = Predef.tk 2 bilar
|
|
in
|
|
case ar of {
|
|
"or" => case l of {
|
|
"a" => decl1Noun bil ;
|
|
"r" => sLik bil ;
|
|
"o" => mkNoun bil (bil + "n") bilar (bilar + "na") ;
|
|
_ => mkNoun bil (bil + "en") bilar (bilar + "na")
|
|
} ;
|
|
"ar" => ifTok Subst bil bilar
|
|
(decl5Noun bil)
|
|
(ifTok Subst bile bil
|
|
(decl2Noun bil)
|
|
(case l of {
|
|
"e" => decl2Noun bil ; -- pojke-pojkar
|
|
_ => mkNoun bil (bile + "en") bilar (bilar + "na") -- mun-munnar
|
|
}
|
|
)
|
|
) ;
|
|
"er" => case l of {
|
|
"e" => sVarelse (init bil) ;
|
|
"å" => sNivå bil ;
|
|
_ => mkNoun bil (bil + "en") (bilar) (bilar + "na")
|
|
} ;
|
|
"en" => ifTok Subst bil bilar (sLik bil) (sRike bil) ; -- ben-ben
|
|
_ => ifTok Subst bil bilar (
|
|
case Predef.dp 3 bil of {
|
|
"are" => sKikare (init bil) ;
|
|
_ => decl5Noun bil
|
|
}
|
|
)
|
|
(decl5Noun bil) --- rest case with lots of garbage
|
|
} ;
|
|
|
|
--- this is a very rough heuristic as regards "ar/er"
|
|
|
|
regNoun : Str -> Gender -> Subst = \bil,g -> case g of {
|
|
Utr => case last bil of {
|
|
"a" => decl1Noun bil ;
|
|
_ => decl2Noun bil
|
|
} ;
|
|
Neutr => case last bil of {
|
|
"e" => sRike bil ;
|
|
_ => decl5Noun bil
|
|
}
|
|
} ;
|
|
|
|
|
|
decl1Noun : Str -> Subst = \apa -> sApa (init apa) ;
|
|
|
|
decl2Noun : Str -> Subst = \bil ->
|
|
case last bil of {
|
|
"e" => sPojke (init bil) ;
|
|
"o" | "u" | "y" => mkNoun bil (bil + "n") (bil + "ar") (bil + "arna") ;
|
|
_ => mkNoun bil (bil + "en") (bil + "ar") (bil + "arna")
|
|
} ;
|
|
|
|
decl3Noun : Str -> Subst = \sak ->
|
|
case last sak of {
|
|
"e" => sVarelse (init sak) ;
|
|
"å" => sNivå sak ;
|
|
_ => mkNoun sak (sak + "en") (sak + "er") (sak + "erna")
|
|
} ;
|
|
|
|
decl5Noun : Str -> Subst = \lik ->
|
|
mkNoun lik (lik + "et") lik (lik + "en") ;
|
|
|
|
|
|
-- Adjectives
|
|
|
|
|
|
mkAdjPos : Str -> Str -> Str -> Str -> AdjFormPos -> Str ;
|
|
mkAdjPos liten litet lilla sma a = case a of {
|
|
Strong gn => case gn of {
|
|
ASg Utr => liten ;
|
|
ASg Neutr => litet ;
|
|
APl => sma
|
|
} ;
|
|
Weak sn => case sn of {
|
|
AxSg NoMasc => lilla ;
|
|
AxSg Masc => init lilla + "e" ;
|
|
AxPl => sma
|
|
}
|
|
} ;
|
|
|
|
-- The worst-case macro for the full declension (including comparison forms)
|
|
-- is not so much worse.
|
|
|
|
mkAdjective : Str -> Str -> Str -> Str ->
|
|
Str -> Str -> Str -> Adj ;
|
|
mkAdjective liten litet lilla sma mindre minst minsta = {s = table {
|
|
AF (Posit p) c => mkCase c (mkAdjPos liten litet lilla sma p) ;
|
|
AF Compar c => mkCase c mindre ;
|
|
AF (Super SupStrong) c => mkCase c minst ;
|
|
AF (Super SupWeak) c => mkCase c minsta
|
|
}
|
|
} ;
|
|
|
|
-- It is handy to extract the positive part of a declension only, if
|
|
-- the other comparicon forms aren't needed or don't make sense.
|
|
|
|
extractPositive : Adj -> {s : AdjFormPos => Case => Str} ;
|
|
extractPositive adj = {s = \\a,c => adj.s ! (AF (Posit a) c)} ;
|
|
|
|
-- The notion of 'moderately irregular adjective' covers almost all adjectives.
|
|
|
|
adjIrreg : (_,_,_,_ : Str) -> Adj ;
|
|
adjIrreg god gott battre bast =
|
|
mkAdjective god gott (god + "a") (god + "a") battre bast (bast + "a") ;
|
|
|
|
-- Often it is possible to derive the $Pos Sg Neutr$ form even if the
|
|
-- comparison forms are irregular.
|
|
|
|
adjIrreg3 : (_,_,_: Str) -> Adj ;
|
|
adjIrreg3 ung yngre yngst = adjIrreg ung (ung + "t") yngre yngst ;
|
|
|
|
-- Some adjectives must be given $Pos Sg Utr$ $Pos Sg Neutr$, and $Pos Pl$,
|
|
-- e.g. those ending with unstressed "en".
|
|
|
|
adjAlmostReg : (_,_,_: Str) -> Adj ;
|
|
adjAlmostReg ljummen ljummet ljumma =
|
|
mkAdjective ljummen ljummet ljumma ljumma
|
|
(ljumma + "re") (ljumma + "st") (ljumma + "ste") ;
|
|
|
|
adjReg : Str -> Adj = \fin -> adjAlmostReg fin (fin + "t") (fin + "a") ;
|
|
|
|
adj2Reg : Str -> Str -> Adj = \vid,vitt -> adjAlmostReg vid vitt (vid + "a") ;
|
|
|
|
|
|
-- Verbs
|
|
|
|
mkVerb : (supa,super,sup,söp,supit,supen : Str) -> Verb =
|
|
\finna,finner,finn,fann,funnit,funnen ->
|
|
let funn = ptPretForms funnen in
|
|
{s = table {
|
|
VF (Pres Act) => finner ;
|
|
VF (Pres Pass) => mkVoice Pass finn ;
|
|
VF (Pret v) => mkVoice v fann ;
|
|
VF (Imper v) => mkVoice v finn ;
|
|
VI (Inf v) => mkVoice v finna ;
|
|
VI (Supin v) => mkVoice v funnit ;
|
|
VI (PtPret a c) => funn ! a ! c
|
|
} ;
|
|
s1 = []
|
|
} ;
|
|
|
|
vFinna : (_,_,_ : Str) -> Verb = \finn, fann, funn ->
|
|
mkVerb (finn + "a") (finn + "er") finn fann (funn + "it") (funn + "en") ;
|
|
|
|
-- Now this is more general and subsumes $vFinna$.
|
|
|
|
vSälja : (_,_,_ : Str) -> Verb = \sälja, sålde, sålt ->
|
|
let
|
|
a = last sälja ;
|
|
sälj = case a of {
|
|
"a" => init sälja ;
|
|
_ => sälja
|
|
} ;
|
|
er = case a of {
|
|
"a" => "er" ;
|
|
_ => "r"
|
|
} ;
|
|
såld = case Predef.dp 2 sålt of {
|
|
"it" => Predef.tk 2 sålt + "en" ;
|
|
"tt" => Predef.tk 2 sålt + "dd" ;
|
|
_ => init sålt + "d"
|
|
}
|
|
in
|
|
mkVerb sälja (sälj + er) sälj sålde sålt såld ;
|
|
|
|
regVerb : (_,_ : Str) -> Verb = \tala,talade ->
|
|
let
|
|
ade = Predef.dp 3 talade ;
|
|
de = Predef.dp 2 ade ;
|
|
tal = Predef.tk 1 tala ;
|
|
forms = case ade of {
|
|
"ade" => vTala tal ;
|
|
"dde" => case last tala of {
|
|
"a" => vTyda (init tal) ;
|
|
_ => mkVerb tala (tala + "r") tala (tala + "dde") (tala + "tt") (tala + "dd")
|
|
} ;
|
|
"tte" => vByta (init tal) ;
|
|
"nde" => vVända (init tal) ;
|
|
"rde" => vHyra tal ;
|
|
_ => case de of {
|
|
"te" => vLeka tal ;
|
|
_ => vGräva tal
|
|
}
|
|
}
|
|
in forms ** {s1 = []} ;
|
|
|
|
ptPretForms : Str -> AdjFormPos => Case => Str = \funnen -> \\a,c =>
|
|
let
|
|
funn = Predef.tk 2 funnen ;
|
|
en = Predef.dp 2 funnen ;
|
|
funne = init funnen ;
|
|
n = last funnen ;
|
|
m = case last funn of {
|
|
"n" => [] ;
|
|
_ => "n"
|
|
} ;
|
|
funna = case en of {
|
|
"en" => case a of {
|
|
(Strong (ASg Utr)) => funn + "en" ;
|
|
(Strong (ASg Neutr)) => funn + "et" ;
|
|
(Weak (AxSg Masc)) => funn + m + "e" ;
|
|
_ => funn + m + "a"
|
|
} ;
|
|
"dd" => case a of {
|
|
(Strong (ASg Utr)) => funn + "dd" ;
|
|
(Strong (ASg Neutr)) => funn + "tt" ;
|
|
(Weak (AxSg Masc)) => funn + "dde" ;
|
|
_ => funn + "dda"
|
|
} ;
|
|
"ad" => case a of {
|
|
(Strong (ASg Utr)) => funn + "ad" ;
|
|
(Strong (ASg Neutr)) => funn + "at" ;
|
|
_ => funn + "ade"
|
|
} ;
|
|
_ => case n of {
|
|
"d" => case a of {
|
|
(Strong (ASg Utr)) => funne + "d" ;
|
|
(Strong (ASg Neutr)) => funne + "t" ;
|
|
(Weak (AxSg Masc)) => funne + "de" ;
|
|
_ => funne + "da"
|
|
} ;
|
|
_ => case a of {
|
|
(Strong (ASg Utr)) => funne + "t" ;
|
|
(Strong (ASg Neutr)) => funne + "t" ;
|
|
(Weak (AxSg Masc)) => funne + "te" ;
|
|
_ => funne + "ta"
|
|
}
|
|
}
|
|
}
|
|
in
|
|
mkCase c funna ;
|
|
|
|
mkCase : Case -> Str -> Str = \c,f -> case c of {
|
|
Nom => f ;
|
|
Gen => f + case last f of {
|
|
"s" | "x" => [] ;
|
|
_ => "s"
|
|
}
|
|
} ;
|
|
|
|
mkVoice : Voice -> Str -> Str = \c,f -> case c of {
|
|
Act => f ;
|
|
Pass => f + case last f of {
|
|
"s" => "es" ;
|
|
_ => "s"
|
|
}
|
|
} ;
|
|
|
|
-- The most common is a verb without a particle.
|
|
|
|
mkVerbPart : (_,_,_,_,_,_,_ : Str) -> Verb = \supa,super,sup,söp,supit,supen,upp ->
|
|
{s = (mkVerb supa super sup söp supit supen).s} ** {s1 = upp} ;
|
|
|
|
-- Prepositions are just strings.
|
|
Preposition = Str ;
|
|
|
|
-- Relative pronouns have a special case system. $RPrep$ is the form used
|
|
-- after a preposition (e.g. "det hus i vilket jag bor").
|
|
param
|
|
RelCase = RNom | RAcc | RGen | RPrep ;
|
|
|
|
oper
|
|
relPronForms : RelCase => GenNum => Str = table {
|
|
RNom => \\_ => "som" ;
|
|
RAcc => \\_ => variants {"som" ; []} ;
|
|
RGen => \\_ => "vars" ;
|
|
RPrep => pronVilken
|
|
} ;
|
|
|
|
pronVilken = table {
|
|
ASg Utr => "vilken" ;
|
|
ASg Neutr => "vilket" ;
|
|
APl => "vilka"
|
|
} ;
|
|
|
|
pronSådan = table {
|
|
ASg Utr => "sådan" ;
|
|
ASg Neutr => "sådant" ;
|
|
APl => "sådana"
|
|
} ;
|
|
|
|
-- What follows are machine-generated inflection paradigms from functional
|
|
-- morphology. Hence they are low-level paradigms, without any
|
|
-- abstractions or generalizations: the Haskell code is better in these respects.
|
|
--
|
|
-- The variable names are selected in such a way that the paradigms can be read
|
|
-- as inflection tables of certain words.
|
|
|
|
oper sApa : Str -> Subst = \ap ->
|
|
{s = table {
|
|
SF Sg Indef Nom => ap + "a" ;
|
|
SF Sg Indef Gen => ap + "as" ;
|
|
SF Sg Def Nom => ap + "an" ;
|
|
SF Sg Def Gen => ap + "ans" ;
|
|
SF Pl Indef Nom => ap + "or" ;
|
|
SF Pl Indef Gen => ap + "ors" ;
|
|
SF Pl Def Nom => ap + "orna" ;
|
|
SF Pl Def Gen => ap + "ornas"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper sBil : Str -> Subst = \bil ->
|
|
{s = table {
|
|
SF Sg Indef Nom => bil ;
|
|
SF Sg Indef Gen => bil + "s" ;
|
|
SF Sg Def Nom => bil + "en" ;
|
|
SF Sg Def Gen => bil + "ens" ;
|
|
SF Pl Indef Nom => bil + "ar" ;
|
|
SF Pl Indef Gen => bil + "ars" ;
|
|
SF Pl Def Nom => bil + "arna" ;
|
|
SF Pl Def Gen => bil + "arnas"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper sPojke : Str -> Subst = \pojk ->
|
|
{s = table {
|
|
SF Sg Indef Nom => pojk + "e" ;
|
|
SF Sg Indef Gen => pojk + "es" ;
|
|
SF Sg Def Nom => pojk + "en" ;
|
|
SF Sg Def Gen => pojk + "ens" ;
|
|
SF Pl Indef Nom => pojk + "ar" ;
|
|
SF Pl Indef Gen => pojk + "ars" ;
|
|
SF Pl Def Nom => pojk + "arna" ;
|
|
SF Pl Def Gen => pojk + "arnas"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper sNyckel : Str -> Subst = \nyck ->
|
|
{s = table {
|
|
SF Sg Indef Nom => nyck + "el" ;
|
|
SF Sg Indef Gen => nyck + "els" ;
|
|
SF Sg Def Nom => nyck + "eln" ;
|
|
SF Sg Def Gen => nyck + "elns" ;
|
|
SF Pl Indef Nom => nyck + "lar" ;
|
|
SF Pl Indef Gen => nyck + "lars" ;
|
|
SF Pl Def Nom => nyck + "larna" ;
|
|
SF Pl Def Gen => nyck + "larnas"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper sKam : Str -> Subst = \kam ->
|
|
{s = table {
|
|
SF Sg Indef Nom => kam ;
|
|
SF Sg Indef Gen => kam + "s" ;
|
|
SF Sg Def Nom => kam + "men" ;
|
|
SF Sg Def Gen => kam + "mens" ;
|
|
SF Pl Indef Nom => kam + "mar" ;
|
|
SF Pl Indef Gen => kam + "mars" ;
|
|
SF Pl Def Nom => kam + "marna" ;
|
|
SF Pl Def Gen => kam + "marnas"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper sSak : Str -> Subst = \sak ->
|
|
{s = table {
|
|
SF Sg Indef Nom => sak ;
|
|
SF Sg Indef Gen => sak + "s" ;
|
|
SF Sg Def Nom => sak + "en" ;
|
|
SF Sg Def Gen => sak + "ens" ;
|
|
SF Pl Indef Nom => sak + "er" ;
|
|
SF Pl Indef Gen => sak + "ers" ;
|
|
SF Pl Def Nom => sak + "erna" ;
|
|
SF Pl Def Gen => sak + "ernas"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper sVarelse : Str -> Subst = \varelse ->
|
|
{s = table {
|
|
SF Sg Indef Nom => varelse ;
|
|
SF Sg Indef Gen => varelse + "s" ;
|
|
SF Sg Def Nom => varelse + "n" ;
|
|
SF Sg Def Gen => varelse + "ns" ;
|
|
SF Pl Indef Nom => varelse + "r" ;
|
|
SF Pl Indef Gen => varelse + "rs" ;
|
|
SF Pl Def Nom => varelse + "rna" ;
|
|
SF Pl Def Gen => varelse + "rnas"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper sNivå : Str -> Subst = \nivå ->
|
|
{s = table {
|
|
SF Sg Indef Nom => nivå ;
|
|
SF Sg Indef Gen => nivå + "s" ;
|
|
SF Sg Def Nom => nivå + "n" ;
|
|
SF Sg Def Gen => nivå + "ns" ;
|
|
SF Pl Indef Nom => nivå + "er" ;
|
|
SF Pl Indef Gen => nivå + "ers" ;
|
|
SF Pl Def Nom => nivå + "erna" ;
|
|
SF Pl Def Gen => nivå + "ernas"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper sParti : Str -> Subst = \parti ->
|
|
{s = table {
|
|
SF Sg Indef Nom => parti ;
|
|
SF Sg Indef Gen => parti + "s" ;
|
|
SF Sg Def Nom => parti + "et" ;
|
|
SF Sg Def Gen => parti + "ets" ;
|
|
SF Pl Indef Nom => parti + "er" ;
|
|
SF Pl Indef Gen => parti + "ers" ;
|
|
SF Pl Def Nom => parti + "erna" ;
|
|
SF Pl Def Gen => parti + "ernas"
|
|
} ;
|
|
h1 = Neutr
|
|
} ;
|
|
|
|
oper sMuseum : Str -> Subst = \muse ->
|
|
{s = table {
|
|
SF Sg Indef Nom => muse + "um" ;
|
|
SF Sg Indef Gen => muse + "ums" ;
|
|
SF Sg Def Nom => muse + "et" ;
|
|
SF Sg Def Gen => muse + "ets" ;
|
|
SF Pl Indef Nom => muse + "er" ;
|
|
SF Pl Indef Gen => muse + "ers" ;
|
|
SF Pl Def Nom => muse + "erna" ;
|
|
SF Pl Def Gen => muse + "ernas"
|
|
} ;
|
|
h1 = Neutr
|
|
} ;
|
|
|
|
oper sRike : Str -> Subst = \rike ->
|
|
{s = table {
|
|
SF Sg Indef Nom => rike ;
|
|
SF Sg Indef Gen => rike + "s" ;
|
|
SF Sg Def Nom => rike + "t" ;
|
|
SF Sg Def Gen => rike + "ts" ;
|
|
SF Pl Indef Nom => rike + "n" ;
|
|
SF Pl Indef Gen => rike + "ns" ;
|
|
SF Pl Def Nom => rike + "na" ;
|
|
SF Pl Def Gen => rike + "nas"
|
|
} ;
|
|
h1 = Neutr
|
|
} ;
|
|
|
|
oper sLik : Str -> Subst = \lik ->
|
|
{s = table {
|
|
SF Sg Indef Nom => lik ;
|
|
SF Sg Indef Gen => lik + "s" ;
|
|
SF Sg Def Nom => lik + "et" ;
|
|
SF Sg Def Gen => lik + "ets" ;
|
|
SF Pl Indef Nom => lik ;
|
|
SF Pl Indef Gen => lik + "s" ;
|
|
SF Pl Def Nom => lik + "en" ;
|
|
SF Pl Def Gen => lik + "ens"
|
|
} ;
|
|
h1 = Neutr
|
|
} ;
|
|
|
|
oper sRum : Str -> Subst = \rum ->
|
|
{s = table {
|
|
SF Sg Indef Nom => rum ;
|
|
SF Sg Indef Gen => rum + "s" ;
|
|
SF Sg Def Nom => rum + "met" ;
|
|
SF Sg Def Gen => rum + "mets" ;
|
|
SF Pl Indef Nom => rum ;
|
|
SF Pl Indef Gen => rum + "s" ;
|
|
SF Pl Def Nom => rum + "men" ;
|
|
SF Pl Def Gen => rum + "mens"
|
|
} ;
|
|
h1 = Neutr
|
|
} ;
|
|
|
|
oper sHus : Str -> Subst = \hus ->
|
|
{s = table {
|
|
SF Sg Indef Nom => hus ;
|
|
SF Sg Indef Gen => hus ;
|
|
SF Sg Def Nom => hus + "et" ;
|
|
SF Sg Def Gen => hus + "ets" ;
|
|
SF Pl Indef Nom => hus ;
|
|
SF Pl Indef Gen => hus ;
|
|
SF Pl Def Nom => hus + "en" ;
|
|
SF Pl Def Gen => hus + "ens"
|
|
} ;
|
|
h1 = Neutr
|
|
} ;
|
|
|
|
oper sPapper : Str -> Subst = \papp ->
|
|
{s = table {
|
|
SF Sg Indef Nom => papp + "er" ;
|
|
SF Sg Indef Gen => papp + "ers" ;
|
|
SF Sg Def Nom => papp + "ret" ;
|
|
SF Sg Def Gen => papp + "rets" ;
|
|
SF Pl Indef Nom => papp + "er" ;
|
|
SF Pl Indef Gen => papp + "ers" ;
|
|
SF Pl Def Nom => papp + "ren" ;
|
|
SF Pl Def Gen => papp + "rens"
|
|
} ;
|
|
h1 = Neutr
|
|
} ;
|
|
|
|
oper sNummer : Str -> Subst = \num ->
|
|
{s = table {
|
|
SF Sg Indef Nom => num + "mer" ;
|
|
SF Sg Indef Gen => num + "mers" ;
|
|
SF Sg Def Nom => num + "ret" ;
|
|
SF Sg Def Gen => num + "rets" ;
|
|
SF Pl Indef Nom => num + "mer" ;
|
|
SF Pl Indef Gen => num + "mers" ;
|
|
SF Pl Def Nom => num + "ren" ;
|
|
SF Pl Def Gen => num + "rens"
|
|
} ;
|
|
h1 = Neutr
|
|
} ;
|
|
|
|
oper sKikare : Str -> Subst = \kikar ->
|
|
{s = table {
|
|
SF Sg Indef Nom => kikar + "e" ;
|
|
SF Sg Indef Gen => kikar + "es" ;
|
|
SF Sg Def Nom => kikar + "en" ;
|
|
SF Sg Def Gen => kikar + "ens" ;
|
|
SF Pl Indef Nom => kikar + "e" ;
|
|
SF Pl Indef Gen => kikar + "es" ;
|
|
SF Pl Def Nom => kikar + "na" ;
|
|
SF Pl Def Gen => kikar + "nas"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper sProgram : Str -> Subst = \program ->
|
|
{s = table {
|
|
SF Sg Indef Nom => program ;
|
|
SF Sg Indef Gen => program + "s" ;
|
|
SF Sg Def Nom => program + "met" ;
|
|
SF Sg Def Gen => program + "mets" ;
|
|
SF Pl Indef Nom => program ;
|
|
SF Pl Indef Gen => program + "s" ;
|
|
SF Pl Def Nom => program + "men" ;
|
|
SF Pl Def Gen => program + "mens"
|
|
} ;
|
|
h1 = Neutr
|
|
} ;
|
|
|
|
oper aFin : Str -> Adj = \fin ->
|
|
{s = table {
|
|
AF (Posit (Strong (ASg Utr))) Nom => fin ;
|
|
AF (Posit (Strong (ASg Utr))) Gen => fin + "s" ;
|
|
AF (Posit (Strong (ASg Neutr))) Nom => fin + "t" ;
|
|
AF (Posit (Strong (ASg Neutr))) Gen => fin + "ts" ;
|
|
AF (Posit (Strong APl)) Nom => fin + "a" ;
|
|
AF (Posit (Strong APl)) Gen => fin + "as" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Nom => fin + "a" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Gen => fin + "as" ;
|
|
AF (Posit (Weak (AxSg Masc))) Nom => fin + "e" ;
|
|
AF (Posit (Weak (AxSg Masc))) Gen => fin + "es" ;
|
|
AF (Posit (Weak AxPl)) Nom => fin + "a" ;
|
|
AF (Posit (Weak AxPl)) Gen => fin + "as" ;
|
|
AF Compar Nom => fin + "are" ;
|
|
AF Compar Gen => fin + "ares" ;
|
|
AF (Super SupStrong) Nom => fin + "ast" ;
|
|
AF (Super SupStrong) Gen => fin + "asts" ;
|
|
AF (Super SupWeak) Nom => fin + "aste" ;
|
|
AF (Super SupWeak) Gen => fin + "astes"
|
|
}
|
|
} ;
|
|
|
|
oper aFager : Str -> Adj = \fag ->
|
|
{s = table {
|
|
AF (Posit (Strong (ASg Utr))) Nom => fag + "er" ;
|
|
AF (Posit (Strong (ASg Utr))) Gen => fag + "ers" ;
|
|
AF (Posit (Strong (ASg Neutr))) Nom => fag + "ert" ;
|
|
AF (Posit (Strong (ASg Neutr))) Gen => fag + "erts" ;
|
|
AF (Posit (Strong APl)) Nom => fag + "era" ;
|
|
AF (Posit (Strong APl)) Gen => fag + "eras" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Nom => fag + "era" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Gen => fag + "eras" ;
|
|
AF (Posit (Weak (AxSg Masc))) Nom => fag + "ere" ;
|
|
AF (Posit (Weak (AxSg Masc))) Gen => fag + "eres" ;
|
|
AF (Posit (Weak AxPl)) Nom => fag + "era" ;
|
|
AF (Posit (Weak AxPl)) Gen => fag + "eras" ;
|
|
AF Compar Nom => fag + "erare" ;
|
|
AF Compar Gen => fag + "erares" ;
|
|
AF (Super SupStrong) Nom => fag + "erast" ;
|
|
AF (Super SupStrong) Gen => fag + "erasts" ;
|
|
AF (Super SupWeak) Nom => fag + "eraste" ;
|
|
AF (Super SupWeak) Gen => fag + "erastes"
|
|
}
|
|
} ;
|
|
|
|
oper aGrund : Str -> Adj = \grun ->
|
|
{s = table {
|
|
AF (Posit (Strong (ASg Utr))) Nom => grun + "d" ;
|
|
AF (Posit (Strong (ASg Utr))) Gen => grun + "ds" ;
|
|
AF (Posit (Strong (ASg Neutr))) Nom => grun + "t" ;
|
|
AF (Posit (Strong (ASg Neutr))) Gen => grun + "ts" ;
|
|
AF (Posit (Strong APl)) Nom => grun + "da" ;
|
|
AF (Posit (Strong APl)) Gen => grun + "das" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Nom => grun + "da" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Gen => grun + "das" ;
|
|
AF (Posit (Weak (AxSg Masc))) Nom => grun + "de" ;
|
|
AF (Posit (Weak (AxSg Masc))) Gen => grun + "des" ;
|
|
AF (Posit (Weak AxPl)) Nom => grun + "da" ;
|
|
AF (Posit (Weak AxPl)) Gen => grun + "das" ;
|
|
AF Compar Nom => grun + "dare" ;
|
|
AF Compar Gen => grun + "dares" ;
|
|
AF (Super SupStrong) Nom => grun + "dast" ;
|
|
AF (Super SupStrong) Gen => grun + "dasts" ;
|
|
AF (Super SupWeak) Nom => grun + "daste" ;
|
|
AF (Super SupWeak) Gen => grun + "dastes"
|
|
}
|
|
} ;
|
|
|
|
oper aVid : Str -> Adj = \vi ->
|
|
{s = table {
|
|
AF (Posit (Strong (ASg Utr))) Nom => vi + "d" ;
|
|
AF (Posit (Strong (ASg Utr))) Gen => vi + "ds" ;
|
|
AF (Posit (Strong (ASg Neutr))) Nom => vi + "tt" ;
|
|
AF (Posit (Strong (ASg Neutr))) Gen => vi + "tts" ;
|
|
AF (Posit (Strong APl)) Nom => vi + "da" ;
|
|
AF (Posit (Strong APl)) Gen => vi + "das" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Nom => vi + "da" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Gen => vi + "das" ;
|
|
AF (Posit (Weak (AxSg Masc))) Nom => vi + "de" ;
|
|
AF (Posit (Weak (AxSg Masc))) Gen => vi + "des" ;
|
|
AF (Posit (Weak AxPl)) Nom => vi + "da" ;
|
|
AF (Posit (Weak AxPl)) Gen => vi + "das" ;
|
|
AF Compar Nom => vi + "dare" ;
|
|
AF Compar Gen => vi + "dares" ;
|
|
AF (Super SupStrong) Nom => vi + "dast" ;
|
|
AF (Super SupStrong) Gen => vi + "dasts" ;
|
|
AF (Super SupWeak) Nom => vi + "daste" ;
|
|
AF (Super SupWeak) Gen => vi + "dastes"
|
|
}
|
|
} ;
|
|
|
|
oper aVaken : Str -> Adj = \vak ->
|
|
{s = table {
|
|
AF (Posit (Strong (ASg Utr))) Nom => vak + "en" ;
|
|
AF (Posit (Strong (ASg Utr))) Gen => vak + "ens" ;
|
|
AF (Posit (Strong (ASg Neutr))) Nom => vak + "et" ;
|
|
AF (Posit (Strong (ASg Neutr))) Gen => vak + "ets" ;
|
|
AF (Posit (Strong APl)) Nom => vak + "na" ;
|
|
AF (Posit (Strong APl)) Gen => vak + "nas" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Nom => vak + "na" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Gen => vak + "nas" ;
|
|
AF (Posit (Weak (AxSg Masc))) Nom => vak + "ne" ;
|
|
AF (Posit (Weak (AxSg Masc))) Gen => vak + "nes" ;
|
|
AF (Posit (Weak AxPl)) Nom => vak + "na" ;
|
|
AF (Posit (Weak AxPl)) Gen => vak + "nas" ;
|
|
AF Compar Nom => vak + "nare" ;
|
|
AF Compar Gen => vak + "nares" ;
|
|
AF (Super SupStrong) Nom => vak + "nast" ;
|
|
AF (Super SupStrong) Gen => vak + "nasts" ;
|
|
AF (Super SupWeak) Nom => vak + "naste" ;
|
|
AF (Super SupWeak) Gen => vak + "nastes"
|
|
}
|
|
} ;
|
|
|
|
oper aKorkad : Str -> Adj = \korka ->
|
|
{s = table {
|
|
AF (Posit (Strong (ASg Utr))) Nom => korka + "d" ;
|
|
AF (Posit (Strong (ASg Utr))) Gen => korka + "ds" ;
|
|
AF (Posit (Strong (ASg Neutr))) Nom => korka + "t" ;
|
|
AF (Posit (Strong (ASg Neutr))) Gen => korka + "ts" ;
|
|
AF (Posit (Strong APl)) Nom => korka + "de" ;
|
|
AF (Posit (Strong APl)) Gen => korka + "des" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Nom => korka + "de" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Gen => korka + "des" ;
|
|
AF (Posit (Weak (AxSg Masc))) Nom => korka + "de" ;
|
|
AF (Posit (Weak (AxSg Masc))) Gen => korka + "des" ;
|
|
AF (Posit (Weak AxPl)) Nom => korka + "de" ;
|
|
AF (Posit (Weak AxPl)) Gen => korka + "des" ;
|
|
AF Compar Nom => variants {} ;
|
|
AF Compar Gen => variants {} ;
|
|
AF (Super SupStrong) Nom => variants {} ;
|
|
AF (Super SupStrong) Gen => variants {} ;
|
|
AF (Super SupWeak) Nom => variants {} ;
|
|
AF (Super SupWeak) Gen => variants {}
|
|
}
|
|
} ;
|
|
|
|
oper aAbstrakt : Str -> Adj = \abstrakt ->
|
|
{s = table {
|
|
AF (Posit (Strong (ASg Utr))) Nom => abstrakt ;
|
|
AF (Posit (Strong (ASg Utr))) Gen => abstrakt + "s" ;
|
|
AF (Posit (Strong (ASg Neutr))) Nom => abstrakt ;
|
|
AF (Posit (Strong (ASg Neutr))) Gen => abstrakt + "s" ;
|
|
AF (Posit (Strong APl)) Nom => abstrakt + "a" ;
|
|
AF (Posit (Strong APl)) Gen => abstrakt + "as" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Nom => abstrakt + "a" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Gen => abstrakt + "as" ;
|
|
AF (Posit (Weak (AxSg Masc))) Nom => abstrakt + "e" ;
|
|
AF (Posit (Weak (AxSg Masc))) Gen => abstrakt + "es" ;
|
|
AF (Posit (Weak AxPl)) Nom => abstrakt + "a" ;
|
|
AF (Posit (Weak AxPl)) Gen => abstrakt + "as" ;
|
|
AF Compar Nom => abstrakt + "are" ;
|
|
AF Compar Gen => abstrakt + "ares" ;
|
|
AF (Super SupStrong) Nom => abstrakt + "ast" ;
|
|
AF (Super SupStrong) Gen => abstrakt + "asts" ;
|
|
AF (Super SupWeak) Nom => abstrakt + "aste" ;
|
|
AF (Super SupWeak) Gen => abstrakt + "astes"
|
|
}
|
|
} ;
|
|
|
|
oper vTala : Str -> Verbum = \tal ->
|
|
{s = table {
|
|
VF (Pres Act) => tal + "ar" ;
|
|
VF (Pres Pass) => tal + "as" ;
|
|
VF (Pret Act) => tal + "ade" ;
|
|
VF (Pret Pass) => tal + "ades" ;
|
|
VF (Imper Act) => tal + "a" ;
|
|
VF (Imper Pass) => tal + "as" ;
|
|
VI (Inf Act) => tal + "a" ;
|
|
VI (Inf Pass) => tal + "as" ;
|
|
VI (Supin Act) => tal + "at" ;
|
|
VI (Supin Pass) => tal + "ats" ;
|
|
VI (PtPret (Strong (ASg Utr)) Nom) => tal + "ad" ;
|
|
VI (PtPret (Strong (ASg Utr)) Gen) => tal + "ads" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Nom) => tal + "at" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Gen) => tal + "ats" ;
|
|
VI (PtPret (Strong APl) Nom) => tal + "ade" ;
|
|
VI (PtPret (Strong APl) Gen) => tal + "ades" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Nom) => tal + "ade" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Gen) => tal + "ades" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Nom) => tal + "ade" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Gen) => tal + "ades" ;
|
|
VI (PtPret (Weak AxPl) Nom) => tal + "ade" ;
|
|
VI (PtPret (Weak AxPl) Gen) => tal + "ades"
|
|
}
|
|
} ;
|
|
|
|
oper vLeka : Str -> Verbum = \lek ->
|
|
{s = table {
|
|
VF (Pres Act) => lek + "er" ;
|
|
VF (Pres Pass) => mkVoice Pass lek ;
|
|
VF (Pret Act) => lek + "te" ;
|
|
VF (Pret Pass) => lek + "tes" ;
|
|
VF (Imper v) => mkVoice v lek ;
|
|
VI (Inf Act) => lek + "a" ;
|
|
VI (Inf Pass) => lek + "as" ;
|
|
VI (Supin Act) => lek + "t" ;
|
|
VI (Supin Pass) => lek + "ts" ;
|
|
VI (PtPret (Strong (ASg Utr)) Nom) => lek + "t" ;
|
|
VI (PtPret (Strong (ASg Utr)) Gen) => lek + "ts" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Nom) => lek + "t" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Gen) => lek + "ts" ;
|
|
VI (PtPret (Strong APl) Nom) => lek + "ta" ;
|
|
VI (PtPret (Strong APl) Gen) => lek + "tas" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Nom) => lek + "ta" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Gen) => lek + "tas" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Nom) => lek + "te" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Gen) => lek + "tes" ;
|
|
VI (PtPret (Weak AxPl) Nom) => lek + "ta" ;
|
|
VI (PtPret (Weak AxPl) Gen) => lek + "tas"
|
|
}
|
|
} ;
|
|
|
|
oper vGräva : Str -> Verbum = \gräv ->
|
|
{s = table {
|
|
VF (Pres Act) => gräv + "er" ;
|
|
VF (Pres Pass) => mkVoice Pass gräv ;
|
|
VF (Pret Act) => gräv + "de" ;
|
|
VF (Pret Pass) => gräv + "des" ;
|
|
VF (Imper v) => mkVoice v gräv ;
|
|
VI (Inf Act) => gräv + "a" ;
|
|
VI (Inf Pass) => gräv + "as" ;
|
|
VI (Supin Act) => gräv + "t" ;
|
|
VI (Supin Pass) => gräv + "ts" ;
|
|
VI (PtPret (Strong (ASg Utr)) Nom) => gräv + "d" ;
|
|
VI (PtPret (Strong (ASg Utr)) Gen) => gräv + "ds" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Nom) => gräv + "t" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Gen) => gräv + "ts" ;
|
|
VI (PtPret (Strong APl) Nom) => gräv + "da" ;
|
|
VI (PtPret (Strong APl) Gen) => gräv + "das" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Nom) => gräv + "da" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Gen) => gräv + "das" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Nom) => gräv + "de" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Gen) => gräv + "des" ;
|
|
VI (PtPret (Weak AxPl) Nom) => gräv + "da" ;
|
|
VI (PtPret (Weak AxPl) Gen) => gräv + "das"
|
|
}
|
|
} ;
|
|
|
|
oper vTyda : Str -> Verbum = \ty ->
|
|
{s = table {
|
|
VF (Pres Act) => ty + "der" ;
|
|
VF (Pres Pass) => variants {ty + "ds" ; ty + "des"} ;
|
|
VF (Pret Act) => ty + "dde" ;
|
|
VF (Pret Pass) => ty + "ddes" ;
|
|
VF (Imper Act) => ty + "d" ;
|
|
VF (Imper Pass) => ty + "ds" ;
|
|
VI (Inf Act) => ty + "da" ;
|
|
VI (Inf Pass) => ty + "das" ;
|
|
VI (Supin Act) => ty + "tt" ;
|
|
VI (Supin Pass) => ty + "tts" ;
|
|
VI (PtPret (Strong (ASg Utr)) Nom) => ty + "dd" ;
|
|
VI (PtPret (Strong (ASg Utr)) Gen) => ty + "dds" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Nom) => ty + "tt" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Gen) => ty + "tts" ;
|
|
VI (PtPret (Strong APl) Nom) => ty + "dda" ;
|
|
VI (PtPret (Strong APl) Gen) => ty + "ddas" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Nom) => ty + "dda" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Gen) => ty + "ddas" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Nom) => ty + "dde" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Gen) => ty + "ddes" ;
|
|
VI (PtPret (Weak AxPl) Nom) => ty + "dda" ;
|
|
VI (PtPret (Weak AxPl) Gen) => ty + "ddas"
|
|
}
|
|
} ;
|
|
|
|
oper vVända : Str -> Verbum = \vän ->
|
|
{s = table {
|
|
VF (Pres Act) => vän + "der" ;
|
|
VF (Pres Pass) => variants {vän + "ds" ; vän + "des"} ;
|
|
VF (Pret Act) => vän + "de" ;
|
|
VF (Pret Pass) => vän + "des" ;
|
|
VF (Imper Act) => vän + "d" ;
|
|
VF (Imper Pass) => vän + "ds" ;
|
|
VI (Inf Act) => vän + "da" ;
|
|
VI (Inf Pass) => vän + "das" ;
|
|
VI (Supin Act) => vän + "t" ;
|
|
VI (Supin Pass) => vän + "ts" ;
|
|
VI (PtPret (Strong (ASg Utr)) Nom) => vän + "d" ;
|
|
VI (PtPret (Strong (ASg Utr)) Gen) => vän + "ds" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Nom) => vän + "t" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Gen) => vän + "ts" ;
|
|
VI (PtPret (Strong APl) Nom) => vän + "da" ;
|
|
VI (PtPret (Strong APl) Gen) => vän + "das" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Nom) => vän + "da" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Gen) => vän + "das" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Nom) => vän + "de" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Gen) => vän + "des" ;
|
|
VI (PtPret (Weak AxPl) Nom) => vän + "da" ;
|
|
VI (PtPret (Weak AxPl) Gen) => vän + "das"
|
|
}
|
|
} ;
|
|
|
|
oper vByta : Str -> Verbum = \by ->
|
|
{s = table {
|
|
VF (Pres Act) => by + "ter" ;
|
|
VF (Pres Pass) => variants {by + "ts" ; by + "tes"} ;
|
|
VF (Pret Act) => by + "tte" ;
|
|
VF (Pret Pass) => by + "ttes" ;
|
|
VF (Imper Act) => by + "t" ;
|
|
VF (Imper Pass) => by + "ts" ;
|
|
VI (Inf Act) => by + "ta" ;
|
|
VI (Inf Pass) => by + "tas" ;
|
|
VI (Supin Act) => by + "tt" ;
|
|
VI (Supin Pass) => by + "tts" ;
|
|
VI (PtPret (Strong (ASg Utr)) Nom) => by + "tt" ;
|
|
VI (PtPret (Strong (ASg Utr)) Gen) => by + "tts" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Nom) => by + "tt" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Gen) => by + "tts" ;
|
|
VI (PtPret (Strong APl) Nom) => by + "tta" ;
|
|
VI (PtPret (Strong APl) Gen) => by + "ttas" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Nom) => by + "tta" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Gen) => by + "ttas" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Nom) => by + "tte" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Gen) => by + "ttes" ;
|
|
VI (PtPret (Weak AxPl) Nom) => by + "tta" ;
|
|
VI (PtPret (Weak AxPl) Gen) => by + "ttas"
|
|
}
|
|
} ;
|
|
|
|
oper vHyra : Str -> Verbum = \hyr ->
|
|
{s = table {
|
|
VF (Pres Act) => hyr ;
|
|
VF (Pres Pass) => variants {hyr + "s" ; hyr + "es"} ;
|
|
VF (Pret Act) => hyr + "de" ;
|
|
VF (Pret Pass) => hyr + "des" ;
|
|
VF (Imper Act) => hyr ;
|
|
VF (Imper Pass) => hyr + "s" ;
|
|
VI (Inf Act) => hyr + "a" ;
|
|
VI (Inf Pass) => hyr + "as" ;
|
|
VI (Supin Act) => hyr + "t" ;
|
|
VI (Supin Pass) => hyr + "ts" ;
|
|
VI (PtPret (Strong (ASg Utr)) Nom) => hyr + "d" ;
|
|
VI (PtPret (Strong (ASg Utr)) Gen) => hyr + "ds" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Nom) => hyr + "t" ;
|
|
VI (PtPret (Strong (ASg Neutr)) Gen) => hyr + "ts" ;
|
|
VI (PtPret (Strong APl) Nom) => hyr + "da" ;
|
|
VI (PtPret (Strong APl) Gen) => hyr + "das" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Nom) => hyr + "da" ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Gen) => hyr + "das" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Nom) => hyr + "de" ;
|
|
VI (PtPret (Weak (AxSg Masc)) Gen) => hyr + "des" ;
|
|
VI (PtPret (Weak AxPl) Nom) => hyr + "da" ;
|
|
VI (PtPret (Weak AxPl) Gen) => hyr + "das"
|
|
}
|
|
} ;
|
|
|
|
-- machine-generated exceptional inflection tables from rules.Swe.gf
|
|
|
|
oper mor_1 : Subst =
|
|
{s = table {
|
|
SF Sg Indef Nom => variants {"mor" ; "moder"} ;
|
|
SF Sg Indef Gen => variants {"mors" ; "moders"} ;
|
|
SF Sg Def Nom => "modern" ;
|
|
SF Sg Def Gen => "moderns" ;
|
|
SF Pl Indef Nom => "mödrar" ;
|
|
SF Pl Indef Gen => "mödrars" ;
|
|
SF Pl Def Nom => "mödrarna" ;
|
|
SF Pl Def Gen => "mödrarnas"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper farbror_8 : Subst =
|
|
{s = table {
|
|
SF Sg Indef Nom => variants {"farbror" ; "farbroder"} ;
|
|
SF Sg Indef Gen => variants {"farbrors" ; "farbroders"} ;
|
|
SF Sg Def Nom => "farbrodern" ;
|
|
SF Sg Def Gen => "farbroderns" ;
|
|
SF Pl Indef Nom => "farbröder" ;
|
|
SF Pl Indef Gen => "farbröders" ;
|
|
SF Pl Def Nom => "farbröderna" ;
|
|
SF Pl Def Gen => "farbrödernas"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper gammal_16 : Adj =
|
|
{s = table {
|
|
AF (Posit (Strong (ASg Utr))) Nom => "gammal" ;
|
|
AF (Posit (Strong (ASg Utr))) Gen => "gammals" ;
|
|
AF (Posit (Strong (ASg Neutr))) Nom => "gammalt" ;
|
|
AF (Posit (Strong (ASg Neutr))) Gen => "gammalts" ;
|
|
AF (Posit (Strong APl)) Nom => "gamla" ;
|
|
AF (Posit (Strong APl)) Gen => "gamlas" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Nom => "gamla" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Gen => "gamlas" ;
|
|
AF (Posit (Weak (AxSg Masc))) Nom => "gamle" ;
|
|
AF (Posit (Weak (AxSg Masc))) Gen => "gamles" ;
|
|
AF (Posit (Weak AxPl)) Nom => "gamla" ;
|
|
AF (Posit (Weak AxPl)) Gen => "gamlas" ;
|
|
AF Compar Nom => "äldre" ;
|
|
AF Compar Gen => "äldres" ;
|
|
AF (Super SupStrong) Nom => "äldst" ;
|
|
AF (Super SupStrong) Gen => "äldsts" ;
|
|
AF (Super SupWeak) Nom => "äldsta" ;
|
|
AF (Super SupWeak) Gen => "äldstas"
|
|
}
|
|
} ;
|
|
|
|
|
|
oper stor_25 : Adj =
|
|
{s = table {
|
|
AF (Posit (Strong (ASg Utr))) Nom => "stor" ;
|
|
AF (Posit (Strong (ASg Utr))) Gen => "stors" ;
|
|
AF (Posit (Strong (ASg Neutr))) Nom => "stort" ;
|
|
AF (Posit (Strong (ASg Neutr))) Gen => "storts" ;
|
|
AF (Posit (Strong APl)) Nom => "stora" ;
|
|
AF (Posit (Strong APl)) Gen => "storas" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Nom => "stora" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Gen => "storas" ;
|
|
AF (Posit (Weak (AxSg Masc))) Nom => "store" ;
|
|
AF (Posit (Weak (AxSg Masc))) Gen => "stores" ;
|
|
AF (Posit (Weak AxPl)) Nom => "stora" ;
|
|
AF (Posit (Weak AxPl)) Gen => "storas" ;
|
|
AF Compar Nom => "större" ;
|
|
AF Compar Gen => "störres" ;
|
|
AF (Super SupStrong) Nom => "störst" ;
|
|
AF (Super SupStrong) Gen => "störsts" ;
|
|
AF (Super SupWeak) Nom => "största" ;
|
|
AF (Super SupWeak) Gen => "störstas"
|
|
}
|
|
} ;
|
|
|
|
oper ung_29 : Adj =
|
|
{s = table {
|
|
AF (Posit (Strong (ASg Utr))) Nom => "ung" ;
|
|
AF (Posit (Strong (ASg Utr))) Gen => "ungs" ;
|
|
AF (Posit (Strong (ASg Neutr))) Nom => "ungt" ;
|
|
AF (Posit (Strong (ASg Neutr))) Gen => "ungts" ;
|
|
AF (Posit (Strong APl)) Nom => "unga" ;
|
|
AF (Posit (Strong APl)) Gen => "ungas" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Nom => "unga" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Gen => "ungas" ;
|
|
AF (Posit (Weak (AxSg Masc))) Nom => "unge" ;
|
|
AF (Posit (Weak (AxSg Masc))) Gen => "unges" ;
|
|
AF (Posit (Weak AxPl)) Nom => "unga" ;
|
|
AF (Posit (Weak AxPl)) Gen => "ungas" ;
|
|
AF Compar Nom => "yngre" ;
|
|
AF Compar Gen => "yngres" ;
|
|
AF (Super SupStrong) Nom => "yngst" ;
|
|
AF (Super SupStrong) Gen => "yngsts" ;
|
|
AF (Super SupWeak) Nom => "yngsta" ;
|
|
AF (Super SupWeak) Gen => "yngstas"
|
|
}
|
|
} ;
|
|
|
|
|
|
oper jag_32 : ProPN =
|
|
{s = table {
|
|
PNom => "jag" ;
|
|
PAcc => "mig" ;
|
|
PGen (ASg Utr) => "min" ;
|
|
PGen (ASg Neutr) => "mitt" ;
|
|
PGen APl => "mina"
|
|
} ;
|
|
h1 = Utr ;
|
|
h2 = Sg ;
|
|
h3 = P1
|
|
} ;
|
|
|
|
oper du_33 : ProPN =
|
|
{s = table {
|
|
PNom => "du" ;
|
|
PAcc => "dig" ;
|
|
PGen (ASg Utr) => "din" ;
|
|
PGen (ASg Neutr) => "ditt" ;
|
|
PGen APl => "dina"
|
|
} ;
|
|
h1 = Utr ;
|
|
h2 = Sg ;
|
|
h3 = P2
|
|
} ;
|
|
|
|
oper han_34 : ProPN =
|
|
{s = table {
|
|
PNom => "han" ;
|
|
PAcc => "honom" ;
|
|
PGen (ASg Utr) => "hans" ;
|
|
PGen (ASg Neutr) => "hans" ;
|
|
PGen APl => "hans"
|
|
} ;
|
|
h1 = Utr ;
|
|
h2 = Sg ;
|
|
h3 = P3
|
|
} ;
|
|
|
|
oper hon_35 : ProPN =
|
|
{s = table {
|
|
PNom => "hon" ;
|
|
PAcc => "henne" ;
|
|
PGen (ASg Utr) => "hennes" ;
|
|
PGen (ASg Neutr) => "hennes" ;
|
|
PGen APl => "hennes"
|
|
} ;
|
|
h1 = Utr ;
|
|
h2 = Sg ;
|
|
h3 = P3
|
|
} ;
|
|
|
|
oper vi_36 : ProPN =
|
|
{s = table {
|
|
PNom => "vi" ;
|
|
PAcc => "oss" ;
|
|
PGen (ASg Utr) => "vår" ;
|
|
PGen (ASg Neutr) => "vårt" ;
|
|
PGen APl => "våra"
|
|
} ;
|
|
h1 = Utr ;
|
|
h2 = Pl ;
|
|
h3 = P1
|
|
} ;
|
|
|
|
oper ni_37 : ProPN =
|
|
{s = table {
|
|
PNom => "ni" ;
|
|
PAcc => "er" ;
|
|
PGen (ASg Utr) => "er" ;
|
|
PGen (ASg Neutr) => "ert" ;
|
|
PGen APl => "era"
|
|
} ;
|
|
h1 = Utr ;
|
|
h2 = Pl ;
|
|
h3 = P2
|
|
} ;
|
|
|
|
oper de_38 : ProPN =
|
|
{s = table {
|
|
PNom => "de" ;
|
|
PAcc => "dem" ;
|
|
PGen (ASg Utr) => "deras" ;
|
|
PGen (ASg Neutr) => "deras" ;
|
|
PGen APl => "deras"
|
|
} ;
|
|
h1 = Utr ;
|
|
h2 = Pl ;
|
|
h3 = P3
|
|
} ;
|
|
|
|
oper den_39 : ProPN =
|
|
{s = table {
|
|
PNom => "den" ;
|
|
PAcc => "den" ;
|
|
PGen (ASg Utr) => "dess" ;
|
|
PGen (ASg Neutr) => "dess" ;
|
|
PGen APl => "dess"
|
|
} ;
|
|
h1 = Utr ;
|
|
h2 = Sg ;
|
|
h3 = P3
|
|
} ;
|
|
|
|
oper det_40 : ProPN =
|
|
{s = table {
|
|
PNom => "det" ;
|
|
PAcc => "det" ;
|
|
PGen (ASg Utr) => "dess" ;
|
|
PGen (ASg Neutr) => "dess" ;
|
|
PGen APl => "dess"
|
|
} ;
|
|
h1 = Neutr ;
|
|
h2 = Sg ;
|
|
h3 = P3
|
|
} ;
|
|
|
|
oper man_1144 : Subst =
|
|
{s = table {
|
|
SF Sg Indef Nom => "man" ;
|
|
SF Sg Indef Gen => "mans" ;
|
|
SF Sg Def Nom => "mannen" ;
|
|
SF Sg Def Gen => "mannens" ;
|
|
SF Pl Indef Nom => "män" ;
|
|
SF Pl Indef Gen => "mäns" ;
|
|
SF Pl Def Nom => "männen" ;
|
|
SF Pl Def Gen => "männens"
|
|
} ;
|
|
h1 = Utr
|
|
} ;
|
|
|
|
oper liten_1146 : Adj =
|
|
{s = table {
|
|
AF (Posit (Strong (ASg Utr))) Nom => "liten" ;
|
|
AF (Posit (Strong (ASg Utr))) Gen => "litens" ;
|
|
AF (Posit (Strong (ASg Neutr))) Nom => "litet" ;
|
|
AF (Posit (Strong (ASg Neutr))) Gen => "litets" ;
|
|
AF (Posit (Strong APl)) Nom => "små" ;
|
|
AF (Posit (Strong APl)) Gen => "smås" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Nom => "lilla" ;
|
|
AF (Posit (Weak (AxSg NoMasc))) Gen => "lillas" ;
|
|
AF (Posit (Weak (AxSg Masc))) Nom => "lille" ;
|
|
AF (Posit (Weak (AxSg Masc))) Gen => "lilles" ;
|
|
AF (Posit (Weak AxPl)) Nom => "små" ;
|
|
AF (Posit (Weak AxPl)) Gen => "smås" ;
|
|
AF Compar Nom => "mindre" ;
|
|
AF Compar Gen => "mindres" ;
|
|
AF (Super SupStrong) Nom => "minst" ;
|
|
AF (Super SupStrong) Gen => "minsts" ;
|
|
AF (Super SupWeak) Nom => "minsta" ;
|
|
AF (Super SupWeak) Gen => "minstas"
|
|
}
|
|
} ;
|
|
|
|
oper hava_1198 : Verbum =
|
|
{s = table {
|
|
VF (Pres Act) => "har" ;
|
|
VF (Pres Pass) => "has" ;
|
|
VF (Pret Act) => "hade" ;
|
|
VF (Pret Pass) => "hades" ;
|
|
VF (Imper Act) => "ha" ;
|
|
VF (Imper Pass) => "has" ;
|
|
VI (Inf Act) => "ha" ;
|
|
VI (Inf Pass) => "has" ;
|
|
VI (Supin Act) => "haft" ;
|
|
VI (Supin Pass) => "hafts" ;
|
|
VI (PtPret (Strong (ASg Utr)) Nom) => variants {} ;
|
|
VI (PtPret (Strong (ASg Utr)) Gen) => variants {} ;
|
|
VI (PtPret (Strong (ASg Neutr)) Nom) => variants {} ;
|
|
VI (PtPret (Strong (ASg Neutr)) Gen) => variants {} ;
|
|
VI (PtPret (Strong APl) Nom) => variants {} ;
|
|
VI (PtPret (Strong APl) Gen) => variants {} ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Nom) => variants {} ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Gen) => variants {} ;
|
|
VI (PtPret (Weak (AxSg Masc)) Nom) => variants {} ;
|
|
VI (PtPret (Weak (AxSg Masc)) Gen) => variants {} ;
|
|
VI (PtPret (Weak AxPl) Nom) => variants {} ;
|
|
VI (PtPret (Weak AxPl) Gen) => variants {}
|
|
}
|
|
} ;
|
|
|
|
oper vara_1200 : Verbum =
|
|
{s = table {
|
|
VF (Pres Act) => "är" ;
|
|
VF (Pres Pass) => variants {} ;
|
|
VF (Pret Act) => "var" ;
|
|
VF (Pret Pass) => variants {} ;
|
|
VF (Imper _) => "var" ;
|
|
VI (Inf Act) => "vara" ;
|
|
VI (Inf Pass) => variants {} ;
|
|
VI (Supin Act) => "varit" ;
|
|
VI (Supin Pass) => variants {} ;
|
|
VI (PtPret (Strong (ASg Utr)) Nom) => variants {} ;
|
|
VI (PtPret (Strong (ASg Utr)) Gen) => variants {} ;
|
|
VI (PtPret (Strong (ASg Neutr)) Nom) => variants {} ;
|
|
VI (PtPret (Strong (ASg Neutr)) Gen) => variants {} ;
|
|
VI (PtPret (Strong APl) Nom) => variants {} ;
|
|
VI (PtPret (Strong APl) Gen) => variants {} ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Nom) => variants {} ;
|
|
VI (PtPret (Weak (AxSg NoMasc)) Gen) => variants {} ;
|
|
VI (PtPret (Weak (AxSg Masc)) Nom) => variants {} ;
|
|
VI (PtPret (Weak (AxSg Masc)) Gen) => variants {} ;
|
|
VI (PtPret (Weak AxPl) Nom) => variants {} ;
|
|
VI (PtPret (Weak AxPl) Gen) => variants {}
|
|
}
|
|
} ;
|
|
|
|
-- for Numerals
|
|
|
|
param DForm = ental | ton | tiotal ;
|
|
|
|
oper
|
|
LinDigit = {s : DForm => Str} ;
|
|
|
|
mkTal : Str -> Str -> Str -> LinDigit = \två, tolv, tjugo ->
|
|
{s = table {ental => två ; ton => tolv ; tiotal => tjugo}} ;
|
|
|
|
regTal : Str -> LinDigit = \fem ->
|
|
mkTal fem (fem + "ton") (fem + "tio") ;
|
|
|
|
numPl : Str -> {s : Gender => Str ; n : Number} = \n ->
|
|
{s = \\_ => n ; n = Pl} ;
|
|
|
|
}
|