mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-20 00:22:51 -06:00
refactored Scandinavian NP agreement features
This commit is contained in:
@@ -2,31 +2,12 @@ instance DiffSwe of DiffScand = open CommonScand, Prelude in {
|
||||
|
||||
-- Parameters.
|
||||
|
||||
param
|
||||
Gender = Utr | Neutr ;
|
||||
|
||||
oper
|
||||
NGender = Gender ;
|
||||
ngen2gen g = g ;
|
||||
utrum = Utr ;
|
||||
neutrum = Neutr ;
|
||||
|
||||
gennumN : Gender -> Number -> GenNum = \g,n -> Plg ; -----
|
||||
gennum : Gender -> Number -> GenNum = \g,n ->
|
||||
{-
|
||||
--- debugging Compute 9/11/2007
|
||||
case n of {
|
||||
Sg => case g of {
|
||||
Utr => SgUtr ;
|
||||
Neutr => SgNeutr
|
||||
} ;
|
||||
_ => Plg
|
||||
} ;
|
||||
-}
|
||||
case <<g,n> : Gender * Number> of {
|
||||
<Utr,Sg> => SgUtr ;
|
||||
<Neutr,Sg> => SgNeutr ;
|
||||
_ => Plg
|
||||
} ;
|
||||
|
||||
detDef : Species = Def ;
|
||||
|
||||
Verb : Type = {
|
||||
@@ -48,7 +29,7 @@ instance DiffSwe of DiffScand = open CommonScand, Prelude in {
|
||||
|
||||
subjIf = "om" ;
|
||||
|
||||
artIndef : Gender => Str = table {
|
||||
artIndef : NGender => Str = table {
|
||||
Utr => "en" ;
|
||||
Neutr => "ett"
|
||||
} ;
|
||||
@@ -74,26 +55,26 @@ instance DiffSwe of DiffScand = open CommonScand, Prelude in {
|
||||
Neg => "inte"
|
||||
} ;
|
||||
|
||||
genderForms : (x1,x2 : Str) -> Gender => Str = \all,allt ->
|
||||
genderForms : (x1,x2 : Str) -> NGender => Str = \all,allt ->
|
||||
table {
|
||||
Utr => all ;
|
||||
Neutr => allt
|
||||
} ;
|
||||
|
||||
relPron : GenNum => RCase => Str = \\gn,c => case c of {
|
||||
relPron : Gender => Number => RCase => Str = \\g,n,c => case c of {
|
||||
RNom | RPrep False => "som" ;
|
||||
RGen => "vars" ;
|
||||
RPrep True => gennumForms "vilken" "vilket" "vilka" ! gn
|
||||
RPrep True => gennumForms "vilken" "vilket" "vilka" ! gennum g n
|
||||
} ;
|
||||
|
||||
pronSuch = gennumForms "sådan" "sådant" "sådana" ;
|
||||
|
||||
reflPron : Agr -> Str = \a -> case a of {
|
||||
{gn = Plg ; p = P1} => "oss" ;
|
||||
{gn = Plg ; p = P2} => "er" ;
|
||||
{p = P1} => "mig" ;
|
||||
{p = P2} => "dig" ;
|
||||
{p = P3} => "sig"
|
||||
reflPron : Agr -> Str = \a -> case <a.n,a.p> of {
|
||||
<Pl,P1> => "oss" ;
|
||||
<Pl,P2> => "er" ;
|
||||
<Sg,P1> => "mig" ;
|
||||
<Sg,P2> => "dig" ;
|
||||
<_, P3> => "sig"
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -33,11 +33,10 @@ concrete IdiomSwe of Idiom = CatSwe **
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
ProgrVP vp =
|
||||
insertObj (\\a => "att" ++ infVP vp a) (predV (partV hålla_V "på")) ;
|
||||
|
||||
ImpPl1 vp = {s = ["låt oss"] ++ infVP vp {gn = Plg ; p = P1}} ;
|
||||
ImpPl1 vp = {s = ["låt oss"] ++ infVP vp {g = Utr ; n = Pl ; p = P1}} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -path=.:../scandinavian:../common:../abstract
|
||||
|
||||
resource MakeStructuralSwe = open CatSwe, ParadigmsSwe,
|
||||
resource MakeStructuralSwe = open CatSwe,
|
||||
(P=ParadigmsSwe), MorphoSwe, Prelude in {
|
||||
|
||||
oper
|
||||
@@ -16,4 +16,18 @@ oper
|
||||
dDefIndef : DetSpecies = DDef Indef ;
|
||||
---- other DetSpecies
|
||||
|
||||
mkPredet = overload {
|
||||
mkPredet : Str -> Str -> Str -> Predet = \a,b,c ->
|
||||
lin Predet {
|
||||
s = detForms a b c ;
|
||||
p = [] ;
|
||||
a = PNoAg
|
||||
} ;
|
||||
mkPredet : Str -> Str -> Str -> Number -> Predet = \a,b,p,n ->
|
||||
lin Predet {
|
||||
s = table {Utr => \\_ => a ; _ => \\_ => b} ;
|
||||
p = p ;
|
||||
a = PAg n ;
|
||||
}
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -32,8 +32,8 @@ oper
|
||||
funfun = ptPretAll funnen
|
||||
in
|
||||
mkCase c (case a of {
|
||||
(Strong (SgUtr)) => funnen ;
|
||||
(Strong (SgNeutr)) => funfun.p1 ;
|
||||
(Strong (GSg Utr)) => funnen ;
|
||||
(Strong (GSg Neutr)) => funfun.p1 ;
|
||||
_ => funfun.p2
|
||||
}
|
||||
) ;
|
||||
|
||||
@@ -295,7 +295,7 @@ oper
|
||||
-- The definitions should not bother the user of the API. So they are
|
||||
-- hidden from the document.
|
||||
|
||||
Gender = ResSwe.Gender ;
|
||||
Gender = ResSwe.NGender ;
|
||||
Number = CommonScand.Number ;
|
||||
Case = CommonScand.Case ;
|
||||
utrum = Utr ;
|
||||
@@ -501,8 +501,8 @@ oper
|
||||
mk6V = \finna,finner,finn,fann,funnit,funnen ->
|
||||
let
|
||||
funn = ptPretForms funnen ;
|
||||
funnet = funn ! Strong SgNeutr ! Nom ;
|
||||
funna = funn ! Strong Plg ! Nom
|
||||
funnet = funn ! Strong (GSg Neutr) ! Nom ;
|
||||
funna = funn ! Strong GPl ! Nom
|
||||
in
|
||||
mkVerb finna finner finn fann funnit funnen funnet funna **
|
||||
{part = [] ; vtype=VAct ; lock_V = <>} ;
|
||||
|
||||
@@ -8,7 +8,7 @@ concrete StructuralSwe of Structural = CatSwe **
|
||||
above_Prep = ss "ovanför" ;
|
||||
after_Prep = ss "efter" ;
|
||||
by8agent_Prep = ss "av" ;
|
||||
all_Predet = {s = gennumForms "all" "allt" "alla"} ;
|
||||
all_Predet = {s = detForms "all" "allt" "alla" ; p = [] ; a = PNoAg} ;
|
||||
almost_AdA, almost_AdN = ss "nästan" ;
|
||||
although_Subj = ss "fast" ;
|
||||
always_AdV = ss "alltid" ;
|
||||
@@ -25,20 +25,20 @@ concrete StructuralSwe of Structural = CatSwe **
|
||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||
during_Prep = ss "under" ;
|
||||
either7or_DConj = sd2 "antingen" "eller" ** {n = Sg} ;
|
||||
everybody_NP = regNP "alla" "allas" Plg ;
|
||||
everybody_NP = regNP "alla" "allas" Utr Pl ;
|
||||
every_Det = {
|
||||
s = \\_,_ => "varje" ;
|
||||
sp = \\_,_ => "var och en" ; ----
|
||||
n = Sg ;
|
||||
det = DIndef
|
||||
} ;
|
||||
everything_NP = regNP "allting" "alltings" SgNeutr ;
|
||||
everything_NP = regNP "allting" "alltings" Neutr Sg ;
|
||||
everywhere_Adv = ss "överallt" ;
|
||||
few_Det = {s,sp = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ;
|
||||
--- first_Ord = {s = "första" ; isDet = True} ;
|
||||
for_Prep = ss "för" ;
|
||||
from_Prep = ss "från" ;
|
||||
he_Pron = MorphoSwe.mkNP "han" "honom" "hans" "hans" "hans" SgUtr P3 ;
|
||||
he_Pron = MorphoSwe.mkNP "han" "honom" "hans" "hans" "hans" Utr Sg P3 ;
|
||||
here_Adv = ss "här" ;
|
||||
here7to_Adv = ss "hit" ;
|
||||
here7from_Adv = ss "härifrån" ;
|
||||
@@ -46,13 +46,13 @@ concrete StructuralSwe of Structural = CatSwe **
|
||||
how8many_IDet = {s = \\_ => ["hur många"] ; n = Pl ; det = DDef Indef} ;
|
||||
if_Subj = ss "om" ;
|
||||
in8front_Prep = ss "framför" ;
|
||||
i_Pron = MorphoSwe.mkNP "jag" "mig" "min" "mitt" "mina" SgUtr P1 ;
|
||||
i_Pron = MorphoSwe.mkNP "jag" "mig" "min" "mitt" "mina" Utr Sg P1 ;
|
||||
in_Prep = ss "i" ;
|
||||
it_Pron = MorphoSwe.regNP "det" "dess" SgNeutr ;
|
||||
it_Pron = MorphoSwe.regNP "det" "dess" Neutr Sg ;
|
||||
less_CAdv = X.mkCAdv "mindre" "än" ;
|
||||
many_Det = {s,sp = \\_,_ => "många" ; n = Pl ; det = DDef Indef} ;
|
||||
more_CAdv = X.mkCAdv "mer" "än" ;
|
||||
most_Predet = {s = gennumForms ["den mesta"] ["det mesta"] ["de flesta"]} ;
|
||||
most_Predet = {s = detForms ["den mesta"] ["det mesta"] ["de flesta"] ; p = [] ; a = PNoAg} ;
|
||||
much_Det = {s,sp = \\_,_ => "mycket" ; n = Pl ; det = DDef Indef} ;
|
||||
must_VV =
|
||||
mkV "få" "måste" "få" "fick" "måst" "måst" **
|
||||
@@ -60,19 +60,19 @@ concrete StructuralSwe of Structural = CatSwe **
|
||||
no_Utt = ss ["nej"] ;
|
||||
on_Prep = ss "på" ;
|
||||
--- one_Quant = {s = \\_,_ => genderForms ["en"] ["ett"] ; n = Sg ; det = DIndef} ;
|
||||
only_Predet = {s = \\_ => "bara"} ;
|
||||
only_Predet = {s = \\_,_ => "bara" ; p = [] ; a = PNoAg} ;
|
||||
or_Conj = {s1 = [] ; s2 = "eller" ; n = Sg} ;
|
||||
otherwise_PConj = ss "annars" ;
|
||||
part_Prep = ss "av" ;
|
||||
please_Voc = ss "tack" ; ---
|
||||
possess_Prep = ss "av" ;
|
||||
quite_Adv = ss "ganska" ;
|
||||
she_Pron = MorphoSwe.mkNP "hon" "henne" "hennes" "hennes" "hennes" SgUtr P3 ;
|
||||
she_Pron = MorphoSwe.mkNP "hon" "henne" "hennes" "hennes" "hennes" Utr Sg P3 ;
|
||||
so_AdA = ss "så" ;
|
||||
someSg_Det = {s,sp = \\_ => genderForms "någon" "något" ; n = Sg ; det = DIndef} ;
|
||||
somePl_Det = {s,sp = \\_,_ => "några" ; n = Pl ; det = DIndef} ;
|
||||
somebody_NP = regNP "någon" "någons" SgUtr ;
|
||||
something_NP = regNP "något" "någots" SgNeutr ;
|
||||
somebody_NP = regNP "någon" "någons" Utr Sg ;
|
||||
something_NP = regNP "något" "någots" Neutr Sg ;
|
||||
somewhere_Adv = ss "någonstans" ;
|
||||
that_Quant =
|
||||
{s,sp = table {
|
||||
@@ -85,7 +85,7 @@ concrete StructuralSwe of Structural = CatSwe **
|
||||
there7to_Adv = ss "dit" ;
|
||||
there7from_Adv = ss "därifrån" ;
|
||||
therefore_PConj = ss "därför" ;
|
||||
they_Pron = MorphoSwe.mkNP "de" "dem" "deras" "deras" "deras" Plg P1 ;
|
||||
they_Pron = MorphoSwe.mkNP "de" "dem" "deras" "deras" "deras" Utr Pl P1 ;
|
||||
this_Quant =
|
||||
{s,sp = table {
|
||||
Sg => \\_,_ => genderForms ["den här"] ["det här"] ;
|
||||
@@ -101,11 +101,12 @@ concrete StructuralSwe of Structural = CatSwe **
|
||||
want_VV =
|
||||
mkV "vilja" "vill" "vilj" "ville" "velat" "velad" **
|
||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||
we_Pron = MorphoSwe.mkNP "vi" "oss" "vår" "vårt" "våra" Plg P1 ;
|
||||
whatSg_IP = {s = \\_ => "vad" ; gn = SgUtr} ; ---- infl
|
||||
whatPl_IP = {s = \\_ => "vad" ; gn = Plg} ; ---- infl
|
||||
we_Pron = MorphoSwe.mkNP "vi" "oss" "vår" "vårt" "våra" Utr Pl P1 ;
|
||||
whatSg_IP = {s = \\_ => "vad" ; g = Neutr ; n = Sg} ; ---- infl, g
|
||||
whatPl_IP = {s = \\_ => "vad" ; g = Neutr ; n = Pl} ; ---- infl, g
|
||||
when_IAdv = ss "när" ;
|
||||
when_Subj = ss "när" ;
|
||||
that_Subj = ss "att" ;
|
||||
where_IAdv = ss "var" ;
|
||||
which_IQuant = {
|
||||
s = table {
|
||||
@@ -114,23 +115,23 @@ concrete StructuralSwe of Structural = CatSwe **
|
||||
} ;
|
||||
det = DIndef
|
||||
} ;
|
||||
whoSg_IP = {s = vem.s ; gn = SgUtr} ;
|
||||
whoPl_IP = {s = \\_ => "vilka" ; gn = Plg} ;
|
||||
whoSg_IP = {s = vem.s ; g = Utr ; n = Sg} ;
|
||||
whoPl_IP = {s = \\_ => "vilka" ; g = Utr ; n = Pl} ;
|
||||
why_IAdv = ss "varför" ;
|
||||
without_Prep = ss "utan" ;
|
||||
with_Prep = ss "med" ;
|
||||
yes_Utt = ss ["ja"] ;
|
||||
youSg_Pron = MorphoSwe.mkNP "du" "dig" "din" "ditt" "dina" SgUtr P2 ;
|
||||
youPl_Pron = MorphoSwe.mkNP "ni" "er" "er" "ert" "era" Plg P2 ;
|
||||
youPol_Pron = MorphoSwe.mkNP "ni" "er" "er" "ert" "era" SgUtr P2 ; --- wrong in refl
|
||||
youSg_Pron = MorphoSwe.mkNP "du" "dig" "din" "ditt" "dina" Utr Sg P2 ;
|
||||
youPl_Pron = MorphoSwe.mkNP "ni" "er" "er" "ert" "era" Utr Pl P2 ;
|
||||
youPol_Pron = MorphoSwe.mkNP "ni" "er" "er" "ert" "era" Utr Sg P2 ; --- wrong in refl
|
||||
|
||||
-- Auxiliaries that are used repeatedly.
|
||||
|
||||
oper
|
||||
vem = MorphoSwe.mkNP "vem" "vem" "vems" "vems" "vems" SgUtr P3 ;
|
||||
vem = MorphoSwe.mkNP "vem" "vem" "vems" "vems" "vems" Utr Sg P3 ;
|
||||
|
||||
lin
|
||||
not_Predet = {s = \\_ => "inte"} ;
|
||||
not_Predet = {s = \\_,_ => "inte" ; p = [] ; a = PNoAg} ;
|
||||
no_Quant =
|
||||
{s,sp = table {
|
||||
Sg => \\_,_ => genderForms "ingen" "inget" ;
|
||||
@@ -140,8 +141,8 @@ lin
|
||||
} ;
|
||||
|
||||
if_then_Conj = {s1 = "om" ; s2 = "så" ; n = singular} ;
|
||||
nobody_NP = regNP "ingen" "ingens" SgUtr ;
|
||||
nothing_NP = regNP "inget" "ingets" SgNeutr ;
|
||||
nobody_NP = regNP "ingen" "ingens" Utr Sg ;
|
||||
nothing_NP = regNP "inget" "ingets" Neutr Sg ;
|
||||
|
||||
at_least_AdN = ss "minst" ;
|
||||
at_most_AdN = ss "högst" ;
|
||||
|
||||
Reference in New Issue
Block a user