1
0
forked from GitHub/gf-core

fixed Swedish paradigms

This commit is contained in:
aarne
2005-01-19 16:45:37 +00:00
parent 4e004d4097
commit 7f7fe109d9

View File

@@ -1,4 +1,4 @@
--# -path=.:../abstract:../../prelude --# -path=.:../scandinavian:../abstract:../../prelude
--1 Swedish Lexical Paradigms --1 Swedish Lexical Paradigms
-- --
@@ -18,7 +18,7 @@
-- --
-- The following modules are presupposed: -- The following modules are presupposed:
resource ParadigmsSwe = open (Predef=Predef), Prelude, SyntaxSwe, ResourceSwe in { resource ParadigmsSwe = open (Predef=Predef), Prelude, MorphoSwe, SyntaxSwe, ResourceSwe in {
--2 Parameters --2 Parameters
-- --
@@ -104,21 +104,21 @@ oper
-- Non-comparison one-place adjectives need four forms in the worst case: -- Non-comparison one-place adjectives need four forms in the worst case:
-- strong singular, weak singular, plural. -- strong singular, weak singular, plural.
mkA1 : (_,_,_,_ : Str) -> A1 ; -- liten, litet, lilla, små mkA : (_,_,_,_ : Str) -> A ; -- liten, litet, lilla, små
-- Special cases needing one form each are: regular adjectives, -- Special cases needing one form each are: regular adjectives,
-- adjectives with unstressed "e" in the last syllable, those -- adjectives with unstressed "e" in the last syllable, those
-- ending with "n" as a further special case, and invariable -- ending with "n" as a further special case, and invariable
-- adjectives. -- adjectives.
adjReg : Str -> A1 ; -- billig (billigt, billiga, billiga) adjReg : Str -> A ; -- billig (billigt, billiga, billiga)
adjNykter : Str -> A1 ; -- nykter (nyktert, nyktra, nyktra) adjNykter : Str -> A ; -- nykter (nyktert, nyktra, nyktra)
adjGalen : Str -> A1 ; -- galen (galet, galna, galna) adjGalen : Str -> A ; -- galen (galet, galna, galna)
adjInvar : Str -> A1 ; -- bra adjInvar : Str -> A ; -- bra
-- Two-place adjectives need a preposition and a case as extra arguments. -- Two-place adjectives need a preposition and a case as extra arguments.
mkA2 : A1 -> Str -> A2 ; -- delbar, med mkA2 : A -> Str -> A2 ; -- delbar, med
mkA2Reg : Str -> Str -> A2 ; -- mkA2Reg : Str -> Str -> A2 ; --
-- Comparison adjectives may need the three four forms for the positive case, plus -- Comparison adjectives may need the three four forms for the positive case, plus
@@ -239,7 +239,7 @@ oper
} }
} in } in
{s = \\n,d,c => mkCase c (nom ! SF n d Nom) ; {s = \\n,d,c => mkCase c (nom ! SF n d Nom) ;
g = g ; x = x ; lock_N = <> g = gensex g x ; lock_N = <>
} ; } ;
-- auxiliaries -- auxiliaries
@@ -286,7 +286,7 @@ oper
funTill = \f -> mkN2 f "till" ; funTill = \f -> mkN2 f "till" ;
mkPN = \karolus, karoli, g, x -> mkPN = \karolus, karoli, g, x ->
{s = table {Gen => karoli ; _ => karolus} ; g = g ; x = x ; lock_PN = <>} ; {s = table {Gen => karoli ; _ => karolus} ; g = gensex g x ; lock_PN = <>} ;
pnReg = \horst -> pnReg = \horst ->
mkPN horst (ifTok Tok (Predef.dp 1 horst) "s" horst (horst + "s")) ; mkPN horst (ifTok Tok (Predef.dp 1 horst) "s" horst (horst + "s")) ;
pnS = \bk -> pnS = \bk ->
@@ -296,7 +296,7 @@ oper
mkNP = \a,b,g -> UsePN (mkPN a b g nonmasculine) ; -- gender irrelevant in NP mkNP = \a,b,g -> UsePN (mkPN a b g nonmasculine) ; -- gender irrelevant in NP
npReg = \s,g -> UsePN (pnReg s g nonmasculine) ; npReg = \s,g -> UsePN (pnReg s g nonmasculine) ;
mkA1 = \liten, litet, lilla, små -> mkA = \liten, litet, lilla, små ->
{s = table { {s = table {
Strong (ASg Utr) => \\c => mkCase c liten ; Strong (ASg Utr) => \\c => mkCase c liten ;
Strong (ASg Neutr) => \\c => mkCase c litet ; Strong (ASg Neutr) => \\c => mkCase c litet ;
@@ -304,23 +304,23 @@ oper
Weak (AxSg Masc) => \\c => mkCase c (Predef.tk 1 lilla + "e") ; Weak (AxSg Masc) => \\c => mkCase c (Predef.tk 1 lilla + "e") ;
Weak _ => \\c => mkCase c lilla Weak _ => \\c => mkCase c lilla
} ; } ;
lock_A1 = <> lock_A = <>
} ; } ;
adjReg = \billig -> mkA1 billig (billig + "t") (billig + "a") (billig + "a") ; adjReg = \billig -> mkA billig (billig + "t") (billig + "a") (billig + "a") ;
adjNykter = \nykter -> adjNykter = \nykter ->
let {nyktr = Predef.tk 2 nykter + Predef.dp 1 nykter} in let {nyktr = Predef.tk 2 nykter + Predef.dp 1 nykter} in
mkA1 nykter (nykter + "t") (nyktr + "a") (nyktr + "a") ; mkA nykter (nykter + "t") (nyktr + "a") (nyktr + "a") ;
adjGalen = \galen -> adjGalen = \galen ->
let {gal = Predef.tk 2 galen} in let {gal = Predef.tk 2 galen} in
mkA1 galen (gal + "et") (gal + "na") (gal + "na") ; mkA galen (gal + "et") (gal + "na") (gal + "na") ;
adjInvar = \bra -> {s = \\_,_ => bra ; lock_A1 = <>} ; adjInvar = \bra -> {s = \\_,_ => bra ; lock_A = <>} ;
mkA2 = \a,p -> a ** {s2 = p ; lock_A2 = <>} ; mkA2 = \a,p -> a ** {s2 = p ; lock_A2 = <>} ;
mkA2Reg = \a -> mkA2 (adjReg a) ; mkA2Reg = \a -> mkA2 (adjReg a) ;
mkADeg = \liten, litet, lilla, sma, mindre, minst, minsta -> mkADeg = \liten, litet, lilla, sma, mindre, minst, minsta ->
let {lit = (mkA1 liten litet lilla sma).s} in let {lit = (mkA liten litet lilla sma).s} in
{s = table { {s = table {
AF (Posit f) c => lit ! f ! c ; AF (Posit f) c => lit ! f ! c ;
AF Compar c => mkCase c mindre ; AF Compar c => mkCase c mindre ;
@@ -333,7 +333,7 @@ oper
aReg = \fin -> mkADeg fin aReg = \fin -> mkADeg fin
(fin + "t") (fin + "a") (fin + "a") (fin + "are") (fin + "ast") (fin + "aste") ; (fin + "t") (fin + "a") (fin + "a") (fin + "are") (fin + "ast") (fin + "aste") ;
apReg = \s -> UseA1 (adjReg s) ; apReg = \s -> UseA (adjReg s) ;
mkAdv a = advPost a ** {lock_Adv = <>} ; mkAdv a = advPost a ** {lock_Adv = <>} ;
mkAdvPre a = advPre a ** {lock_Adv = <>} ; mkAdvPre a = advPre a ** {lock_Adv = <>} ;
@@ -362,4 +362,9 @@ oper
vvAtt v = v ** {isAux = False ; lock_VV = <>} ; vvAtt v = v ** {isAux = False ; lock_VV = <>} ;
vvBoth v = v ** {isAux = variants {False ; True} ; lock_VV = <>} ; vvBoth v = v ** {isAux = variants {False ; True} ; lock_VV = <>} ;
gensex : Gender -> Sex -> NounGender = \g,x -> case g of {
Utr => NUtr x ;
_ => NNeutr
} ;
} ; } ;