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.
|
-- Parameters.
|
||||||
|
|
||||||
param
|
|
||||||
Gender = Utr | Neutr ;
|
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
NGender = Gender ;
|
||||||
|
ngen2gen g = g ;
|
||||||
utrum = Utr ;
|
utrum = Utr ;
|
||||||
neutrum = Neutr ;
|
neutrum = Neutr ;
|
||||||
|
|
||||||
gennum : Gender -> Number -> GenNum = \g,n ->
|
|
||||||
case <<g,n> : Gender * Number> of {
|
|
||||||
<Utr, Sg> => SgUtr ;
|
|
||||||
<Neutr,Sg> => SgNeutr ;
|
|
||||||
_ => Plg
|
|
||||||
} ;
|
|
||||||
|
|
||||||
detDef : Species = Indef ;
|
detDef : Species = Indef ;
|
||||||
|
|
||||||
Verb : Type = {
|
Verb : Type = {
|
||||||
@@ -37,7 +29,7 @@ instance DiffDan of DiffScand = open CommonScand, Prelude in {
|
|||||||
|
|
||||||
subjIf = "hvis" ;
|
subjIf = "hvis" ;
|
||||||
|
|
||||||
artIndef : Gender => Str = table {
|
artIndef : NGender => Str = table {
|
||||||
Utr => "en" ;
|
Utr => "en" ;
|
||||||
Neutr => "et"
|
Neutr => "et"
|
||||||
} ;
|
} ;
|
||||||
@@ -62,26 +54,26 @@ instance DiffDan of DiffScand = open CommonScand, Prelude in {
|
|||||||
Neg => "ikke"
|
Neg => "ikke"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
genderForms : (x1,x2 : Str) -> Gender => Str = \all,allt ->
|
genderForms : (x1,x2 : Str) -> NGender => Str = \all,allt ->
|
||||||
table {
|
table {
|
||||||
Utr => all ;
|
Utr => all ;
|
||||||
Neutr => allt
|
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" ;
|
RNom | RPrep False => "som" ;
|
||||||
RGen => "hvis" ;
|
RGen => "hvis" ;
|
||||||
RPrep _ => gennumForms "hvilken" "hvilket" "hvilke" ! gn
|
RPrep _ => gennumForms "hvilken" "hvilket" "hvilke" ! gennum g n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
pronSuch = gennumForms "sådan" "sådant" "sådanne" ;
|
pronSuch = gennumForms "sådan" "sådant" "sådanne" ;
|
||||||
|
|
||||||
reflPron : Agr -> Str = \a -> case a of {
|
reflPron : Agr -> Str = \a -> case <a.n,a.p> of {
|
||||||
{gn = Plg ; p = P1} => "oss" ;
|
<Pl,P1> => "os" ;
|
||||||
{gn = Plg ; p = P2} => "jer" ;
|
<Pl,P2> => "jer" ;
|
||||||
{p = P1} => "mig" ;
|
<Sg,P1> => "mig" ;
|
||||||
{p = P2} => "dig" ;
|
<Sg,P2> => "dig" ;
|
||||||
{p = P3} => "sig"
|
<_, P3> => "sig"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ concrete IdiomDan of Idiom = CatDan **
|
|||||||
ProgrVP vp =
|
ProgrVP vp =
|
||||||
insertObj (\\a => ["ved å"] ++ infVP vp a) (predV verbBe) ;
|
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 (VPres Pass) => spises ;
|
||||||
VF (VPret v) => mkVoice v spiste ; --# notpresent
|
VF (VPret v) => mkVoice v spiste ; --# notpresent
|
||||||
VI (VSupin v) => mkVoice v spist ; --# 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") ;
|
VI (VPtPret _ c) => mkCase c (spist + "e") ;
|
||||||
VF (VImper v) => mkVoice v spis
|
VF (VImper v) => mkVoice v spis
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ concrete StructuralDan of Structural = CatDan **
|
|||||||
above_Prep = ss "ovenfor" ;
|
above_Prep = ss "ovenfor" ;
|
||||||
after_Prep = ss "efter" ;
|
after_Prep = ss "efter" ;
|
||||||
by8agent_Prep = ss "af" ;
|
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" ;
|
almost_AdA, almost_AdN = ss "næsten" ;
|
||||||
although_Subj = ss ["selv om"] ;
|
although_Subj = ss ["selv om"] ;
|
||||||
always_AdV = ss "altid" ;
|
always_AdV = ss "altid" ;
|
||||||
@@ -24,15 +24,15 @@ concrete StructuralDan of Structural = CatDan **
|
|||||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||||
during_Prep = ss "under" ;
|
during_Prep = ss "under" ;
|
||||||
either7or_DConj = sd2 "enten" "eller" ** {n = Sg} ;
|
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} ;
|
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" ;
|
everywhere_Adv = ss "overalt" ;
|
||||||
few_Det = {s,sp = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ;
|
few_Det = {s,sp = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ;
|
||||||
--- first_Ord = {s = "første" ; isDet = True} ;
|
--- first_Ord = {s = "første" ; isDet = True} ;
|
||||||
for_Prep = ss "for" ;
|
for_Prep = ss "for" ;
|
||||||
from_Prep = ss "fra" ;
|
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" ;
|
here_Adv = ss "her" ;
|
||||||
here7to_Adv = ss "hit" ;
|
here7to_Adv = ss "hit" ;
|
||||||
here7from_Adv = ss "herfra" ;
|
here7from_Adv = ss "herfra" ;
|
||||||
@@ -41,32 +41,32 @@ concrete StructuralDan of Structural = CatDan **
|
|||||||
if_Subj = ss "hvis" ;
|
if_Subj = ss "hvis" ;
|
||||||
in8front_Prep = ss "foran" ;
|
in8front_Prep = ss "foran" ;
|
||||||
i_Pron =
|
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" ;
|
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 ;
|
less_CAdv = X.mkCAdv "mindre" conjThan ;
|
||||||
many_Det = {s,sp = \\_,_ => "mange" ; n = Pl ; det = DDef Indef} ;
|
many_Det = {s,sp = \\_,_ => "mange" ; n = Pl ; det = DDef Indef} ;
|
||||||
more_CAdv = X.mkCAdv "mer" conjThan ;
|
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} ;
|
much_Det = {s,sp = \\_,_ => "meget" ; n = Pl ; det = DDef Indef} ;
|
||||||
must_VV =
|
must_VV =
|
||||||
mkV "måtte" "må" "må" "måtte" "måttet" "mått" **
|
mkV "måtte" "må" "må" "måtte" "måttet" "mått" **
|
||||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||||
no_Utt = ss ["nej"] ;
|
no_Utt = ss ["nej"] ;
|
||||||
on_Prep = ss "på" ;
|
on_Prep = ss "på" ;
|
||||||
only_Predet = {s = \\_ => "kun"} ;
|
only_Predet = {s = \\_,_ => "kun" ; p = [] ; a = PNoAg} ;
|
||||||
or_Conj = {s1 = [] ; s2 = "eller" ; n = Pl} ;
|
or_Conj = {s1 = [] ; s2 = "eller" ; n = Pl} ;
|
||||||
otherwise_PConj = ss "anderledes" ;
|
otherwise_PConj = ss "anderledes" ;
|
||||||
part_Prep = ss "af" ;
|
part_Prep = ss "af" ;
|
||||||
please_Voc = ss "tak" ; ---
|
please_Voc = ss "tak" ; ---
|
||||||
possess_Prep = ss "af" ;
|
possess_Prep = ss "af" ;
|
||||||
quite_Adv = ss "temmelig" ;
|
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å" ;
|
so_AdA = ss "så" ;
|
||||||
someSg_Det = {s,sp = \\_ => genderForms "nogen" "noget" ; n = Sg ; det = DIndef} ;
|
someSg_Det = {s,sp = \\_ => genderForms "nogen" "noget" ; n = Sg ; det = DIndef} ;
|
||||||
somePl_Det = {s,sp = \\_,_ => "nogle" ; n = Pl ; det = DIndef} ;
|
somePl_Det = {s,sp = \\_,_ => "nogle" ; n = Pl ; det = DIndef} ;
|
||||||
somebody_NP = regNP "nogen" "nogens" SgUtr ;
|
somebody_NP = regNP "nogen" "nogens" Utr Sg ;
|
||||||
something_NP = regNP "noget" "nogets" SgNeutr ;
|
something_NP = regNP "noget" "nogets" Neutr Sg ;
|
||||||
somewhere_Adv = ss ["et eller annet sted"] ; ---- ?
|
somewhere_Adv = ss ["et eller annet sted"] ; ---- ?
|
||||||
that_Quant =
|
that_Quant =
|
||||||
{s,sp = table {
|
{s,sp = table {
|
||||||
@@ -79,7 +79,7 @@ concrete StructuralDan of Structural = CatDan **
|
|||||||
there7to_Adv = ss "dit" ;
|
there7to_Adv = ss "dit" ;
|
||||||
there7from_Adv = ss "derfra" ;
|
there7from_Adv = ss "derfra" ;
|
||||||
therefore_PConj = ss "derfor" ;
|
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 =
|
this_Quant =
|
||||||
{s,sp = table {
|
{s,sp = table {
|
||||||
Sg => \\_,_ => genderForms ["denne"] ["dette"] ;
|
Sg => \\_,_ => genderForms ["denne"] ["dette"] ;
|
||||||
@@ -95,9 +95,9 @@ concrete StructuralDan of Structural = CatDan **
|
|||||||
want_VV =
|
want_VV =
|
||||||
mkV "ville" "vil" "vil" "ville" "villet" "villed" **
|
mkV "ville" "vil" "vil" "ville" "villet" "villed" **
|
||||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||||
we_Pron = MorphoDan.mkNP "vi" "os" "vores" "vores" "vores" Plg P1 ;
|
we_Pron = MorphoDan.mkNP "vi" "os" "vores" "vores" "vores" Utr Pl P1 ;
|
||||||
whatSg_IP = {s = \\_ => "hvad" ; gn = SgUtr} ; ---- infl
|
whatSg_IP = {s = \\_ => "hvad" ; g = Utr ; n = Sg} ; ---- infl
|
||||||
whatPl_IP = {s = \\_ => "hvilke" ; gn = Plg} ; ---- infl
|
whatPl_IP = {s = \\_ => "hvilke" ; g = Utr ; n = Pl} ; ---- infl
|
||||||
when_IAdv = ss "hvornår" ;
|
when_IAdv = ss "hvornår" ;
|
||||||
when_Subj = ss "når" ;
|
when_Subj = ss "når" ;
|
||||||
where_IAdv = ss "hver" ;
|
where_IAdv = ss "hver" ;
|
||||||
@@ -108,22 +108,22 @@ concrete StructuralDan of Structural = CatDan **
|
|||||||
} ;
|
} ;
|
||||||
det = DIndef
|
det = DIndef
|
||||||
} ;
|
} ;
|
||||||
whoSg_IP = {s = vem.s ; gn = SgUtr} ;
|
whoSg_IP = {s = vem.s ; g = Utr ; n = Sg} ;
|
||||||
whoPl_IP = {s = \\_ => "hvilke" ; gn = Plg} ;
|
whoPl_IP = {s = \\_ => "hvilke" ; g = Utr ; n = Pl} ;
|
||||||
why_IAdv = ss "hvorfor" ;
|
why_IAdv = ss "hvorfor" ;
|
||||||
without_Prep = ss "uden" ;
|
without_Prep = ss "uden" ;
|
||||||
with_Prep = ss "med" ;
|
with_Prep = ss "med" ;
|
||||||
yes_Utt = ss ["ja"] ;
|
yes_Utt = ss ["ja"] ;
|
||||||
youSg_Pron =
|
youSg_Pron =
|
||||||
MorphoDan.mkNP "du" "dig" "din" "dit" "dine" SgUtr P2 ; ----
|
MorphoDan.mkNP "du" "dig" "din" "dit" "dine" Utr Sg P2 ; ----
|
||||||
youPl_Pron = MorphoDan.mkNP "i" "jer" "jeres" "jeres" "jeres" Plg P2 ;
|
youPl_Pron = MorphoDan.mkNP "i" "jer" "jeres" "jeres" "jeres" Utr Pl P2 ;
|
||||||
youPol_Pron = MorphoDan.mkNP "Dere" "Dere" "Deres" "Deres" "Deres" SgUtr P2 ; --- wrong in refl
|
youPol_Pron = MorphoDan.mkNP "Dere" "Dere" "Deres" "Deres" "Deres" Utr Sg P2 ; --- wrong in refl
|
||||||
have_V2 = dirV2 have_V ;
|
have_V2 = dirV2 have_V ;
|
||||||
|
|
||||||
-- Auxiliaries that are used repeatedly.
|
-- Auxiliaries that are used repeatedly.
|
||||||
|
|
||||||
oper
|
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" ;
|
lin language_title_Utt = ss "dansk" ;
|
||||||
|
|
||||||
|
|||||||
@@ -2,20 +2,18 @@ instance DiffNor of DiffScand = open CommonScand, Prelude in {
|
|||||||
|
|
||||||
-- Parameters.
|
-- Parameters.
|
||||||
|
|
||||||
|
oper
|
||||||
|
NGender = NGenderNor ;
|
||||||
|
|
||||||
|
ngen2gen g = case g of {NUtr _ => Utr ; NNeutr => Neutr} ;
|
||||||
|
|
||||||
param
|
param
|
||||||
Gender = Utr Sex | Neutr ;
|
NGenderNor = NUtr Sex | NNeutr ;
|
||||||
Sex = Masc | Fem ;
|
Sex = Masc | Fem ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
utrum = Utr Masc ;
|
utrum = NUtr Masc ;
|
||||||
neutrum = Neutr ;
|
neutrum = NNeutr ;
|
||||||
|
|
||||||
gennum : Gender -> Number -> GenNum = \g,n ->
|
|
||||||
case <<g,n> : Gender * Number> of {
|
|
||||||
<Utr _,Sg> => SgUtr ;
|
|
||||||
<Neutr,Sg> => SgNeutr ;
|
|
||||||
_ => Plg
|
|
||||||
} ;
|
|
||||||
|
|
||||||
detDef : Species = Def ;
|
detDef : Species = Def ;
|
||||||
|
|
||||||
@@ -38,10 +36,10 @@ instance DiffNor of DiffScand = open CommonScand, Prelude in {
|
|||||||
|
|
||||||
subjIf = "hvis" ;
|
subjIf = "hvis" ;
|
||||||
|
|
||||||
artIndef : Gender => Str = table {
|
artIndef : NGender => Str = table {
|
||||||
Utr Masc => "en" ;
|
NUtr Masc => "en" ;
|
||||||
Utr Fem => "ei" ;
|
NUtr Fem => "ei" ;
|
||||||
Neutr => "et"
|
NNeutr => "et"
|
||||||
} ;
|
} ;
|
||||||
detIndefPl = "noen" ;
|
detIndefPl = "noen" ;
|
||||||
|
|
||||||
@@ -66,26 +64,26 @@ instance DiffNor of DiffScand = open CommonScand, Prelude in {
|
|||||||
Neg => "ikke"
|
Neg => "ikke"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
genderForms : (x1,x2 : Str) -> Gender => Str = \all,allt ->
|
genderForms : (x1,x2 : Str) -> NGender => Str = \all,allt ->
|
||||||
table {
|
table {
|
||||||
Utr _ => all ;
|
NUtr _ => all ;
|
||||||
Neutr => allt
|
NNeutr => 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" ;
|
RNom | RPrep False => "som" ;
|
||||||
RGen => "hvis" ;
|
RGen => "hvis" ;
|
||||||
RPrep _ => gennumForms "hvilken" "hvilket" "hvilke" ! gn
|
RPrep _ => gennumForms "hvilken" "hvilket" "hvilke" ! gennum g n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
pronSuch = gennumForms "sådan" "sådant" "sådanne" ;
|
pronSuch = gennumForms "sådan" "sådant" "sådanne" ;
|
||||||
|
|
||||||
reflPron : Agr -> Str = \a -> case a of {
|
reflPron : Agr -> Str = \a -> case <a.n,a.p> of {
|
||||||
{gn = Plg ; p = P1} => "oss" ;
|
<Pl,P1> => "oss" ;
|
||||||
{gn = Plg ; p = P2} => "jer" ;
|
<Pl,P2> => "jer" ;
|
||||||
{p = P1} => "meg" ;
|
<Sg,P1> => "meg" ;
|
||||||
{p = P2} => "deg" ;
|
<Sg,P2> => "deg" ;
|
||||||
{p = P3} => "seg"
|
<_, P3> => "seg"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ concrete ExtraNor of ExtraNorAbs = ExtraScandNor ** open CommonScand, ResNor in
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
PossNP np pro = {
|
PossNP np pro = {
|
||||||
s = \\c => np.s ! NPNom ++ pro.s ! NPPoss np.a.gn ; ---- c
|
s = \\c => np.s ! NPNom ++ pro.s ! NPPoss (gennumAgr np.a) ; ---- c
|
||||||
a = np.a
|
a = np.a
|
||||||
} ;
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,24 +5,24 @@ concrete IdiomNor of Idiom = CatNor **
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
ImpersCl vp = mkClause "det" (agrP3 ParadigmsNor.neutrum Sg) vp ;
|
ImpersCl vp = mkClause "det" (agrP3 Neutr Sg) vp ;
|
||||||
GenericCl vp = mkClause "man" (agrP3 utrum Sg) vp ;
|
GenericCl vp = mkClause "man" (agrP3 Utr Sg) vp ;
|
||||||
|
|
||||||
CleftNP np rs = mkClause "det" (agrP3 ParadigmsNor.neutrum Sg)
|
CleftNP np rs = mkClause "det" (agrP3 Neutr Sg)
|
||||||
(insertObj (\\_ => np.s ! rs.c ++ rs.s ! np.a) (predV verbBe)) ;
|
(insertObj (\\_ => np.s ! rs.c ++ rs.s ! np.a) (predV verbBe)) ;
|
||||||
|
|
||||||
CleftAdv ad s = mkClause "det" (agrP3 ParadigmsNor.neutrum Sg)
|
CleftAdv ad s = mkClause "det" (agrP3 Neutr Sg)
|
||||||
(insertObj (\\_ => ad.s ++ s.s ! Sub) (predV verbBe)) ;
|
(insertObj (\\_ => ad.s ++ s.s ! Sub) (predV verbBe)) ;
|
||||||
|
|
||||||
ExistNP np =
|
ExistNP np =
|
||||||
mkClause "det" (agrP3 ParadigmsNor.neutrum Sg) (insertObj
|
mkClause "det" (agrP3 Neutr Sg) (insertObj
|
||||||
(\\_ => np.s ! accusative) (predV (depV finne_V))) ;
|
(\\_ => np.s ! accusative) (predV (depV finne_V))) ;
|
||||||
|
|
||||||
ExistIP ip = {
|
ExistIP ip = {
|
||||||
s = \\t,a,p =>
|
s = \\t,a,p =>
|
||||||
let
|
let
|
||||||
cls =
|
cls =
|
||||||
(mkClause "det" (agrP3 ParadigmsNor.neutrum Sg) (predV (depV finne_V))).s ! t ! a ! p ;
|
(mkClause "det" (agrP3 Neutr Sg) (predV (depV finne_V))).s ! t ! a ! p ;
|
||||||
who = ip.s ! accusative
|
who = ip.s ! accusative
|
||||||
in table {
|
in table {
|
||||||
QDir => who ++ cls ! Inv ;
|
QDir => who ++ cls ! Inv ;
|
||||||
@@ -33,7 +33,7 @@ concrete IdiomNor of Idiom = CatNor **
|
|||||||
ProgrVP vp =
|
ProgrVP vp =
|
||||||
insertObj (\\a => ["ved å"] ++ infVP vp a) (predV verbBe) ;
|
insertObj (\\a => ["ved å"] ++ infVP vp a) (predV verbBe) ;
|
||||||
|
|
||||||
ImpPl1 vp = {s = ["lat oss"] ++ infVP vp {gn = Plg ; p = P1}} ;
|
ImpPl1 vp = {s = ["lat oss"] ++ infVP vp {g = Utr ; n = Pl ; p = P1}} ;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ resource MorphoNor = CommonScand, ResNor ** open Prelude, Predef in {
|
|||||||
-- genders
|
-- genders
|
||||||
|
|
||||||
oper
|
oper
|
||||||
masc = Utr Masc ;
|
masc = NUtr Masc ;
|
||||||
fem = Utr Fem ;
|
fem = NUtr Fem ;
|
||||||
neutr = Neutr ;
|
neutr = NNeutr ;
|
||||||
|
|
||||||
-- type synonyms
|
-- type synonyms
|
||||||
|
|
||||||
@@ -28,10 +28,10 @@ oper
|
|||||||
\dreng, drengen, drenger, drengene ->
|
\dreng, drengen, drenger, drengene ->
|
||||||
{s = nounForms dreng drengen drenger drengene} ;
|
{s = nounForms dreng drengen drenger drengene} ;
|
||||||
|
|
||||||
extNGen : Str -> Gender = \s -> case last s of {
|
extNGen : Str -> NGender = \s -> case last s of {
|
||||||
"n" => Utr Masc ;
|
"n" => masc ;
|
||||||
"a" => Utr Fem ;
|
"a" => fem ;
|
||||||
_ => Neutr
|
_ => neutr
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
nBil : Str -> Subst = \bil ->
|
nBil : Str -> Subst = \bil ->
|
||||||
@@ -57,8 +57,8 @@ oper
|
|||||||
|
|
||||||
mkAdject : (_,_,_,_,_ : Str) -> Adj =
|
mkAdject : (_,_,_,_,_ : Str) -> Adj =
|
||||||
\stor,stort,store,storre,storst -> {s = table {
|
\stor,stort,store,storre,storst -> {s = table {
|
||||||
AF (APosit (Strong SgUtr )) c => mkCase c stor ;
|
AF (APosit (Strong (GSg Utr ))) c => mkCase c stor ;
|
||||||
AF (APosit (Strong SgNeutr)) c => mkCase c stort ;
|
AF (APosit (Strong (GSg Neutr))) c => mkCase c stort ;
|
||||||
AF (APosit _) c => mkCase c store ;
|
AF (APosit _) c => mkCase c store ;
|
||||||
AF ACompar c => mkCase c storre ;
|
AF ACompar c => mkCase c storre ;
|
||||||
AF (ASuperl SupStrong) c => mkCase c storst ;
|
AF (ASuperl SupStrong) c => mkCase c storst ;
|
||||||
@@ -89,7 +89,7 @@ oper
|
|||||||
VF (VPres Pass) => spises ;
|
VF (VPres Pass) => spises ;
|
||||||
VF (VPret v) => mkVoice v spiste ; --# notpresent
|
VF (VPret v) => mkVoice v spiste ; --# notpresent
|
||||||
VI (VSupin v) => mkVoice v spist ; --# 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) => case last spist of {
|
VI (VPtPret _ c) => case last spist of {
|
||||||
"a" => mkCase c spist ;
|
"a" => mkCase c spist ;
|
||||||
_ => mkCase c (spist + "e")
|
_ => mkCase c (spist + "e")
|
||||||
@@ -165,7 +165,7 @@ oper
|
|||||||
numPl : (CardOrd => Str) -> {s : CardOrd => Str ; n : Number} = \n ->
|
numPl : (CardOrd => Str) -> {s : CardOrd => Str ; n : Number} = \n ->
|
||||||
{s = n ; n = Pl} ;
|
{s = n ; n = Pl} ;
|
||||||
|
|
||||||
invNum : CardOrd = NCard Neutr ;
|
invNum : CardOrd = NCard NNeutr ;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ lin
|
|||||||
|
|
||||||
pot01 = {
|
pot01 = {
|
||||||
s = \\f => table {
|
s = \\f => table {
|
||||||
NCard g => case g of {Neutr => "ett" ; _ => "en"} ;
|
NCard g => case g of {NNeutr => "ett" ; NUtr _ => "en"} ; ---- ei ?
|
||||||
_ => "første"
|
_ => "første"
|
||||||
} ;
|
} ;
|
||||||
n = Sg
|
n = Sg
|
||||||
|
|||||||
@@ -272,12 +272,12 @@ oper
|
|||||||
-- The definitions should not bother the user of the API. So they are
|
-- The definitions should not bother the user of the API. So they are
|
||||||
-- hidden from the document.
|
-- hidden from the document.
|
||||||
|
|
||||||
Gender = MorphoNor.Gender ;
|
Gender = MorphoNor.NGender ;
|
||||||
Number = MorphoNor.Number ;
|
Number = MorphoNor.Number ;
|
||||||
Case = MorphoNor.Case ;
|
Case = MorphoNor.Case ;
|
||||||
masculine = Utr Masc ;
|
masculine = NUtr Masc ;
|
||||||
feminine = Utr Fem ;
|
feminine = NUtr Fem ;
|
||||||
neutrum = Neutr ;
|
neutrum = NNeutr ;
|
||||||
singular = Sg ;
|
singular = Sg ;
|
||||||
plural = Pl ;
|
plural = Pl ;
|
||||||
nominative = Nom ;
|
nominative = Nom ;
|
||||||
@@ -287,21 +287,21 @@ oper
|
|||||||
|
|
||||||
regN x = regGenN x g where {
|
regN x = regGenN x g where {
|
||||||
g = case <x : Str> of {
|
g = case <x : Str> of {
|
||||||
_ + "e" => Utr Fem ;
|
_ + "e" => fem ;
|
||||||
_ => Utr Masc
|
_ => masc
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
regGenN x g = case last x of {
|
regGenN x g = case last x of {
|
||||||
"e" => case g of {
|
"e" => case g of {
|
||||||
Utr Masc => mk4N x (x + "n") (x + "r") (x + "ne") ;
|
NUtr Masc => mk4N x (x + "n") (x + "r") (x + "ne") ;
|
||||||
Utr Fem => mk4N x (init x + "a") (x + "r") (x + "ne") ;
|
NUtr Fem => mk4N x (init x + "a") (x + "r") (x + "ne") ;
|
||||||
Neutr => mk4N x (x + "t") (x + "r") (init x + "a")
|
NNeutr => mk4N x (x + "t") (x + "r") (init x + "a")
|
||||||
} ;
|
} ;
|
||||||
_ => case g of {
|
_ => case g of {
|
||||||
Utr Masc => mk4N x (x + "en") (x + "er") (x + "ene") ;
|
NUtr Masc => mk4N x (x + "en") (x + "er") (x + "ene") ;
|
||||||
Utr Fem => mk4N x (x + "a") (x + "er") (x + "ene") ;
|
NUtr Fem => mk4N x (x + "a") (x + "er") (x + "ene") ;
|
||||||
Neutr => mk4N x (x + "et") (x + "") (x + "a")
|
NNeutr => mk4N x (x + "et") (x + "") (x + "a")
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -316,16 +316,16 @@ oper
|
|||||||
regN2 n g = mkN2 (regGenN n g) (mkPrep "av") ;
|
regN2 n g = mkN2 (regGenN n g) (mkPrep "av") ;
|
||||||
mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = mkComplement p.s ; c3 = mkComplement q.s} ;
|
mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = mkComplement p.s ; c3 = mkComplement q.s} ;
|
||||||
|
|
||||||
regGenPN n g = {s = \\c => mkCase c n ; g = g} ** {lock_PN = <>} ;
|
regGenPN n g = {s = \\c => mkCase c n ; g = ngen2gen g} ** {lock_PN = <>} ;
|
||||||
regPN n = regGenPN n utrum ;
|
regPN n = regGenPN n utrum ;
|
||||||
nounPN n = {s = n.s ! singular ! Indef ; g = n.g ; lock_PN = <>} ;
|
nounPN n = {s = n.s ! singular ! Indef ; g = ngen2gen n.g ; lock_PN = <>} ;
|
||||||
|
|
||||||
-- To form a noun phrase that can also be plural and have an irregular
|
-- To form a noun phrase that can also be plural and have an irregular
|
||||||
-- genitive, you can use the worst-case function.
|
-- genitive, you can use the worst-case function.
|
||||||
|
|
||||||
makeNP : Str -> Str -> Number -> Gender -> NP ;
|
makeNP : Str -> Str -> Number -> Gender -> NP ;
|
||||||
makeNP x y n g =
|
makeNP x y n g =
|
||||||
{s = table {NPPoss _ => x ; _ => y} ; a = agrP3 g n ;
|
{s = table {NPPoss _ => x ; _ => y} ; a = agrP3 (ngen2gen g) n ;
|
||||||
lock_NP = <>} ;
|
lock_NP = <>} ;
|
||||||
|
|
||||||
mk3A = mk3ADeg ; ---- (mkAdject a b c [] []) ** {isComp = False ; lock_A = <>} ;
|
mk3A = mk3ADeg ; ---- (mkAdject a b c [] []) ** {isComp = False ; lock_A = <>} ;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ concrete StructuralNor of Structural = CatNor **
|
|||||||
above_Prep = ss "ovenfor" ;
|
above_Prep = ss "ovenfor" ;
|
||||||
after_Prep = ss "etter" ;
|
after_Prep = ss "etter" ;
|
||||||
by8agent_Prep = ss "av" ;
|
by8agent_Prep = ss "av" ;
|
||||||
all_Predet = {s = gennumForms "all" "alt" "alle"} ;
|
all_Predet = {s = detForms "all" "alt" "alle" ; p = [] ; a = PNoAg} ;
|
||||||
almost_AdA, almost_AdN = ss "nesten" ;
|
almost_AdA, almost_AdN = ss "nesten" ;
|
||||||
although_Subj = ss ["selv om"] ;
|
although_Subj = ss ["selv om"] ;
|
||||||
always_AdV = ss "altid" ;
|
always_AdV = ss "altid" ;
|
||||||
@@ -24,15 +24,15 @@ concrete StructuralNor of Structural = CatNor **
|
|||||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||||
during_Prep = ss "under" ;
|
during_Prep = ss "under" ;
|
||||||
either7or_DConj = sd2 "enten" "eller" ** {n = Sg} ;
|
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} ;
|
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" ;
|
everywhere_Adv = ss "overalt" ;
|
||||||
few_Det = {s,sp = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ;
|
few_Det = {s,sp = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ;
|
||||||
--- first_Ord = {s = "første" ; isDet = True} ; DEPREC
|
--- first_Ord = {s = "første" ; isDet = True} ; DEPREC
|
||||||
for_Prep = ss "for" ;
|
for_Prep = ss "for" ;
|
||||||
from_Prep = ss "fra" ;
|
from_Prep = ss "fra" ;
|
||||||
he_Pron = MorphoNor.mkNP "han" "ham" "hans" "hans" "hans" SgUtr P3 ;
|
he_Pron = MorphoNor.mkNP "han" "ham" "hans" "hans" "hans" Utr Sg P3 ;
|
||||||
here_Adv = ss "her" ;
|
here_Adv = ss "her" ;
|
||||||
here7to_Adv = ss "hit" ;
|
here7to_Adv = ss "hit" ;
|
||||||
here7from_Adv = ss "herfra" ;
|
here7from_Adv = ss "herfra" ;
|
||||||
@@ -41,33 +41,33 @@ concrete StructuralNor of Structural = CatNor **
|
|||||||
if_Subj = ss "hvis" ;
|
if_Subj = ss "hvis" ;
|
||||||
in8front_Prep = ss "foran" ;
|
in8front_Prep = ss "foran" ;
|
||||||
i_Pron =
|
i_Pron =
|
||||||
MorphoNor.mkNP "jeg" "meg" (variants {"min" ; "mi"}) "mit" "mine" SgUtr P1 ; --- mi
|
MorphoNor.mkNP "jeg" "meg" (variants {"min" ; "mi"}) "mit" "mine" Utr Sg P1 ; --- mi
|
||||||
in_Prep = ss "i" ;
|
in_Prep = ss "i" ;
|
||||||
it_Pron = MorphoNor.regNP "det" "dets" SgNeutr ;
|
it_Pron = MorphoNor.regNP "det" "dets" Neutr Sg ;
|
||||||
less_CAdv = X.mkCAdv "mindre" conjThan ;
|
less_CAdv = X.mkCAdv "mindre" conjThan ;
|
||||||
many_Det = {s,sp = \\_,_ => "mange" ; n = Pl ; det = DDef Indef} ;
|
many_Det = {s,sp = \\_,_ => "mange" ; n = Pl ; det = DDef Indef} ;
|
||||||
more_CAdv = X.mkCAdv "mer" conjThan ;
|
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 = \\_,_ => "mye" ; n = Pl ; det = DDef Indef} ;
|
much_Det = {s,sp = \\_,_ => "mye" ; n = Pl ; det = DDef Indef} ;
|
||||||
must_VV =
|
must_VV =
|
||||||
mkV "måtte" "må" "må" "måtte" "måttet" "mått" **
|
mkV "måtte" "må" "må" "måtte" "måttet" "mått" **
|
||||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||||
no_Utt = ss ["nei"] ;
|
no_Utt = ss ["nei"] ;
|
||||||
on_Prep = ss "på" ;
|
on_Prep = ss "på" ;
|
||||||
--- one_Quant = {s = \\_ => genderForms ["en"] ["et"] ; n = Sg ; det = DIndef} ; DEPREC
|
|
||||||
only_Predet = {s = \\_ => "kun"} ;
|
only_Predet = {s = \\_,_ => "kun" ; p = [] ; a = PNoAg} ;
|
||||||
or_Conj = {s1 = [] ; s2 = "eller" ; n = Pl} ;
|
or_Conj = {s1 = [] ; s2 = "eller" ; n = Pl} ;
|
||||||
otherwise_PConj = ss "annarledes" ;
|
otherwise_PConj = ss "annarledes" ;
|
||||||
part_Prep = ss "av" ;
|
part_Prep = ss "av" ;
|
||||||
please_Voc = ss "takk" ; ---
|
please_Voc = ss "takk" ; ---
|
||||||
possess_Prep = ss "av" ;
|
possess_Prep = ss "av" ;
|
||||||
quite_Adv = ss "temmelig" ;
|
quite_Adv = ss "temmelig" ;
|
||||||
she_Pron = MorphoNor.mkNP "hun" "henne" "hennes" "hennes" "hennes" SgUtr P3 ;
|
she_Pron = MorphoNor.mkNP "hun" "henne" "hennes" "hennes" "hennes" Utr Sg P3 ;
|
||||||
so_AdA = ss "så" ;
|
so_AdA = ss "så" ;
|
||||||
someSg_Det = {s,sp = \\_ => genderForms "noen" "noe" ; n = Sg ; det = DIndef} ;
|
someSg_Det = {s,sp = \\_ => genderForms "noen" "noe" ; n = Sg ; det = DIndef} ;
|
||||||
somePl_Det = {s,sp = \\_,_ => "noen" ; n = Pl ; det = DIndef} ;
|
somePl_Det = {s,sp = \\_,_ => "noen" ; n = Pl ; det = DIndef} ;
|
||||||
somebody_NP = regNP "noen" "noens" SgUtr ;
|
somebody_NP = regNP "noen" "noens" Utr Sg ;
|
||||||
something_NP = regNP "noe" "noes" SgNeutr ;
|
something_NP = regNP "noe" "noes" Neutr Sg ;
|
||||||
somewhere_Adv = ss ["et eller annet sted"] ; ---- ?
|
somewhere_Adv = ss ["et eller annet sted"] ; ---- ?
|
||||||
that_Quant =
|
that_Quant =
|
||||||
{s,sp = table {
|
{s,sp = table {
|
||||||
@@ -80,7 +80,7 @@ concrete StructuralNor of Structural = CatNor **
|
|||||||
there7to_Adv = ss "dit" ;
|
there7to_Adv = ss "dit" ;
|
||||||
there7from_Adv = ss "derfra" ;
|
there7from_Adv = ss "derfra" ;
|
||||||
therefore_PConj = ss "derfor" ;
|
therefore_PConj = ss "derfor" ;
|
||||||
they_Pron = MorphoNor.mkNP "de" "dem" "deres" "deres" "deres" Plg P1 ;
|
they_Pron = MorphoNor.mkNP "de" "dem" "deres" "deres" "deres" Utr Pl P1 ;
|
||||||
this_Quant =
|
this_Quant =
|
||||||
{s,sp = table {
|
{s,sp = table {
|
||||||
Sg => \\_,_ => genderForms ["denne"] ["dette"] ;
|
Sg => \\_,_ => genderForms ["denne"] ["dette"] ;
|
||||||
@@ -96,9 +96,9 @@ concrete StructuralNor of Structural = CatNor **
|
|||||||
want_VV =
|
want_VV =
|
||||||
mkV "ville" "vil" "vill" "ville" "villet" "villed" **
|
mkV "ville" "vil" "vill" "ville" "villet" "villed" **
|
||||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||||
we_Pron = MorphoNor.mkNP "vi" "oss" "vår" "vårt" "våre" Plg P1 ;
|
we_Pron = MorphoNor.mkNP "vi" "oss" "vår" "vårt" "våre" Utr Pl P1 ;
|
||||||
whatSg_IP = {s = \\_ => "hva" ; gn = SgUtr} ; ---- infl
|
whatSg_IP = {s = \\_ => "hva" ; g = Neutr ; n = Sg} ; ---- infl
|
||||||
whatPl_IP = {s = \\_ => "hva" ; gn = Plg} ; ---- infl
|
whatPl_IP = {s = \\_ => "hva" ; g = Neutr ; n = Pl} ; ---- infl
|
||||||
when_IAdv = ss "når" ;
|
when_IAdv = ss "når" ;
|
||||||
when_Subj = ss "når" ;
|
when_Subj = ss "når" ;
|
||||||
where_IAdv = ss "hver" ;
|
where_IAdv = ss "hver" ;
|
||||||
@@ -109,22 +109,22 @@ concrete StructuralNor of Structural = CatNor **
|
|||||||
} ;
|
} ;
|
||||||
det = DIndef
|
det = DIndef
|
||||||
} ;
|
} ;
|
||||||
whoSg_IP = {s = vem.s ; gn = SgUtr} ;
|
whoSg_IP = {s = vem.s ; g = Utr ; n = Sg} ;
|
||||||
whoPl_IP = {s = \\_ => "hvilke" ; gn = Plg} ;
|
whoPl_IP = {s = \\_ => "hvilke" ; g = Utr ; n = Pl} ;
|
||||||
why_IAdv = ss "hvorfor" ;
|
why_IAdv = ss "hvorfor" ;
|
||||||
without_Prep = ss "uten" ;
|
without_Prep = ss "uten" ;
|
||||||
with_Prep = ss "med" ;
|
with_Prep = ss "med" ;
|
||||||
yes_Utt = ss ["ja"] ;
|
yes_Utt = ss ["ja"] ;
|
||||||
youSg_Pron =
|
youSg_Pron =
|
||||||
MorphoNor.mkNP "du" "deg" (variants {"din" ; "di"}) "dit" "dine" SgUtr P2 ; ----
|
MorphoNor.mkNP "du" "deg" (variants {"din" ; "di"}) "dit" "dine" Utr Sg P2 ; ----
|
||||||
youPl_Pron = MorphoNor.mkNP "dere" "dere" "deres" "deres" "deres" Plg P2 ;
|
youPl_Pron = MorphoNor.mkNP "dere" "dere" "deres" "deres" "deres" Utr Pl P2 ;
|
||||||
youPol_Pron = MorphoNor.mkNP "Dere" "Dere" "Deres" "Deres" "Deres" SgUtr P2 ; --- wrong in refl
|
youPol_Pron = MorphoNor.mkNP "Dere" "Dere" "Deres" "Deres" "Deres" Utr Sg P2 ; --- wrong in refl
|
||||||
have_V2 = dirV2 IrregNor.ha_V ;
|
have_V2 = dirV2 IrregNor.ha_V ;
|
||||||
|
|
||||||
-- Auxiliaries that are used repeatedly.
|
-- Auxiliaries that are used repeatedly.
|
||||||
|
|
||||||
oper
|
oper
|
||||||
vem = MorphoNor.mkNP "hvem" "hvem" "hvis" "hvis" "hvis" SgUtr P3 ;
|
vem = MorphoNor.mkNP "hvem" "hvem" "hvis" "hvis" "hvis" Utr Sg P3 ;
|
||||||
|
|
||||||
lin language_title_Utt = ss "norsk" ;
|
lin language_title_Utt = ss "norsk" ;
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ incomplete concrete AdjectiveScand of Adjective =
|
|||||||
|
|
||||||
ReflA2 a = {
|
ReflA2 a = {
|
||||||
s = \\ap => a.s ! AF (APosit ap) Nom ++ a.c2.s ++
|
s = \\ap => a.s ! AF (APosit ap) Nom ++ a.c2.s ++
|
||||||
reflPron (agrP3 utrum Sg) ; ----
|
reflPron (agrP3 Utr Sg) ; ----
|
||||||
isPre = False
|
isPre = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,6 @@ incomplete concrete AdverbScand of Adverb = CatScand ** open CommonScand, ResSca
|
|||||||
AdnCAdv cadv = {s = cadv.s ++ conjThan} ;
|
AdnCAdv cadv = {s = cadv.s ++ conjThan} ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
adverbForm : AForm = AF (APosit (Strong SgNeutr)) Nom ;
|
adverbForm : AForm = AF (APosit (Strong (GSg Neutr))) Nom ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,15 +25,15 @@ incomplete concrete CatScand of Cat =
|
|||||||
-- Question
|
-- Question
|
||||||
|
|
||||||
QCl = {s : R.Tense => Anteriority => Polarity => QForm => Str} ;
|
QCl = {s : R.Tense => Anteriority => Polarity => QForm => Str} ;
|
||||||
IP = {s : NPForm => Str ; gn : GenNum} ;
|
IP = {s : NPForm => Str ; g : Gender ; n : Number} ;
|
||||||
IComp = {s : AFormPos => Str} ;
|
IComp = {s : AFormPos => Str} ;
|
||||||
IDet = {s : Gender => Str ; n : Number ; det : DetSpecies} ;
|
IDet = {s : NGender => Str ; n : Number ; det : DetSpecies} ;
|
||||||
IQuant = {s : Number => Gender => Str ; det : DetSpecies} ;
|
IQuant = {s : Number => NGender => Str ; det : DetSpecies} ;
|
||||||
|
|
||||||
-- Relative; the case $c$ is for "det" clefts.
|
-- Relative; the case $c$ is for "det" clefts.
|
||||||
|
|
||||||
RCl = {s : R.Tense => Anteriority => Polarity => Agr => Str ; c : NPForm} ;
|
RCl = {s : R.Tense => Anteriority => Polarity => Agr => Str ; c : NPForm} ;
|
||||||
RP = {s : GenNum => RCase => Str ; a : RAgr} ;
|
RP = {s : Gender => Number => RCase => Str ; a : RAgr} ;
|
||||||
|
|
||||||
-- Verb
|
-- Verb
|
||||||
|
|
||||||
@@ -66,13 +66,13 @@ incomplete concrete CatScand of Cat =
|
|||||||
-- permits treating definite articles "huset - de fem husen - det gamla huset"
|
-- permits treating definite articles "huset - de fem husen - det gamla huset"
|
||||||
-- as $Quant$.
|
-- as $Quant$.
|
||||||
|
|
||||||
CN = {s : Number => DetSpecies => Case => Str ; g : Gender ; isMod : Bool} ;
|
CN = {s : Number => DetSpecies => Case => Str ; g : NGender ; isMod : Bool} ;
|
||||||
NP,Pron = {s : NPForm => Str ; a : Agr} ;
|
NP,Pron = {s : NPForm => Str ; a : Agr} ;
|
||||||
Det = {s,sp : Bool => Gender => Str ; n : Number ; det : DetSpecies} ;
|
Det = {s,sp : Bool => NGender => Str ; n : Number ; det : DetSpecies} ;
|
||||||
Quant = {s,sp : Number => Bool => Bool => Gender => Str ; det : DetSpecies} ;
|
Quant = {s,sp : Number => Bool => Bool => NGender => Str ; det : DetSpecies} ;
|
||||||
Predet = {s : GenNum => Str} ;
|
Predet = {s : Gender => Number => Str ; p : Str ; a : PredetAgr} ;
|
||||||
Num = {s : Gender => Str ; isDet : Bool ; n : Number} ;
|
Num = {s : NGender => Str ; isDet : Bool ; n : Number} ;
|
||||||
Card = {s : Gender => Str ; n : Number} ;
|
Card = {s : NGender => Str ; n : Number} ;
|
||||||
Ord = {s : Str} ;
|
Ord = {s : Str} ;
|
||||||
|
|
||||||
-- Numeral
|
-- Numeral
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
--1 Auxiliary operations common for Scandinavian languages.
|
--1 Auxiliary operations common for Scandinavian languages.
|
||||||
--
|
--
|
||||||
-- This module contains operations that are shared by the Scandinavian
|
-- This module contains operations that are shared by the Scandinavian
|
||||||
-- languages. The complete set of auxiliary operations needed to
|
-- languages, without dependence on parameters.
|
||||||
-- implement [Test Test.html] is defined in [ResScandinavian ResScandinavian.html],
|
|
||||||
-- which depends on [DiffScandinavian DiffScandinavian.html].
|
|
||||||
|
|
||||||
resource CommonScand = ParamX ** open Prelude in {
|
resource CommonScand = ParamX ** open Prelude in {
|
||||||
|
|
||||||
@@ -14,11 +12,23 @@ param
|
|||||||
Case = Nom | Gen ;
|
Case = Nom | Gen ;
|
||||||
Voice = Act | Pass ;
|
Voice = Act | Pass ;
|
||||||
|
|
||||||
|
-- The principal word orders in predication: main clause, inverted, subordinate.
|
||||||
|
|
||||||
Order = Main | Inv | Sub ;
|
Order = Main | Inv | Sub ;
|
||||||
|
|
||||||
|
-- The types of noun definiteness required by determiners. Examples:
|
||||||
|
-- "ett stort hus" (DIndef), "mitt stora hus" (DDef Indef),
|
||||||
|
-- "det stora huset" (DDed Def).
|
||||||
|
|
||||||
DetSpecies = DIndef | DDef Species ;
|
DetSpecies = DIndef | DDef Species ;
|
||||||
|
|
||||||
GenNum = SgUtr | SgNeutr | Plg ;
|
-- These are the gender-number combinations needed for adjective inflection,
|
||||||
|
-- minimizing the number of forms in the lexicon: there is no gender dependency
|
||||||
|
-- in the plural, and only two genders in the singular even in Norwegian.
|
||||||
|
|
||||||
|
GenNum = GSg Gender | GPl ;
|
||||||
|
|
||||||
|
Gender = Utr | Neutr ;
|
||||||
|
|
||||||
AForm = AF AFormGrad Case ;
|
AForm = AF AFormGrad Case ;
|
||||||
|
|
||||||
@@ -56,17 +66,17 @@ param
|
|||||||
VType = VAct | VPass | VRefl ;
|
VType = VAct | VPass | VRefl ;
|
||||||
|
|
||||||
NPForm = NPNom | NPAcc | NPPoss GenNum ;
|
NPForm = NPNom | NPAcc | NPPoss GenNum ;
|
||||||
--- AdjPronForm = APron GenNum Case ;
|
|
||||||
--- AuxVerbForm = AuxInf | AuxPres | AuxPret | AuxSup ;
|
|
||||||
|
|
||||||
RCase = RNom | RGen | RPrep Bool ;
|
RCase = RNom | RGen | RPrep Bool ;
|
||||||
|
|
||||||
RAgr = RNoAg | RAg {gn : GenNum ; p : Person} ;
|
RAgr = RNoAg | RAg Gender Number Person ;
|
||||||
|
|
||||||
|
PredetAgr = PNoAg | PAg Number ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
Complement : Type = {s : Str ; hasPrep : Bool} ;
|
Complement : Type = {s : Str ; hasPrep : Bool} ;
|
||||||
|
|
||||||
Agr : PType = {gn : GenNum ; p : Person} ;
|
Agr : PType = {g : Gender ; n : Number ; p : Person} ;
|
||||||
|
|
||||||
nominative : NPForm = NPNom ;
|
nominative : NPForm = NPNom ;
|
||||||
accusative : NPForm = NPAcc ;
|
accusative : NPForm = NPAcc ;
|
||||||
@@ -88,16 +98,27 @@ oper
|
|||||||
_ => True
|
_ => True
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Used in $Noun.AdjCN$.
|
-- Used in $Noun.AdjCN$.
|
||||||
|
|
||||||
----- agrAdj : GenNum -> DetSpecies -> AFormPos = \gn,d -> Strong gn ; --- debug
|
agrAdjNP : Agr -> DetSpecies -> AFormPos = \a ->
|
||||||
|
agrAdj (gennumAgr a) ;
|
||||||
|
|
||||||
agrAdj : GenNum -> DetSpecies -> AFormPos = \gn,d ->
|
agrAdj : GenNum -> DetSpecies -> AFormPos = \gn,d ->
|
||||||
case <<gn,d> : GenNum * DetSpecies> of {
|
case <<gn,d> : GenNum * DetSpecies> of {
|
||||||
<_, DIndef> => Strong gn ;
|
<_, DIndef> => Strong gn ;
|
||||||
<Plg,DDef _> => Weak Pl ;
|
<GPl,DDef _> => Weak Pl ;
|
||||||
_ => Weak Sg
|
_ => Weak Sg
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
gennum : Gender -> Number -> GenNum = \g,n ->
|
||||||
|
case n of {
|
||||||
|
Sg => GSg g ;
|
||||||
|
Pl => GPl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
gennumAgr : Agr -> GenNum = \a -> gennum a.g a.n ;
|
||||||
|
|
||||||
-- Used in $DiffScand.predV$.
|
-- Used in $DiffScand.predV$.
|
||||||
|
|
||||||
vFin : Tense -> Voice -> VForm = \t,v -> case t of {
|
vFin : Tense -> Voice -> VForm = \t,v -> case t of {
|
||||||
@@ -109,16 +130,15 @@ oper
|
|||||||
|
|
||||||
-- Used in $ConjunctionScand$.
|
-- Used in $ConjunctionScand$.
|
||||||
|
|
||||||
conjGenNum : (_,_ : GenNum) -> GenNum = \g,h -> case <g,h> of {
|
conjGender : Gender -> Gender -> Gender = \g,h -> case g of {
|
||||||
<SgUtr,SgUtr> => SgUtr ;
|
Utr => h ;
|
||||||
<Plg, _> => Plg ;
|
_ => Neutr
|
||||||
<_, Plg> => Plg ;
|
|
||||||
_ => SgNeutr
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
conjAgr : (_,_ : Agr) -> Agr = \a,b -> {
|
conjAgr : (_,_ : Agr) -> Agr = \a,b -> {
|
||||||
gn = conjGenNum a.gn b.gn ;
|
g = conjGender a.g b.g ;
|
||||||
p = conjPerson a.p b.p
|
n = conjNumber a.n b.n ;
|
||||||
|
p = conjPerson a.p b.p
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -178,9 +198,9 @@ oper
|
|||||||
\a, liten, litet, lilla, sma ->
|
\a, liten, litet, lilla, sma ->
|
||||||
case a of {
|
case a of {
|
||||||
Strong gn => case gn of {
|
Strong gn => case gn of {
|
||||||
SgUtr => liten ;
|
GSg Utr => liten ;
|
||||||
SgNeutr => litet ;
|
GSg Neutr => litet ;
|
||||||
Plg => sma
|
GPl => sma
|
||||||
} ;
|
} ;
|
||||||
Weak Sg => lilla ;
|
Weak Sg => lilla ;
|
||||||
Weak Pl => sma
|
Weak Pl => sma
|
||||||
@@ -199,29 +219,33 @@ oper
|
|||||||
|
|
||||||
artDef : GenNum -> Str = \gn -> gennumForms "den" "det" "de" ! gn ;
|
artDef : GenNum -> Str = \gn -> gennumForms "den" "det" "de" ! gn ;
|
||||||
|
|
||||||
mkNP : (x1,_,_,_,x5 : Str) -> GenNum -> Person ->
|
mkNP : (x1,_,_,_,x5 : Str) -> Gender -> Number -> Person ->
|
||||||
{s : NPForm => Str ; a : Agr} = \du,dig,din,ditt,dina,gn,p -> {
|
{s : NPForm => Str ; a : Agr} = \du,dig,din,ditt,dina,g,n,p -> {
|
||||||
s = table {
|
s = table {
|
||||||
NPNom => du ;
|
NPNom => du ;
|
||||||
NPAcc => dig ;
|
NPAcc => dig ;
|
||||||
NPPoss g => gennumForms din ditt dina ! g
|
NPPoss h => gennumForms din ditt dina ! h
|
||||||
} ;
|
} ;
|
||||||
a = {
|
a = {
|
||||||
gn = gn ;
|
g = g ;
|
||||||
p = p
|
n = n ;
|
||||||
|
p = p
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
gennumForms : (x1,x2,x3 : Str) -> GenNum => Str = \den,det,de ->
|
gennumForms : (x1,x2,x3 : Str) -> GenNum => Str = \den,det,de ->
|
||||||
table {
|
table {
|
||||||
SgUtr => den ;
|
GSg Utr => den ;
|
||||||
SgNeutr => det ;
|
GSg Neutr => det ;
|
||||||
_ => de
|
_ => de
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
regNP : Str -> Str -> GenNum -> {s : NPForm => Str ; a : Agr} =
|
detForms : (x1,x2,x3 : Str) -> Gender => Number => Str = \den,det,de ->
|
||||||
\det,dess,gn ->
|
\\g,n => gennumForms den det de ! gennum g n ;
|
||||||
mkNP det det dess dess dess gn P3 ;
|
|
||||||
|
regNP : Str -> Str -> Gender -> Number -> {s : NPForm => Str ; a : Agr} =
|
||||||
|
\det,dess,g,n ->
|
||||||
|
mkNP det det dess dess dess g n P3 ;
|
||||||
|
|
||||||
|
|
||||||
-- For $Verb$.
|
-- For $Verb$.
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ incomplete concrete ConjunctionScand of Conjunction =
|
|||||||
ConjAdv conj ss = conjunctDistrSS conj ss ;
|
ConjAdv conj ss = conjunctDistrSS conj ss ;
|
||||||
|
|
||||||
ConjNP conj ss = conjunctDistrTable NPForm conj ss ** {
|
ConjNP conj ss = conjunctDistrTable NPForm conj ss ** {
|
||||||
a = {gn = conjGenNum (gennum utrum conj.n) ss.a.gn ; p = ss.a.p}
|
a = {g = ss.a.g ; n = conjNumber conj.n ss.a.n ; p = ss.a.p}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ConjAP conj ss = conjunctDistrTable AFormPos conj ss ** {
|
ConjAP conj ss = conjunctDistrTable AFormPos conj ss ** {
|
||||||
|
|||||||
@@ -4,13 +4,14 @@ interface DiffScand = open CommonScand, Prelude in {
|
|||||||
|
|
||||||
-- Norway has three genders, Danish and Swedish have two.
|
-- Norway has three genders, Danish and Swedish have two.
|
||||||
|
|
||||||
param
|
|
||||||
Gender ;
|
|
||||||
|
|
||||||
oper
|
oper
|
||||||
neutrum, utrum : Gender ;
|
NGender : PType ;
|
||||||
|
|
||||||
|
ngen2gen : NGender -> Gender ;
|
||||||
|
|
||||||
gennum : Gender -> Number -> GenNum ;
|
neutrum, utrum : NGender ;
|
||||||
|
|
||||||
|
--- gennum : Gender -> Number -> GenNum ;
|
||||||
|
|
||||||
-- This is the form of the noun in "det stora berget"/"det store berg".
|
-- This is the form of the noun in "det stora berget"/"det store berg".
|
||||||
|
|
||||||
@@ -33,7 +34,7 @@ interface DiffScand = open CommonScand, Prelude in {
|
|||||||
|
|
||||||
subjIf : Str ;
|
subjIf : Str ;
|
||||||
|
|
||||||
artIndef : Gender => Str ;
|
artIndef : NGender => Str ;
|
||||||
detIndefPl : Str ;
|
detIndefPl : Str ;
|
||||||
|
|
||||||
verbHave : Verb ;
|
verbHave : Verb ;
|
||||||
@@ -48,11 +49,11 @@ interface DiffScand = open CommonScand, Prelude in {
|
|||||||
|
|
||||||
-- For determiners; mostly two-valued even in Norwegian.
|
-- For determiners; mostly two-valued even in Norwegian.
|
||||||
|
|
||||||
genderForms : (x1,x2 : Str) -> Gender => Str ;
|
genderForms : (x1,x2 : Str) -> NGender => Str ;
|
||||||
|
|
||||||
-- The forms of a relative pronoun ("som", "vars", "i vilken").
|
-- The forms of a relative pronoun ("som", "vars", "i vilken").
|
||||||
|
|
||||||
relPron : GenNum => RCase => Str ;
|
relPron : Gender => Number => RCase => Str ;
|
||||||
|
|
||||||
-- Pronoun "sådan" used in $Relative.RelCl$.
|
-- Pronoun "sådan" used in $Relative.RelCl$.
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ incomplete concrete ExtraScand of ExtraScandAbs = CatScand **
|
|||||||
open CommonScand,Coordination,ResScand in {
|
open CommonScand,Coordination,ResScand in {
|
||||||
lin
|
lin
|
||||||
GenNP np = {
|
GenNP np = {
|
||||||
s,sp = \\n,_,_,g => np.s ! NPPoss (gennum g n) ;
|
s,sp = \\n,_,_,g => np.s ! NPPoss (gennum (ngen2gen g) n) ;
|
||||||
det = DDef Indef
|
det = DDef Indef
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@ incomplete concrete ExtraScand of ExtraScandAbs = CatScand **
|
|||||||
|
|
||||||
StrandRelSlash rp slash = {
|
StrandRelSlash rp slash = {
|
||||||
s = \\t,a,p,ag =>
|
s = \\t,a,p,ag =>
|
||||||
rp.s ! ag.gn ! RNom ++ slash.s ! t ! a ! p ! Sub ++ slash.c2.s ;
|
rp.s ! ag.g ! ag.n ! RNom ++ slash.s ! t ! a ! p ! Sub ++ slash.c2.s ;
|
||||||
c = NPAcc
|
c = NPAcc
|
||||||
} ;
|
} ;
|
||||||
EmptyRelSlash slash = {
|
EmptyRelSlash slash = {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ incomplete concrete NounScand of Noun =
|
|||||||
in {
|
in {
|
||||||
s = \\c => det.s ! m ! g ++
|
s = \\c => det.s ! m ! g ++
|
||||||
cn.s ! det.n ! dd ! caseNP c ;
|
cn.s ! det.n ! dd ! caseNP c ;
|
||||||
a = agrP3 g det.n
|
a = agrP3 (ngen2gen g) det.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UsePN pn = {
|
UsePN pn = {
|
||||||
@@ -31,12 +31,12 @@ incomplete concrete NounScand of Noun =
|
|||||||
UsePron p = p ;
|
UsePron p = p ;
|
||||||
|
|
||||||
PredetNP pred np = {
|
PredetNP pred np = {
|
||||||
s = \\c => pred.s ! np.a.gn ++ np.s ! c ;
|
s = \\c => pred.s ! np.a.g ! np.a.n ++ pred.p ++ np.s ! c ;
|
||||||
a = np.a
|
a = case pred.a of {PAg n => agrP3 np.a.g n ; _ => np.a}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PPartNP np v2 = {
|
PPartNP np v2 = {
|
||||||
s = \\c => np.s ! c ++ v2.s ! (VI (VPtPret (agrAdj np.a.gn DIndef) Nom)) ;
|
s = \\c => np.s ! c ++ v2.s ! (VI (VPtPret (agrAdjNP np.a DIndef) Nom)) ;
|
||||||
a = np.a
|
a = np.a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -72,15 +72,15 @@ incomplete concrete NounScand of Noun =
|
|||||||
|
|
||||||
DetNP det =
|
DetNP det =
|
||||||
let
|
let
|
||||||
g = Neutr ; ----
|
g = neutrum ; ----
|
||||||
m = True ; ---- is this needed for other than Art?
|
m = True ; ---- is this needed for other than Art?
|
||||||
in {
|
in {
|
||||||
s = \\c => det.sp ! m ! g ;
|
s = \\c => det.sp ! m ! g ;
|
||||||
a = agrP3 g det.n
|
a = agrP3 (ngen2gen g) det.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PossPron p = {
|
PossPron p = {
|
||||||
s,sp = \\n,_,_,g => p.s ! NPPoss (gennum g n) ;
|
s,sp = \\n,_,_,g => p.s ! NPPoss (gennum (ngen2gen g) n) ;
|
||||||
det = DDef Indef
|
det = DDef Indef
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -106,8 +106,8 @@ incomplete concrete NounScand of Noun =
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
DefArt = {
|
DefArt = {
|
||||||
s = \\n,bm,bn,g => if_then_Str (orB bm bn) (artDef (gennum g n)) [] ;
|
s = \\n,bm,bn,g => if_then_Str (orB bm bn) (artDef (gennum (ngen2gen g) n)) [] ;
|
||||||
sp = \\n,bm,bn,g => artDef (gennum g n) ;
|
sp = \\n,bm,bn,g => artDef (gennum (ngen2gen g) n) ;
|
||||||
det = DDef Def
|
det = DDef Def
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ incomplete concrete NounScand of Noun =
|
|||||||
|
|
||||||
MassNP cn = {
|
MassNP cn = {
|
||||||
s = \\c => cn.s ! Sg ! DIndef ! caseNP c ;
|
s = \\c => cn.s ! Sg ! DIndef ! caseNP c ;
|
||||||
a = agrP3 cn.g Sg
|
a = agrP3 (ngen2gen cn.g) Sg
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseN, UseN2 = \noun -> {
|
UseN, UseN2 = \noun -> {
|
||||||
@@ -166,14 +166,14 @@ incomplete concrete NounScand of Noun =
|
|||||||
AdjCN ap cn = let g = cn.g in {
|
AdjCN ap cn = let g = cn.g in {
|
||||||
s = \\n,d,c =>
|
s = \\n,d,c =>
|
||||||
preOrPost ap.isPre
|
preOrPost ap.isPre
|
||||||
(ap.s ! agrAdj (gennum g n) d)
|
(ap.s ! agrAdj (gennum (ngen2gen g) n) d)
|
||||||
(cn.s ! n ! d ! c) ;
|
(cn.s ! n ! d ! c) ;
|
||||||
g = g ;
|
g = g ;
|
||||||
isMod = True
|
isMod = True
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
RelCN cn rs = let g = cn.g in {
|
RelCN cn rs = let g = cn.g in {
|
||||||
s = \\n,d,c => cn.s ! n ! d ! c ++ rs.s ! agrP3 g n ;
|
s = \\n,d,c => cn.s ! n ! d ! c ++ rs.s ! agrP3 (ngen2gen g) n ;
|
||||||
g = g ;
|
g = g ;
|
||||||
isMod = cn.isMod
|
isMod = cn.isMod
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ incomplete concrete PhraseScand of Phrase =
|
|||||||
UttIP ip = {s = ip.s ! nominative} ; --- Acc also
|
UttIP ip = {s = ip.s ! nominative} ; --- Acc also
|
||||||
UttIAdv iadv = iadv ;
|
UttIAdv iadv = iadv ;
|
||||||
UttNP np = {s = np.s ! accusative} ;
|
UttNP np = {s = np.s ! accusative} ;
|
||||||
UttVP vp = {s = infMark ++ infVP vp (agrP3 utrum Sg)} ;
|
UttVP vp = {s = infMark ++ infVP vp (agrP3 Utr Sg)} ;
|
||||||
UttAdv adv = adv ;
|
UttAdv adv = adv ;
|
||||||
|
|
||||||
NoPConj = {s = []} ;
|
NoPConj = {s = []} ;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ incomplete concrete QuestionScand of Question =
|
|||||||
QIndir => <"som",Sub> ;
|
QIndir => <"som",Sub> ;
|
||||||
_ => <[], Main>
|
_ => <[], Main>
|
||||||
} ;
|
} ;
|
||||||
cl = mkClause (qp.s ! nominative ++ somo.p1) {gn = qp.gn ; p = P3} vp
|
cl = mkClause (qp.s ! nominative ++ somo.p1) {g = qp.g ; n = qp.n ; p = P3} vp
|
||||||
in
|
in
|
||||||
cl.s ! t ! a ! b ! somo.p2
|
cl.s ! t ! a ! b ! somo.p2
|
||||||
} ;
|
} ;
|
||||||
@@ -29,7 +29,7 @@ incomplete concrete QuestionScand of Question =
|
|||||||
QuestSlash ip slash = {
|
QuestSlash ip slash = {
|
||||||
s = \\t,a,p =>
|
s = \\t,a,p =>
|
||||||
let
|
let
|
||||||
agr = {gn = ip.gn ; p = P3} ;
|
agr = agrP3 ip.g ip.n ;
|
||||||
cls : Order => Str = \\o => slash.s ! t ! a ! p ! o ++ slash.n3 ! agr ;
|
cls : Order => Str = \\o => slash.s ! t ! a ! p ! o ++ slash.n3 ! agr ;
|
||||||
who = slash.c2.s ++ ip.s ! accusative --- stranding in ExtScand
|
who = slash.c2.s ++ ip.s ! accusative --- stranding in ExtScand
|
||||||
in table {
|
in table {
|
||||||
@@ -54,7 +54,7 @@ incomplete concrete QuestionScand of Question =
|
|||||||
let
|
let
|
||||||
cls =
|
cls =
|
||||||
(mkClause (np.s ! nominative) np.a (predV verbBe)).s ! t ! a ! p ;
|
(mkClause (np.s ! nominative) np.a (predV verbBe)).s ! t ! a ! p ;
|
||||||
why = icomp.s ! agrAdj np.a.gn DIndef
|
why = icomp.s ! agrAdjNP np.a DIndef
|
||||||
in table {
|
in table {
|
||||||
QDir => why ++ cls ! Inv ;
|
QDir => why ++ cls ! Inv ;
|
||||||
QIndir => why ++ cls ! Sub
|
QIndir => why ++ cls ! Sub
|
||||||
@@ -67,22 +67,25 @@ incomplete concrete QuestionScand of Question =
|
|||||||
|
|
||||||
AdvIP ip adv = {
|
AdvIP ip adv = {
|
||||||
s = \\c => ip.s ! c ++ adv.s ;
|
s = \\c => ip.s ! c ++ adv.s ;
|
||||||
gn = ip.gn
|
g = ip.g ;
|
||||||
|
n = ip.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IdetCN idet cn = let g = cn.g in {
|
IdetCN idet cn = let g = cn.g in {
|
||||||
s = \\c =>
|
s = \\c =>
|
||||||
idet.s ! g ++ cn.s ! idet.n ! idet.det ! caseNP c ;
|
idet.s ! g ++ cn.s ! idet.n ! idet.det ! caseNP c ;
|
||||||
gn = gennum g idet.n
|
g = ngen2gen g ;
|
||||||
|
n = idet.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IdetIP idet =
|
IdetIP idet =
|
||||||
let
|
let
|
||||||
g = Neutr ;
|
g = neutrum ; ---- g
|
||||||
in {
|
in {
|
||||||
s = \\c => idet.s ! g ;
|
s = \\c => idet.s ! g ;
|
||||||
gn = (agrP3 g idet.n).gn
|
g = ngen2gen g ;
|
||||||
} ;
|
n = idet.n
|
||||||
|
} ;
|
||||||
|
|
||||||
IdetQuant idet num = {
|
IdetQuant idet num = {
|
||||||
s = \\g => idet.s ! num.n ! g ++ num.s ! g ;
|
s = \\g => idet.s ! num.n ! g ++ num.s ! g ;
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ incomplete concrete RelativeScand of Relative =
|
|||||||
lin
|
lin
|
||||||
|
|
||||||
RelCl cl = {
|
RelCl cl = {
|
||||||
s = \\t,a,p,ag => pronSuch ! ag.gn ++ conjThat ++ cl.s ! t ! a ! p ! Sub ;
|
s = \\t,a,p,ag =>
|
||||||
|
pronSuch ! gennumAgr ag ++ conjThat ++ cl.s ! t ! a ! p ! Sub ;
|
||||||
c = NPAcc
|
c = NPAcc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -15,9 +16,9 @@ incomplete concrete RelativeScand of Relative =
|
|||||||
let
|
let
|
||||||
agr = case rp.a of {
|
agr = case rp.a of {
|
||||||
RNoAg => ag ;
|
RNoAg => ag ;
|
||||||
RAg a => a
|
RAg g n p => {g = g ; n = n ; p = p}
|
||||||
} ;
|
} ;
|
||||||
cl = mkClause (rp.s ! ag.gn ! RNom) agr vp
|
cl = mkClause (rp.s ! ag.g ! ag.n ! RNom) agr vp
|
||||||
in
|
in
|
||||||
cl.s ! t ! ant ! b ! Sub ;
|
cl.s ! t ! ant ! b ! Sub ;
|
||||||
c = NPNom
|
c = NPNom
|
||||||
@@ -32,10 +33,10 @@ incomplete concrete RelativeScand of Relative =
|
|||||||
let
|
let
|
||||||
agr = case rp.a of {
|
agr = case rp.a of {
|
||||||
RNoAg => ag ;
|
RNoAg => ag ;
|
||||||
RAg agg => agg
|
RAg g n pr => {g = g ; n = n ; p = pr}
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
slash.c2.s ++ rp.s ! ag.gn ! RPrep slash.c2.hasPrep ++
|
slash.c2.s ++ rp.s ! ag.g ! ag.n ! RPrep slash.c2.hasPrep ++
|
||||||
slash.s ! t ! a ! p ! Sub ++ slash.n3 ! agr ;
|
slash.s ! t ! a ! p ! Sub ++ slash.n3 ! agr ;
|
||||||
c = NPAcc
|
c = NPAcc
|
||||||
} ;
|
} ;
|
||||||
@@ -43,8 +44,8 @@ incomplete concrete RelativeScand of Relative =
|
|||||||
--- The case here could be genitive.
|
--- The case here could be genitive.
|
||||||
|
|
||||||
FunRP p np rp = {
|
FunRP p np rp = {
|
||||||
s = \\gn,c => np.s ! nominative ++ p.s ++ rp.s ! gn ! RPrep True ;
|
s = \\g,n,c => np.s ! nominative ++ p.s ++ rp.s ! g ! n ! RPrep True ;
|
||||||
a = RAg np.a
|
a = RAg np.a.g np.a.n np.a.p
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IdRP = {s = relPron ; a = RNoAg} ;
|
IdRP = {s = relPron ; a = RNoAg} ;
|
||||||
|
|||||||
@@ -5,15 +5,16 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in {
|
|||||||
--2 Constants uniformly defined in terms of language-dependent constants
|
--2 Constants uniformly defined in terms of language-dependent constants
|
||||||
|
|
||||||
param
|
param
|
||||||
CardOrd = NCard Gender | NOrd AFormSup ; -- sic! (AFormSup)
|
CardOrd = NCard NGender | NOrd AFormSup ; -- sic! (AFormSup)
|
||||||
|
|
||||||
oper
|
oper
|
||||||
agrP3 : Gender -> Number -> Agr = \g,n -> {
|
agrP3 : Gender -> Number -> Agr = \g,n -> {
|
||||||
gn = gennum g n ;
|
g = g ;
|
||||||
|
n = n ;
|
||||||
p = P3
|
p = P3
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
Noun = {s : Number => Species => Case => Str ; g : Gender} ;
|
Noun = {s : Number => Species => Case => Str ; g : NGender} ;
|
||||||
|
|
||||||
-- This function is here because it depends on $verbHave, auxFut, auxCond$.
|
-- This function is here because it depends on $verbHave, auxFut, auxCond$.
|
||||||
|
|
||||||
@@ -58,7 +59,7 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in {
|
|||||||
VPInfinit Simul => vf [] vinf
|
VPInfinit Simul => vf [] vinf
|
||||||
} ;
|
} ;
|
||||||
a1 : Polarity => Str = negation ;
|
a1 : Polarity => Str = negation ;
|
||||||
n2 : Agr => Str = \\a => case verb.vtype of {
|
n2 : Agr => Str = \\a => case verb.vtype of {
|
||||||
VRefl => reflPron a ;
|
VRefl => reflPron a ;
|
||||||
_ => []
|
_ => []
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ incomplete concrete SentenceScand of Sentence =
|
|||||||
lin
|
lin
|
||||||
PredVP np vp = mkClause (np.s ! nominative) np.a vp ;
|
PredVP np vp = mkClause (np.s ! nominative) np.a vp ;
|
||||||
|
|
||||||
PredSCVP sc vp = mkClause sc.s (agrP3 neutrum Sg) vp ;
|
PredSCVP sc vp = mkClause sc.s (agrP3 Neutr Sg) vp ;
|
||||||
|
|
||||||
ImpVP vp = {
|
ImpVP vp = {
|
||||||
s = \\pol,n =>
|
s = \\pol,n =>
|
||||||
let
|
let
|
||||||
agr = {gn = gennum utrum n ; p = P2} ;
|
agr = {g = Utr ; n = n ; p = P2} ;
|
||||||
verb = vp.s ! VPImperat ;
|
verb = vp.s ! VPImperat ;
|
||||||
in
|
in
|
||||||
verb.fin ++ vp.a1 ! pol ++ verb.inf ++ vp.n2 ! agr ++ vp.a2 ++ vp.ext
|
verb.fin ++ vp.a1 ! pol ++ verb.inf ++ vp.n2 ! agr ++ vp.a2 ++ vp.ext
|
||||||
@@ -39,7 +39,7 @@ incomplete concrete SentenceScand of Sentence =
|
|||||||
|
|
||||||
EmbedS s = {s = conjThat ++ s.s ! Sub} ;
|
EmbedS s = {s = conjThat ++ s.s ! Sub} ;
|
||||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||||
EmbedVP vp = {s = infMark ++ infVP vp (agrP3 utrum Sg)} ; --- agr
|
EmbedVP vp = {s = infMark ++ infVP vp (agrP3 Utr Sg)} ; --- agr
|
||||||
|
|
||||||
UseCl t p cl = {
|
UseCl t p cl = {
|
||||||
s = \\o => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! o
|
s = \\o => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! o
|
||||||
|
|||||||
@@ -8,15 +8,15 @@ lin
|
|||||||
NumPN i = {s = \\c => i.s!neutrum ; g = Neutr} ; --- c
|
NumPN i = {s = \\c => i.s!neutrum ; g = Neutr} ; --- c
|
||||||
CNIntNP cn i = {
|
CNIntNP cn i = {
|
||||||
s = \\c => (cn.s ! Sg ! DIndef ! Nom ++ i.s) ;
|
s = \\c => (cn.s ! Sg ! DIndef ! Nom ++ i.s) ;
|
||||||
a = agrP3 cn.g Sg
|
a = agrP3 (ngen2gen cn.g) Sg
|
||||||
} ;
|
} ;
|
||||||
CNSymbNP det cn xs = let g = cn.g in {
|
CNSymbNP det cn xs = let g = cn.g in {
|
||||||
s = \\c => det.s ! cn.isMod ! g ++ cn.s ! det.n ! det.det ! caseNP c ++ xs.s ;
|
s = \\c => det.s ! cn.isMod ! g ++ cn.s ! det.n ! det.det ! caseNP c ++ xs.s ;
|
||||||
a = agrP3 g det.n
|
a = agrP3 (ngen2gen g) det.n
|
||||||
} ;
|
} ;
|
||||||
CNNumNP cn i = {
|
CNNumNP cn i = {
|
||||||
s = \\c => (cn.s ! Sg ! DIndef ! Nom ++ i.s ! neutrum) ;
|
s = \\c => (cn.s ! Sg ! DIndef ! Nom ++ i.s ! neutrum) ;
|
||||||
a = agrP3 cn.g Sg
|
a = agrP3 (ngen2gen cn.g) Sg
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SymbS sy = {s = \\_ => sy.s} ;
|
SymbS sy = {s = \\_ => sy.s} ;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ incomplete concrete VerbScand of Verb = CatScand ** open CommonScand, ResScand i
|
|||||||
ComplVV v vp = insertObj (\\a => v.c2.s ++ infVP vp a) (predV v) ;
|
ComplVV v vp = insertObj (\\a => v.c2.s ++ infVP vp a) (predV v) ;
|
||||||
ComplVS v s = insertObj (\\_ => conjThat ++ s.s ! Sub) (predV v) ;
|
ComplVS v s = insertObj (\\_ => conjThat ++ s.s ! Sub) (predV v) ;
|
||||||
ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ;
|
ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ;
|
||||||
ComplVA v ap = insertObj (\\a => ap.s ! agrAdj a.gn DIndef) (predV v) ;
|
ComplVA v ap = insertObj (\\a => ap.s ! agrAdjNP a DIndef) (predV v) ;
|
||||||
|
|
||||||
SlashV2V v vp = predV v ** {
|
SlashV2V v vp = predV v ** {
|
||||||
n3 = \\a => v.c3.s ++ infVP vp a ;
|
n3 = \\a => v.c3.s ++ infVP vp a ;
|
||||||
@@ -33,7 +33,7 @@ incomplete concrete VerbScand of Verb = CatScand ** open CommonScand, ResScand i
|
|||||||
c2 = v.c2
|
c2 = v.c2
|
||||||
} ;
|
} ;
|
||||||
SlashV2A v ap = predV v ** {
|
SlashV2A v ap = predV v ** {
|
||||||
n3 = \\a => ap.s ! agrAdj a.gn DIndef ;
|
n3 = \\a => ap.s ! agrAdjNP a DIndef ;
|
||||||
c2 = v.c2
|
c2 = v.c2
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -49,7 +49,8 @@ incomplete concrete VerbScand of Verb = CatScand ** open CommonScand, ResScand i
|
|||||||
(\\a => v.c2.s ++ np.s ! accusative ++ v.c3.s ++ infVP vp a) (predV v)
|
(\\a => v.c2.s ++ np.s ! accusative ++ v.c3.s ++ infVP vp a) (predV v)
|
||||||
** {n3 = vp.n3 ; c2 = v.c2} ;
|
** {n3 = vp.n3 ; c2 = v.c2} ;
|
||||||
|
|
||||||
UseComp comp = insertObj (\\a => comp.s ! agrAdj a.gn DIndef) (predV verbBe) ;
|
UseComp comp = insertObj
|
||||||
|
(\\a => comp.s ! agrAdjNP a DIndef) (predV verbBe) ;
|
||||||
|
|
||||||
CompAP ap = ap ;
|
CompAP ap = ap ;
|
||||||
CompNP np = {s = \\_ => np.s ! accusative} ;
|
CompNP np = {s = \\_ => np.s ! accusative} ;
|
||||||
@@ -63,7 +64,7 @@ incomplete concrete VerbScand of Verb = CatScand ** open CommonScand, ResScand i
|
|||||||
|
|
||||||
PassV2 v =
|
PassV2 v =
|
||||||
insertObj
|
insertObj
|
||||||
(\\a => v.s ! VI (VPtPret (agrAdj a.gn DIndef) Nom))
|
(\\a => v.s ! VI (VPtPret (agrAdjNP a DIndef) Nom))
|
||||||
(predV verbBecome) ;
|
(predV verbBecome) ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,31 +2,12 @@ instance DiffSwe of DiffScand = open CommonScand, Prelude in {
|
|||||||
|
|
||||||
-- Parameters.
|
-- Parameters.
|
||||||
|
|
||||||
param
|
|
||||||
Gender = Utr | Neutr ;
|
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
NGender = Gender ;
|
||||||
|
ngen2gen g = g ;
|
||||||
utrum = Utr ;
|
utrum = Utr ;
|
||||||
neutrum = Neutr ;
|
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 ;
|
detDef : Species = Def ;
|
||||||
|
|
||||||
Verb : Type = {
|
Verb : Type = {
|
||||||
@@ -48,7 +29,7 @@ instance DiffSwe of DiffScand = open CommonScand, Prelude in {
|
|||||||
|
|
||||||
subjIf = "om" ;
|
subjIf = "om" ;
|
||||||
|
|
||||||
artIndef : Gender => Str = table {
|
artIndef : NGender => Str = table {
|
||||||
Utr => "en" ;
|
Utr => "en" ;
|
||||||
Neutr => "ett"
|
Neutr => "ett"
|
||||||
} ;
|
} ;
|
||||||
@@ -74,26 +55,26 @@ instance DiffSwe of DiffScand = open CommonScand, Prelude in {
|
|||||||
Neg => "inte"
|
Neg => "inte"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
genderForms : (x1,x2 : Str) -> Gender => Str = \all,allt ->
|
genderForms : (x1,x2 : Str) -> NGender => Str = \all,allt ->
|
||||||
table {
|
table {
|
||||||
Utr => all ;
|
Utr => all ;
|
||||||
Neutr => allt
|
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" ;
|
RNom | RPrep False => "som" ;
|
||||||
RGen => "vars" ;
|
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" ;
|
pronSuch = gennumForms "sådan" "sådant" "sådana" ;
|
||||||
|
|
||||||
reflPron : Agr -> Str = \a -> case a of {
|
reflPron : Agr -> Str = \a -> case <a.n,a.p> of {
|
||||||
{gn = Plg ; p = P1} => "oss" ;
|
<Pl,P1> => "oss" ;
|
||||||
{gn = Plg ; p = P2} => "er" ;
|
<Pl,P2> => "er" ;
|
||||||
{p = P1} => "mig" ;
|
<Sg,P1> => "mig" ;
|
||||||
{p = P2} => "dig" ;
|
<Sg,P2> => "dig" ;
|
||||||
{p = P3} => "sig"
|
<_, P3> => "sig"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,11 +33,10 @@ concrete IdiomSwe of Idiom = CatSwe **
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
ProgrVP vp =
|
ProgrVP vp =
|
||||||
insertObj (\\a => "att" ++ infVP vp a) (predV (partV hålla_V "på")) ;
|
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
|
--# -path=.:../scandinavian:../common:../abstract
|
||||||
|
|
||||||
resource MakeStructuralSwe = open CatSwe, ParadigmsSwe,
|
resource MakeStructuralSwe = open CatSwe,
|
||||||
(P=ParadigmsSwe), MorphoSwe, Prelude in {
|
(P=ParadigmsSwe), MorphoSwe, Prelude in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
@@ -16,4 +16,18 @@ oper
|
|||||||
dDefIndef : DetSpecies = DDef Indef ;
|
dDefIndef : DetSpecies = DDef Indef ;
|
||||||
---- other DetSpecies
|
---- 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
|
funfun = ptPretAll funnen
|
||||||
in
|
in
|
||||||
mkCase c (case a of {
|
mkCase c (case a of {
|
||||||
(Strong (SgUtr)) => funnen ;
|
(Strong (GSg Utr)) => funnen ;
|
||||||
(Strong (SgNeutr)) => funfun.p1 ;
|
(Strong (GSg Neutr)) => funfun.p1 ;
|
||||||
_ => funfun.p2
|
_ => funfun.p2
|
||||||
}
|
}
|
||||||
) ;
|
) ;
|
||||||
|
|||||||
@@ -295,7 +295,7 @@ oper
|
|||||||
-- The definitions should not bother the user of the API. So they are
|
-- The definitions should not bother the user of the API. So they are
|
||||||
-- hidden from the document.
|
-- hidden from the document.
|
||||||
|
|
||||||
Gender = ResSwe.Gender ;
|
Gender = ResSwe.NGender ;
|
||||||
Number = CommonScand.Number ;
|
Number = CommonScand.Number ;
|
||||||
Case = CommonScand.Case ;
|
Case = CommonScand.Case ;
|
||||||
utrum = Utr ;
|
utrum = Utr ;
|
||||||
@@ -501,8 +501,8 @@ oper
|
|||||||
mk6V = \finna,finner,finn,fann,funnit,funnen ->
|
mk6V = \finna,finner,finn,fann,funnit,funnen ->
|
||||||
let
|
let
|
||||||
funn = ptPretForms funnen ;
|
funn = ptPretForms funnen ;
|
||||||
funnet = funn ! Strong SgNeutr ! Nom ;
|
funnet = funn ! Strong (GSg Neutr) ! Nom ;
|
||||||
funna = funn ! Strong Plg ! Nom
|
funna = funn ! Strong GPl ! Nom
|
||||||
in
|
in
|
||||||
mkVerb finna finner finn fann funnit funnen funnet funna **
|
mkVerb finna finner finn fann funnit funnen funnet funna **
|
||||||
{part = [] ; vtype=VAct ; lock_V = <>} ;
|
{part = [] ; vtype=VAct ; lock_V = <>} ;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ concrete StructuralSwe of Structural = CatSwe **
|
|||||||
above_Prep = ss "ovanför" ;
|
above_Prep = ss "ovanför" ;
|
||||||
after_Prep = ss "efter" ;
|
after_Prep = ss "efter" ;
|
||||||
by8agent_Prep = ss "av" ;
|
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" ;
|
almost_AdA, almost_AdN = ss "nästan" ;
|
||||||
although_Subj = ss "fast" ;
|
although_Subj = ss "fast" ;
|
||||||
always_AdV = ss "alltid" ;
|
always_AdV = ss "alltid" ;
|
||||||
@@ -25,20 +25,20 @@ concrete StructuralSwe of Structural = CatSwe **
|
|||||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||||
during_Prep = ss "under" ;
|
during_Prep = ss "under" ;
|
||||||
either7or_DConj = sd2 "antingen" "eller" ** {n = Sg} ;
|
either7or_DConj = sd2 "antingen" "eller" ** {n = Sg} ;
|
||||||
everybody_NP = regNP "alla" "allas" Plg ;
|
everybody_NP = regNP "alla" "allas" Utr Pl ;
|
||||||
every_Det = {
|
every_Det = {
|
||||||
s = \\_,_ => "varje" ;
|
s = \\_,_ => "varje" ;
|
||||||
sp = \\_,_ => "var och en" ; ----
|
sp = \\_,_ => "var och en" ; ----
|
||||||
n = Sg ;
|
n = Sg ;
|
||||||
det = DIndef
|
det = DIndef
|
||||||
} ;
|
} ;
|
||||||
everything_NP = regNP "allting" "alltings" SgNeutr ;
|
everything_NP = regNP "allting" "alltings" Neutr Sg ;
|
||||||
everywhere_Adv = ss "överallt" ;
|
everywhere_Adv = ss "överallt" ;
|
||||||
few_Det = {s,sp = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ;
|
few_Det = {s,sp = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ;
|
||||||
--- first_Ord = {s = "första" ; isDet = True} ;
|
--- first_Ord = {s = "första" ; isDet = True} ;
|
||||||
for_Prep = ss "för" ;
|
for_Prep = ss "för" ;
|
||||||
from_Prep = ss "från" ;
|
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" ;
|
here_Adv = ss "här" ;
|
||||||
here7to_Adv = ss "hit" ;
|
here7to_Adv = ss "hit" ;
|
||||||
here7from_Adv = ss "härifrån" ;
|
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} ;
|
how8many_IDet = {s = \\_ => ["hur många"] ; n = Pl ; det = DDef Indef} ;
|
||||||
if_Subj = ss "om" ;
|
if_Subj = ss "om" ;
|
||||||
in8front_Prep = ss "framför" ;
|
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" ;
|
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" ;
|
less_CAdv = X.mkCAdv "mindre" "än" ;
|
||||||
many_Det = {s,sp = \\_,_ => "många" ; n = Pl ; det = DDef Indef} ;
|
many_Det = {s,sp = \\_,_ => "många" ; n = Pl ; det = DDef Indef} ;
|
||||||
more_CAdv = X.mkCAdv "mer" "än" ;
|
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} ;
|
much_Det = {s,sp = \\_,_ => "mycket" ; n = Pl ; det = DDef Indef} ;
|
||||||
must_VV =
|
must_VV =
|
||||||
mkV "få" "måste" "få" "fick" "måst" "måst" **
|
mkV "få" "måste" "få" "fick" "måst" "måst" **
|
||||||
@@ -60,19 +60,19 @@ concrete StructuralSwe of Structural = CatSwe **
|
|||||||
no_Utt = ss ["nej"] ;
|
no_Utt = ss ["nej"] ;
|
||||||
on_Prep = ss "på" ;
|
on_Prep = ss "på" ;
|
||||||
--- one_Quant = {s = \\_,_ => genderForms ["en"] ["ett"] ; n = Sg ; det = DIndef} ;
|
--- 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} ;
|
or_Conj = {s1 = [] ; s2 = "eller" ; n = Sg} ;
|
||||||
otherwise_PConj = ss "annars" ;
|
otherwise_PConj = ss "annars" ;
|
||||||
part_Prep = ss "av" ;
|
part_Prep = ss "av" ;
|
||||||
please_Voc = ss "tack" ; ---
|
please_Voc = ss "tack" ; ---
|
||||||
possess_Prep = ss "av" ;
|
possess_Prep = ss "av" ;
|
||||||
quite_Adv = ss "ganska" ;
|
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å" ;
|
so_AdA = ss "så" ;
|
||||||
someSg_Det = {s,sp = \\_ => genderForms "någon" "något" ; n = Sg ; det = DIndef} ;
|
someSg_Det = {s,sp = \\_ => genderForms "någon" "något" ; n = Sg ; det = DIndef} ;
|
||||||
somePl_Det = {s,sp = \\_,_ => "några" ; n = Pl ; det = DIndef} ;
|
somePl_Det = {s,sp = \\_,_ => "några" ; n = Pl ; det = DIndef} ;
|
||||||
somebody_NP = regNP "någon" "någons" SgUtr ;
|
somebody_NP = regNP "någon" "någons" Utr Sg ;
|
||||||
something_NP = regNP "något" "någots" SgNeutr ;
|
something_NP = regNP "något" "någots" Neutr Sg ;
|
||||||
somewhere_Adv = ss "någonstans" ;
|
somewhere_Adv = ss "någonstans" ;
|
||||||
that_Quant =
|
that_Quant =
|
||||||
{s,sp = table {
|
{s,sp = table {
|
||||||
@@ -85,7 +85,7 @@ concrete StructuralSwe of Structural = CatSwe **
|
|||||||
there7to_Adv = ss "dit" ;
|
there7to_Adv = ss "dit" ;
|
||||||
there7from_Adv = ss "därifrån" ;
|
there7from_Adv = ss "därifrån" ;
|
||||||
therefore_PConj = ss "därför" ;
|
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 =
|
this_Quant =
|
||||||
{s,sp = table {
|
{s,sp = table {
|
||||||
Sg => \\_,_ => genderForms ["den här"] ["det här"] ;
|
Sg => \\_,_ => genderForms ["den här"] ["det här"] ;
|
||||||
@@ -101,11 +101,12 @@ concrete StructuralSwe of Structural = CatSwe **
|
|||||||
want_VV =
|
want_VV =
|
||||||
mkV "vilja" "vill" "vilj" "ville" "velat" "velad" **
|
mkV "vilja" "vill" "vilj" "ville" "velat" "velad" **
|
||||||
{c2 = mkComplement [] ; lock_VV = <>} ;
|
{c2 = mkComplement [] ; lock_VV = <>} ;
|
||||||
we_Pron = MorphoSwe.mkNP "vi" "oss" "vår" "vårt" "våra" Plg P1 ;
|
we_Pron = MorphoSwe.mkNP "vi" "oss" "vår" "vårt" "våra" Utr Pl P1 ;
|
||||||
whatSg_IP = {s = \\_ => "vad" ; gn = SgUtr} ; ---- infl
|
whatSg_IP = {s = \\_ => "vad" ; g = Neutr ; n = Sg} ; ---- infl, g
|
||||||
whatPl_IP = {s = \\_ => "vad" ; gn = Plg} ; ---- infl
|
whatPl_IP = {s = \\_ => "vad" ; g = Neutr ; n = Pl} ; ---- infl, g
|
||||||
when_IAdv = ss "när" ;
|
when_IAdv = ss "när" ;
|
||||||
when_Subj = ss "när" ;
|
when_Subj = ss "när" ;
|
||||||
|
that_Subj = ss "att" ;
|
||||||
where_IAdv = ss "var" ;
|
where_IAdv = ss "var" ;
|
||||||
which_IQuant = {
|
which_IQuant = {
|
||||||
s = table {
|
s = table {
|
||||||
@@ -114,23 +115,23 @@ concrete StructuralSwe of Structural = CatSwe **
|
|||||||
} ;
|
} ;
|
||||||
det = DIndef
|
det = DIndef
|
||||||
} ;
|
} ;
|
||||||
whoSg_IP = {s = vem.s ; gn = SgUtr} ;
|
whoSg_IP = {s = vem.s ; g = Utr ; n = Sg} ;
|
||||||
whoPl_IP = {s = \\_ => "vilka" ; gn = Plg} ;
|
whoPl_IP = {s = \\_ => "vilka" ; g = Utr ; n = Pl} ;
|
||||||
why_IAdv = ss "varför" ;
|
why_IAdv = ss "varför" ;
|
||||||
without_Prep = ss "utan" ;
|
without_Prep = ss "utan" ;
|
||||||
with_Prep = ss "med" ;
|
with_Prep = ss "med" ;
|
||||||
yes_Utt = ss ["ja"] ;
|
yes_Utt = ss ["ja"] ;
|
||||||
youSg_Pron = MorphoSwe.mkNP "du" "dig" "din" "ditt" "dina" SgUtr P2 ;
|
youSg_Pron = MorphoSwe.mkNP "du" "dig" "din" "ditt" "dina" Utr Sg P2 ;
|
||||||
youPl_Pron = MorphoSwe.mkNP "ni" "er" "er" "ert" "era" Plg P2 ;
|
youPl_Pron = MorphoSwe.mkNP "ni" "er" "er" "ert" "era" Utr Pl P2 ;
|
||||||
youPol_Pron = MorphoSwe.mkNP "ni" "er" "er" "ert" "era" SgUtr P2 ; --- wrong in refl
|
youPol_Pron = MorphoSwe.mkNP "ni" "er" "er" "ert" "era" Utr Sg P2 ; --- wrong in refl
|
||||||
|
|
||||||
-- Auxiliaries that are used repeatedly.
|
-- Auxiliaries that are used repeatedly.
|
||||||
|
|
||||||
oper
|
oper
|
||||||
vem = MorphoSwe.mkNP "vem" "vem" "vems" "vems" "vems" SgUtr P3 ;
|
vem = MorphoSwe.mkNP "vem" "vem" "vems" "vems" "vems" Utr Sg P3 ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
not_Predet = {s = \\_ => "inte"} ;
|
not_Predet = {s = \\_,_ => "inte" ; p = [] ; a = PNoAg} ;
|
||||||
no_Quant =
|
no_Quant =
|
||||||
{s,sp = table {
|
{s,sp = table {
|
||||||
Sg => \\_,_ => genderForms "ingen" "inget" ;
|
Sg => \\_,_ => genderForms "ingen" "inget" ;
|
||||||
@@ -140,8 +141,8 @@ lin
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
if_then_Conj = {s1 = "om" ; s2 = "så" ; n = singular} ;
|
if_then_Conj = {s1 = "om" ; s2 = "så" ; n = singular} ;
|
||||||
nobody_NP = regNP "ingen" "ingens" SgUtr ;
|
nobody_NP = regNP "ingen" "ingens" Utr Sg ;
|
||||||
nothing_NP = regNP "inget" "ingets" SgNeutr ;
|
nothing_NP = regNP "inget" "ingets" Neutr Sg ;
|
||||||
|
|
||||||
at_least_AdN = ss "minst" ;
|
at_least_AdN = ss "minst" ;
|
||||||
at_most_AdN = ss "högst" ;
|
at_most_AdN = ss "högst" ;
|
||||||
|
|||||||
Reference in New Issue
Block a user