forked from GitHub/gf-core
fixed Swedish paradigms
This commit is contained in:
@@ -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
|
||||||
|
} ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
Reference in New Issue
Block a user