forked from GitHub/gf-core
refactored Scandinavian NP agreement features
This commit is contained in:
@@ -2,20 +2,12 @@ instance DiffDan of DiffScand = open CommonScand, Prelude in {
|
||||
|
||||
-- Parameters.
|
||||
|
||||
param
|
||||
Gender = Utr | Neutr ;
|
||||
|
||||
oper
|
||||
NGender = Gender ;
|
||||
ngen2gen g = g ;
|
||||
utrum = Utr ;
|
||||
neutrum = Neutr ;
|
||||
|
||||
gennum : Gender -> Number -> GenNum = \g,n ->
|
||||
case <<g,n> : Gender * Number> of {
|
||||
<Utr, Sg> => SgUtr ;
|
||||
<Neutr,Sg> => SgNeutr ;
|
||||
_ => Plg
|
||||
} ;
|
||||
|
||||
detDef : Species = Indef ;
|
||||
|
||||
Verb : Type = {
|
||||
@@ -37,7 +29,7 @@ instance DiffDan of DiffScand = open CommonScand, Prelude in {
|
||||
|
||||
subjIf = "hvis" ;
|
||||
|
||||
artIndef : Gender => Str = table {
|
||||
artIndef : NGender => Str = table {
|
||||
Utr => "en" ;
|
||||
Neutr => "et"
|
||||
} ;
|
||||
@@ -62,26 +54,26 @@ instance DiffDan of DiffScand = open CommonScand, Prelude in {
|
||||
Neg => "ikke"
|
||||
} ;
|
||||
|
||||
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 => "hvis" ;
|
||||
RPrep _ => gennumForms "hvilken" "hvilket" "hvilke" ! gn
|
||||
RPrep _ => gennumForms "hvilken" "hvilket" "hvilke" ! gennum g n
|
||||
} ;
|
||||
|
||||
pronSuch = gennumForms "sådan" "sådant" "sådanne" ;
|
||||
|
||||
reflPron : Agr -> Str = \a -> case a of {
|
||||
{gn = Plg ; p = P1} => "oss" ;
|
||||
{gn = Plg ; p = P2} => "jer" ;
|
||||
{p = P1} => "mig" ;
|
||||
{p = P2} => "dig" ;
|
||||
{p = P3} => "sig"
|
||||
reflPron : Agr -> Str = \a -> case <a.n,a.p> of {
|
||||
<Pl,P1> => "os" ;
|
||||
<Pl,P2> => "jer" ;
|
||||
<Sg,P1> => "mig" ;
|
||||
<Sg,P2> => "dig" ;
|
||||
<_, P3> => "sig"
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ concrete IdiomDan of Idiom = CatDan **
|
||||
ProgrVP vp =
|
||||
insertObj (\\a => ["ved å"] ++ infVP vp a) (predV verbBe) ;
|
||||
|
||||
ImpPl1 vp = {s = ["lad os"] ++ infVP vp {gn = Plg ; p = P1}} ;
|
||||
ImpPl1 vp = {s = ["lad os"] ++ infVP vp {g = Utr ; n = Pl ; p = P1}} ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ oper
|
||||
VF (VPres Pass) => spises ;
|
||||
VF (VPret v) => mkVoice v spiste ; --# notpresent
|
||||
VI (VSupin v) => mkVoice v spist ; --# notpresent
|
||||
VI (VPtPret (Strong (SgUtr | SgNeutr)) c) => mkCase c spist ;
|
||||
VI (VPtPret (Strong (GSg _)) c) => mkCase c spist ;
|
||||
VI (VPtPret _ c) => mkCase c (spist + "e") ;
|
||||
VF (VImper v) => mkVoice v spis
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ concrete StructuralDan of Structural = CatDan **
|
||||
above_Prep = ss "ovenfor" ;
|
||||
after_Prep = ss "efter" ;
|
||||
by8agent_Prep = ss "af" ;
|
||||
all_Predet = {s = gennumForms "all" "alt" "alle"} ;
|
||||
all_Predet = {s = detForms "all" "alt" "alle" ; p = [] ; a = PNoAg} ;
|
||||
almost_AdA, almost_AdN = ss "næsten" ;
|
||||
although_Subj = ss ["selv om"] ;
|
||||
always_AdV = ss "altid" ;
|
||||
@@ -24,15 +24,15 @@ concrete StructuralDan of Structural = CatDan **
|
||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||
during_Prep = ss "under" ;
|
||||
either7or_DConj = sd2 "enten" "eller" ** {n = Sg} ;
|
||||
everybody_NP = regNP "alle" "alles" Plg ;
|
||||
everybody_NP = regNP "alle" "alles" Utr Pl ;
|
||||
every_Det = {s = \\_,_ => "hver" ; sp = \\_,_ => "enhver" ; n = Sg ; det = DDef Indef} ;
|
||||
everything_NP = regNP "alt" "alts" SgNeutr ;
|
||||
everything_NP = regNP "alt" "alts" Neutr Sg ;
|
||||
everywhere_Adv = ss "overalt" ;
|
||||
few_Det = {s,sp = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ;
|
||||
--- first_Ord = {s = "første" ; isDet = True} ;
|
||||
for_Prep = ss "for" ;
|
||||
from_Prep = ss "fra" ;
|
||||
he_Pron = MorphoDan.mkNP "han" "ham" "hans" "hans" "hans" SgUtr P3 ;
|
||||
he_Pron = MorphoDan.mkNP "han" "ham" "hans" "hans" "hans" Utr Sg P3 ;
|
||||
here_Adv = ss "her" ;
|
||||
here7to_Adv = ss "hit" ;
|
||||
here7from_Adv = ss "herfra" ;
|
||||
@@ -41,32 +41,32 @@ concrete StructuralDan of Structural = CatDan **
|
||||
if_Subj = ss "hvis" ;
|
||||
in8front_Prep = ss "foran" ;
|
||||
i_Pron =
|
||||
MorphoDan.mkNP "jeg" "mig" "min" "mit" "mine" SgUtr P1 ;
|
||||
MorphoDan.mkNP "jeg" "mig" "min" "mit" "mine" Utr Sg P1 ;
|
||||
in_Prep = ss "i" ;
|
||||
it_Pron = MorphoDan.regNP "det" "dets" SgNeutr ;
|
||||
it_Pron = MorphoDan.regNP "det" "dets" Neutr Sg ;
|
||||
less_CAdv = X.mkCAdv "mindre" conjThan ;
|
||||
many_Det = {s,sp = \\_,_ => "mange" ; n = Pl ; det = DDef Indef} ;
|
||||
more_CAdv = X.mkCAdv "mer" conjThan ;
|
||||
most_Predet = {s = gennumForms ["den meste"] ["det meste"] ["de fleste"]} ;
|
||||
most_Predet = {s = detForms ["den meste"] ["det meste"] ["de fleste"] ; p = [] ; a = PNoAg} ;
|
||||
much_Det = {s,sp = \\_,_ => "meget" ; n = Pl ; det = DDef Indef} ;
|
||||
must_VV =
|
||||
mkV "måtte" "må" "må" "måtte" "måttet" "mått" **
|
||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||
no_Utt = ss ["nej"] ;
|
||||
on_Prep = ss "på" ;
|
||||
only_Predet = {s = \\_ => "kun"} ;
|
||||
only_Predet = {s = \\_,_ => "kun" ; p = [] ; a = PNoAg} ;
|
||||
or_Conj = {s1 = [] ; s2 = "eller" ; n = Pl} ;
|
||||
otherwise_PConj = ss "anderledes" ;
|
||||
part_Prep = ss "af" ;
|
||||
please_Voc = ss "tak" ; ---
|
||||
possess_Prep = ss "af" ;
|
||||
quite_Adv = ss "temmelig" ;
|
||||
she_Pron = MorphoDan.mkNP "hun" "hende" "hendes" "hendes" "hendes" SgUtr P3 ;
|
||||
she_Pron = MorphoDan.mkNP "hun" "hende" "hendes" "hendes" "hendes" Utr Sg P3 ;
|
||||
so_AdA = ss "så" ;
|
||||
someSg_Det = {s,sp = \\_ => genderForms "nogen" "noget" ; n = Sg ; det = DIndef} ;
|
||||
somePl_Det = {s,sp = \\_,_ => "nogle" ; n = Pl ; det = DIndef} ;
|
||||
somebody_NP = regNP "nogen" "nogens" SgUtr ;
|
||||
something_NP = regNP "noget" "nogets" SgNeutr ;
|
||||
somebody_NP = regNP "nogen" "nogens" Utr Sg ;
|
||||
something_NP = regNP "noget" "nogets" Neutr Sg ;
|
||||
somewhere_Adv = ss ["et eller annet sted"] ; ---- ?
|
||||
that_Quant =
|
||||
{s,sp = table {
|
||||
@@ -79,7 +79,7 @@ concrete StructuralDan of Structural = CatDan **
|
||||
there7to_Adv = ss "dit" ;
|
||||
there7from_Adv = ss "derfra" ;
|
||||
therefore_PConj = ss "derfor" ;
|
||||
they_Pron = MorphoDan.mkNP "de" "dem" "deres" "deres" "deres" Plg P1 ;
|
||||
they_Pron = MorphoDan.mkNP "de" "dem" "deres" "deres" "deres" Utr Pl P1 ;
|
||||
this_Quant =
|
||||
{s,sp = table {
|
||||
Sg => \\_,_ => genderForms ["denne"] ["dette"] ;
|
||||
@@ -95,9 +95,9 @@ concrete StructuralDan of Structural = CatDan **
|
||||
want_VV =
|
||||
mkV "ville" "vil" "vil" "ville" "villet" "villed" **
|
||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||
we_Pron = MorphoDan.mkNP "vi" "os" "vores" "vores" "vores" Plg P1 ;
|
||||
whatSg_IP = {s = \\_ => "hvad" ; gn = SgUtr} ; ---- infl
|
||||
whatPl_IP = {s = \\_ => "hvilke" ; gn = Plg} ; ---- infl
|
||||
we_Pron = MorphoDan.mkNP "vi" "os" "vores" "vores" "vores" Utr Pl P1 ;
|
||||
whatSg_IP = {s = \\_ => "hvad" ; g = Utr ; n = Sg} ; ---- infl
|
||||
whatPl_IP = {s = \\_ => "hvilke" ; g = Utr ; n = Pl} ; ---- infl
|
||||
when_IAdv = ss "hvornår" ;
|
||||
when_Subj = ss "når" ;
|
||||
where_IAdv = ss "hver" ;
|
||||
@@ -108,22 +108,22 @@ concrete StructuralDan of Structural = CatDan **
|
||||
} ;
|
||||
det = DIndef
|
||||
} ;
|
||||
whoSg_IP = {s = vem.s ; gn = SgUtr} ;
|
||||
whoPl_IP = {s = \\_ => "hvilke" ; gn = Plg} ;
|
||||
whoSg_IP = {s = vem.s ; g = Utr ; n = Sg} ;
|
||||
whoPl_IP = {s = \\_ => "hvilke" ; g = Utr ; n = Pl} ;
|
||||
why_IAdv = ss "hvorfor" ;
|
||||
without_Prep = ss "uden" ;
|
||||
with_Prep = ss "med" ;
|
||||
yes_Utt = ss ["ja"] ;
|
||||
youSg_Pron =
|
||||
MorphoDan.mkNP "du" "dig" "din" "dit" "dine" SgUtr P2 ; ----
|
||||
youPl_Pron = MorphoDan.mkNP "i" "jer" "jeres" "jeres" "jeres" Plg P2 ;
|
||||
youPol_Pron = MorphoDan.mkNP "Dere" "Dere" "Deres" "Deres" "Deres" SgUtr P2 ; --- wrong in refl
|
||||
MorphoDan.mkNP "du" "dig" "din" "dit" "dine" Utr Sg P2 ; ----
|
||||
youPl_Pron = MorphoDan.mkNP "i" "jer" "jeres" "jeres" "jeres" Utr Pl P2 ;
|
||||
youPol_Pron = MorphoDan.mkNP "Dere" "Dere" "Deres" "Deres" "Deres" Utr Sg P2 ; --- wrong in refl
|
||||
have_V2 = dirV2 have_V ;
|
||||
|
||||
-- Auxiliaries that are used repeatedly.
|
||||
|
||||
oper
|
||||
vem = MorphoDan.mkNP "hvem" "hvem" "hvis" "hvis" "hvis" SgUtr P3 ;
|
||||
vem = MorphoDan.mkNP "hvem" "hvem" "hvis" "hvis" "hvis" Utr Sg P3 ;
|
||||
|
||||
lin language_title_Utt = ss "dansk" ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user