mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 08:58:55 -06:00
Merge pull request #448 from hleiss/adjectives
(Ger) AP is now a split phrase with separable comparison NP
This commit is contained in:
@@ -3,29 +3,28 @@ concrete AdjectiveGer of Adjective = CatGer ** open ResGer, Prelude in {
|
|||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
PositA a = {
|
PositA a = {
|
||||||
s = a.s ! Posit ;
|
s = a.s ! Posit ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = <[],[]> ;
|
c = <[],[]> ;
|
||||||
ext = []
|
ext = []
|
||||||
} ;
|
} ;
|
||||||
ComparA a np =
|
ComparA a np = {
|
||||||
let nps = np.s ! False ! Nom ++ bigNP np
|
s = \\af => a.s ! Compar ! af ;
|
||||||
in {
|
s2 = \\c => conjThan ++ np.s ! False ! c ++ np.ext ++ np.rc ;
|
||||||
s = \\af => a.s ! Compar ! af ++ conjThan ++ nps ;
|
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = <[],[]> ;
|
c = <[],[]> ;
|
||||||
ext = []
|
ext = []
|
||||||
} ;
|
} ;
|
||||||
CAdvAP ad ap np =
|
CAdvAP adv ap np = ap ** {
|
||||||
let nps = np.s ! False ! Nom ++ bigNP np in
|
s = \\af => adv.s ++ ap.s ! af ;
|
||||||
ap ** {
|
s2 = \\c => adv.p ++ np.s ! False ! c ++ np.ext ++ np.rc ;
|
||||||
s = \\af => ad.s ++ ap.s ! af ++ ad.p ++ nps ;
|
isPre = True -- HL 1/2023
|
||||||
isPre = False
|
|
||||||
} ;
|
} ;
|
||||||
UseComparA a = {
|
UseComparA a = {
|
||||||
s = \\af => a.s ! Compar ! af ;
|
s = \\af => a.s ! Compar ! af ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = <[],[]> ;
|
c = <[],[]> ;
|
||||||
ext = []
|
ext = []
|
||||||
@@ -33,6 +32,7 @@ concrete AdjectiveGer of Adjective = CatGer ** open ResGer, Prelude in {
|
|||||||
|
|
||||||
AdjOrd a = {
|
AdjOrd a = {
|
||||||
s = a.s ;
|
s = a.s ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = <[],[]> ;
|
c = <[],[]> ;
|
||||||
ext = []
|
ext = []
|
||||||
@@ -41,25 +41,24 @@ concrete AdjectiveGer of Adjective = CatGer ** open ResGer, Prelude in {
|
|||||||
-- $SuperlA$ belongs to determiner syntax in $Noun$.
|
-- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||||
|
|
||||||
ComplA2 a np =
|
ComplA2 a np =
|
||||||
let CExt = case a.c2.t of {
|
let
|
||||||
isCase => <appPrepNP a.c2 np, []> ;
|
obj = appPrepNP a.c2 np
|
||||||
_ => <[], appPrepNP a.c2 np> }
|
|
||||||
in {
|
in {
|
||||||
s = a.s ! Posit ;
|
s = a.s ! Posit ;
|
||||||
isPre = True ;
|
s2 = \\_ => [] ;
|
||||||
c = CExt ;
|
isPre = True ;
|
||||||
ext = []
|
c = case a.c2.t of {isCase => <obj, []> ; _ => <[], obj>} ;
|
||||||
|
ext = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ReflA2 a =
|
ReflA2 a =
|
||||||
let
|
let
|
||||||
compl = appPrep a.c2 (reflPron ! agrP3 Sg) ;
|
obj = appPrep a.c2 (reflPron ! agrP3 Sg) ;
|
||||||
CExt = case a.c2.t of
|
|
||||||
{isCase => <compl, []> ; _ => <[], compl> }
|
|
||||||
in {
|
in {
|
||||||
s = a.s ! Posit ;
|
s = a.s ! Posit ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = CExt ;
|
c = case a.c2.t of {isCase => <obj, []> ; _ => <[], obj>} ;
|
||||||
ext = []
|
ext = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -72,9 +71,12 @@ concrete AdjectiveGer of Adjective = CatGer ** open ResGer, Prelude in {
|
|||||||
|
|
||||||
UseA2 a = {
|
UseA2 a = {
|
||||||
s = a.s ! Posit ;
|
s = a.s ! Posit ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = <[],[]> ;
|
c = <[],[]> ;
|
||||||
ext = []
|
ext = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
AdvAP ap adv = ap ** {s = \\a => adv.s ++ ap.s ! a} ; -- HL 1/2024
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,10 +44,13 @@ concrete CatGer of Cat =
|
|||||||
|
|
||||||
-- Adjective (HL 7/23: we need c : Agr => Str * Str to handle reflexive objects, cf ReflA2)
|
-- Adjective (HL 7/23: we need c : Agr => Str * Str to handle reflexive objects, cf ReflA2)
|
||||||
|
|
||||||
AP = {s : AForm => Str ; isPre : Bool ; c: Str * Str ; ext : Str} ;
|
AP = {
|
||||||
-- ich bin [c1 ihm] treu
|
s : AForm => Str ; -- (strong) adjective paradigm
|
||||||
-- du bist so klug gewesen [ext ihn zu lesen]
|
s2 : Case => Str ; -- comparison np, e.g. [s kleineres] (Tier) [s2 als den Hund] HL 1/34
|
||||||
-- ich bin stolz [c2 auf dich]
|
isPre : Bool ; -- pre-nominal as attribute, e.g. False with sentential complement
|
||||||
|
c: Str * Str ; -- np,pp-complement, e.g. (ich bin) [c1 ihm] treu ; stolz [c2 auf dich]
|
||||||
|
ext : Str -- s,inf-complement, (du bist) so klug (gewesen) [ext ihn zu lesen]
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Noun
|
-- Noun
|
||||||
|
|
||||||
@@ -65,7 +68,8 @@ concrete CatGer of Cat =
|
|||||||
DAP = {s,sp : Gender => Case => Str ; n : Number ; a : Adjf ; isDef,hasDefArt : Bool} ;
|
DAP = {s,sp : Gender => Case => Str ; n : Number ; a : Adjf ; isDef,hasDefArt : Bool} ;
|
||||||
|
|
||||||
Quant = {
|
Quant = {
|
||||||
s,sp : GenNum => Case => Str ;
|
s : Bool => GenNum => Case => Str ; -- True if leading DefArtSg is dropped
|
||||||
|
sp : GenNum => Case => Str ; -- and contracted with preposition
|
||||||
a : Adjf ;
|
a : Adjf ;
|
||||||
isDefArt : Bool ;
|
isDefArt : Bool ;
|
||||||
delCardOne : Bool -- delete following cardinal 1 (IndefArt and no_Quant)
|
delCardOne : Bool -- delete following cardinal 1 (IndefArt and no_Quant)
|
||||||
@@ -127,7 +131,7 @@ concrete CatGer of Cat =
|
|||||||
VP = \vp -> useInfVP False vp ;
|
VP = \vp -> useInfVP False vp ;
|
||||||
VPSlash = \vps -> useInfVP False vps ++ vps.c2.s ! GPl ++ vps.ext;
|
VPSlash = \vps -> useInfVP False vps ++ vps.c2.s ! GPl ++ vps.ext;
|
||||||
|
|
||||||
AP = \ap -> ap.c.p1 ++ ap.s ! APred ++ ap.c.p2 ++ ap.ext ;
|
AP = \ap -> ap.c.p1 ++ ap.s ! APred ++ ap.c.p2 ++ ap.s2 ! Nom ++ ap.ext ;
|
||||||
A2 = \a2 -> a2.s ! Posit ! APred ++ a2.c2.s ! GPl ;
|
A2 = \a2 -> a2.s ! Posit ! APred ++ a2.c2.s ! GPl ;
|
||||||
|
|
||||||
V, VS, VQ, VA = \v -> useInfVP False (predV v) ;
|
V, VS, VQ, VA = \v -> useInfVP False (predV v) ;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ concrete ConjunctionGer of Conjunction =
|
|||||||
in (conjAgr agr ss.a) }) ;
|
in (conjAgr agr ss.a) }) ;
|
||||||
|
|
||||||
ConjAP conj ss = conjunctDistrTable AForm conj ss ** {
|
ConjAP conj ss = conjunctDistrTable AForm conj ss ** {
|
||||||
|
s2 = \\c => [] ; -- comparison np of ap = {s:AForm => Str; s2:Case => Str} HL 1/23
|
||||||
isPre = ss.isPre ; c = ss.c ; ext = ss.ext} ;
|
isPre = ss.isPre ; c = ss.c ; ext = ss.ext} ;
|
||||||
|
|
||||||
ConjRS conj ss = conjunctDistrTable RelGenNum conj ss ** {
|
ConjRS conj ss = conjunctDistrTable RelGenNum conj ss ** {
|
||||||
@@ -87,8 +88,8 @@ concrete ConjunctionGer of Conjunction =
|
|||||||
[CN] = {s1,s2 : Adjf => Number => Case => Str ; g : Gender} ;
|
[CN] = {s1,s2 : Adjf => Number => Case => Str ; g : Gender} ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
bigAP : AP -> AForm => Str = \ap ->
|
bigAP : AP -> AForm => Str = \ap -> -- HL 1/23: not always ok:
|
||||||
\\a => ap.c.p1 ++ ap.s ! a ++ ap.c.p2 ++ ap.ext;
|
\\a => ap.c.p1 ++ ap.s ! a ++ ap.c.p2 ++ ap.ext ++ ap.s2 ! Nom ; -- comparison np in Nom
|
||||||
bigCN : CN -> Adjf => Number => Case => Str = \cn ->
|
bigCN : CN -> Adjf => Number => Case => Str = \cn ->
|
||||||
\\a,n,c => cn.s ! a ! n ! c ++ cn.adv ++ cn.ext ++ cn.rc ! n ;
|
\\a,n,c => cn.s ! a ! n ! c ++ cn.adv ++ cn.ext ++ cn.rc ! n ;
|
||||||
|
|
||||||
|
|||||||
@@ -26,11 +26,14 @@ concrete ExtendGer of Extend =
|
|||||||
(P = ParadigmsGer) in {
|
(P = ParadigmsGer) in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
GenNP np = {
|
GenNP np =
|
||||||
s,sp = \\gn,c => np.s ! False ! Gen ++ np.ext ++ np.rc ;
|
let tab : GenNum => Case => Str =
|
||||||
a = Strong ;
|
\\gn,c => np.s ! False ! Gen ++ np.ext ++ np.rc
|
||||||
isDefArt = False ;
|
in {s = \\_ => tab ;
|
||||||
delCardOne = False
|
sp = tab ;
|
||||||
|
a = Strong ;
|
||||||
|
isDefArt = False ;
|
||||||
|
delCardOne = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
EmptyRelSlash slash = {
|
EmptyRelSlash slash = {
|
||||||
@@ -164,6 +167,7 @@ concrete ExtendGer of Extend =
|
|||||||
let a = agrP3 Sg in {
|
let a = agrP3 Sg in {
|
||||||
s = \\af => (vp.nn ! a).p1 ++ (vp.nn ! a).p2 ++ (vp.nn ! a).p3 ++ vp.a2 ++ vp.adj
|
s = \\af => (vp.nn ! a).p1 ++ (vp.nn ! a).p2 ++ (vp.nn ! a).p3 ++ vp.a2 ++ vp.adj
|
||||||
++ vp.inf.inpl.p2 ++ (vp.inf.extr ! a) ++ vp.s.s ! VPastPart af ;
|
++ vp.inf.inpl.p2 ++ (vp.inf.extr ! a) ++ vp.s.s ! VPastPart af ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = <[],[]> ;
|
c = <[],[]> ;
|
||||||
ext = vp.ext
|
ext = vp.ext
|
||||||
@@ -177,6 +181,7 @@ concrete ExtendGer of Extend =
|
|||||||
++ vp.a2 ++ agent ++ vp.adj ++ vp.inf.inpl.p2
|
++ vp.a2 ++ agent ++ vp.adj ++ vp.inf.inpl.p2
|
||||||
++ vp.c2.s ! GPl -- junk if not TV
|
++ vp.c2.s ! GPl -- junk if not TV
|
||||||
++ vp.ext ++ (vp.inf.extr ! a) ++ vp.s.s ! VPastPart af ;
|
++ vp.ext ++ (vp.inf.extr ! a) ++ vp.s.s ! VPastPart af ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = <[],[]> ;
|
c = <[],[]> ;
|
||||||
ext = []
|
ext = []
|
||||||
@@ -291,6 +296,7 @@ concrete ExtendGer of Extend =
|
|||||||
compl = appPrep adj.c2 (rnp.s ! agrP3 Sg) ; -- we use a fixed agreement
|
compl = appPrep adj.c2 (rnp.s ! agrP3 Sg) ; -- we use a fixed agreement
|
||||||
in {
|
in {
|
||||||
s = adj.s ! Posit ;
|
s = adj.s ! Posit ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = case adj.c2.t of {isCase => <compl, []> ; _ => <[], compl>} ;
|
c = case adj.c2.t of {isCase => <compl, []> ; _ => <[], compl>} ;
|
||||||
ext = rnp.ext ++ rnp.rc
|
ext = rnp.ext ++ rnp.rc
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
|||||||
let a = agrP3 Sg in {
|
let a = agrP3 Sg in {
|
||||||
s = \\af => (vp.nn ! a).p1 ++ (vp.nn ! a).p2 ++ (vp.nn ! a).p3 ++ vp.a2 ++ vp.adj
|
s = \\af => (vp.nn ! a).p1 ++ (vp.nn ! a).p2 ++ (vp.nn ! a).p3 ++ vp.a2 ++ vp.adj
|
||||||
++ vp.inf.inpl.p2 ++ (vp.inf.extr ! a) ++ vp.s.s ! VPastPart af ;
|
++ vp.inf.inpl.p2 ++ (vp.inf.extr ! a) ++ vp.s.s ! VPastPart af ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = <[],[]> ;
|
c = <[],[]> ;
|
||||||
ext = vp.ext
|
ext = vp.ext
|
||||||
@@ -84,6 +85,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
|||||||
++ vp.a2 ++ agent ++ vp.adj ++ vp.inf.inpl.p2
|
++ vp.a2 ++ agent ++ vp.adj ++ vp.inf.inpl.p2
|
||||||
++ vp.c2.s ! GPl -- junk if not TV
|
++ vp.c2.s ! GPl -- junk if not TV
|
||||||
++ vp.ext ++ (vp.inf.extr ! a) ++ vp.s.s ! VPastPart af ;
|
++ vp.ext ++ (vp.inf.extr ! a) ++ vp.s.s ! VPastPart af ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = <[],[]> ;
|
c = <[],[]> ;
|
||||||
ext = []
|
ext = []
|
||||||
@@ -230,6 +232,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
|||||||
compl = appPrep adj.c2 (rnp.s ! agrP3 Sg) ; -- we use a fixed agreement
|
compl = appPrep adj.c2 (rnp.s ! agrP3 Sg) ; -- we use a fixed agreement
|
||||||
in {
|
in {
|
||||||
s = adj.s ! Posit ;
|
s = adj.s ! Posit ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = case adj.c2.t of {isCase => <compl, []> ; _ => <[], compl>} ;
|
c = case adj.c2.t of {isCase => <compl, []> ; _ => <[], compl>} ;
|
||||||
ext = rnp.ext ++ rnp.rc
|
ext = rnp.ext ++ rnp.rc
|
||||||
|
|||||||
@@ -27,11 +27,13 @@ oper
|
|||||||
|
|
||||||
-- e.g. das selbe
|
-- e.g. das selbe
|
||||||
mmkQuant : Quant -> A -> Quant = \q,a -> q ** {
|
mmkQuant : Quant -> A -> Quant = \q,a -> q ** {
|
||||||
s,sp = \\gn,c => q.s ! gn ! c ++ a.s ! Posit ! agrAdj q.a gn c
|
s = \\b,gn,c => q.s ! b ! gn ! c ++ a.s ! Posit ! agrAdj q.a gn c ;
|
||||||
|
sp = \\gn,c => q.s ! False ! gn ! c ++ a.s ! Posit ! agrAdj q.a gn c
|
||||||
} ;
|
} ;
|
||||||
-- e.g. derjenige
|
-- e.g. derjenige
|
||||||
mmbQuant : Quant -> A -> Quant = \q,a -> q ** {
|
mmbQuant : Quant -> A -> Quant = \q,a -> q ** {
|
||||||
s,sp = \\gn,c => q.s ! gn ! c + a.s ! Posit ! agrAdj q.a gn c
|
s = \\b,gn,c => q.s ! b ! gn ! c + a.s ! Posit ! agrAdj q.a gn c ;
|
||||||
|
sp = \\gn,c => q.s ! False ! gn ! c + a.s ! Posit ! agrAdj q.a gn c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,11 +71,6 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
dropDefArtSg : Number -> Bool -> (GenNum => Case => Str) -> (Bool => GenNum => Case => Str) =
|
|
||||||
\n,isDefArt,qnt -> case <n,isDefArt> of {
|
|
||||||
<Sg,True> => table{True => \\gn,c => [] ; False => qnt} ;
|
|
||||||
_ => \\b => qnt
|
|
||||||
} ;
|
|
||||||
einziger : AForm => Str = table{AMod gn c => "einzig" + adjEnding ! gn ! c ; _ => "einziges"} ;
|
einziger : AForm => Str = table{AMod gn c => "einzig" + adjEnding ! gn ! c ; _ => "einziges"} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
@@ -85,7 +80,6 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
|||||||
a = quant.a ;
|
a = quant.a ;
|
||||||
d = quant.isDefArt ;
|
d = quant.isDefArt ;
|
||||||
isCardOne = case n of {Sg => num.isNum ; _ => False} ;
|
isCardOne = case n of {Sg => num.isNum ; _ => False} ;
|
||||||
qunt : Bool => GenNum => Case => Str = dropDefArtSg n d quant.s ;
|
|
||||||
nums : AForm => Str = \\af => case af of {
|
nums : AForm => Str = \\af => case af of {
|
||||||
AMod (GSg g) c => case <quant.delCardOne,isCardOne> of {
|
AMod (GSg g) c => case <quant.delCardOne,isCardOne> of {
|
||||||
<True,True> => einziger ! af ; -- (ein,kein) einziger
|
<True,True> => einziger ! af ; -- (ein,kein) einziger
|
||||||
@@ -94,7 +88,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
|||||||
_ => num.s ! APred}
|
_ => num.s ! APred}
|
||||||
in {
|
in {
|
||||||
s,sp = \\b,g,c => let gn = gennum g n in
|
s,sp = \\b,g,c => let gn = gennum g n in
|
||||||
qunt ! b ! gn ! c ++ nums ! agrAdj a gn c ++ ord.s ! agrAdj a gn c ;
|
quant.s ! b ! gn ! c ++ nums ! agrAdj a gn c ++ ord.s ! agrAdj a gn c ;
|
||||||
n = n ;
|
n = n ;
|
||||||
a = a ;
|
a = a ;
|
||||||
isDef = case a of {Strong => False ; _ => True} ;
|
isDef = case a of {Strong => False ; _ => True} ;
|
||||||
@@ -107,9 +101,8 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
|||||||
a = quant.a ;
|
a = quant.a ;
|
||||||
d = quant.isDefArt ;
|
d = quant.isDefArt ;
|
||||||
isCardOne = case n of {Sg => num.isNum ; _ => False} ;
|
isCardOne = case n of {Sg => num.isNum ; _ => False} ;
|
||||||
quants = dropDefArtSg n d quant.s ;
|
|
||||||
quantsp : Bool => GenNum => Case => Str =
|
quantsp : Bool => GenNum => Case => Str =
|
||||||
dropDefArtSg n d (case num.isNum of {True => quant.s ; False => quant.sp}) ;
|
case num.isNum of {True => quant.s ; False => \\b => quant.sp} ;
|
||||||
nums : AForm => Str = \\af => case af of {
|
nums : AForm => Str = \\af => case af of {
|
||||||
AMod (GSg g) c => case <quant.delCardOne,isCardOne> of {
|
AMod (GSg g) c => case <quant.delCardOne,isCardOne> of {
|
||||||
<True,True> => einziger ! af ; -- (k)ein einziger, drop cardinal "ein" of num
|
<True,True> => einziger ! af ; -- (k)ein einziger, drop cardinal "ein" of num
|
||||||
@@ -119,7 +112,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
|||||||
APred => num.s ! APred}
|
APred => num.s ! APred}
|
||||||
in {
|
in {
|
||||||
s = \\b,g,c => let gn = gennum g n in
|
s = \\b,g,c => let gn = gennum g n in
|
||||||
quants ! b ! gn ! c ++ nums ! agrAdj a gn c ;
|
quant.s ! b ! gn ! c ++ nums ! agrAdj a gn c ;
|
||||||
sp = \\b,g,c => let gn = gennum g n in
|
sp = \\b,g,c => let gn = gennum g n in
|
||||||
quantsp ! b ! gn ! c ++ nums ! agrAdj a gn c ;
|
quantsp ! b ! gn ! c ++ nums ! agrAdj a gn c ;
|
||||||
n = n ;
|
n = n ;
|
||||||
@@ -129,8 +122,8 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
PossPron p = {
|
PossPron p = {
|
||||||
s = \\gn,c => p.s ! NPPoss gn c ; -- mein (dritter)
|
s = \\_,gn,c => p.s ! NPPoss gn c ; -- mein (dritter)
|
||||||
sp = \\gn,c => p.sp ! PossF gn c ; -- meiner
|
sp = \\gn,c => p.sp ! PossF gn c ; -- meiner
|
||||||
a = Mixed ;
|
a = Mixed ;
|
||||||
isDefArt = False ;
|
isDefArt = False ;
|
||||||
delCardOne = False ;
|
delCardOne = False ;
|
||||||
@@ -166,7 +159,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
|||||||
af => n.s ! NOrd APred ++ BIND ++ a.s ! Superl ! af} -- drittbeste
|
af => n.s ! NOrd APred ++ BIND ++ a.s ! Superl ! af} -- drittbeste
|
||||||
} ;
|
} ;
|
||||||
DefArt = {
|
DefArt = {
|
||||||
s = \\gn,c => artDef ! gn ! c ;
|
s = \\b,gn,c => case <b,gn> of {<True,GSg _> => [] ; _ => artDef ! gn ! c} ;
|
||||||
sp = \\gn,c => case <gn,c> of {
|
sp = \\gn,c => case <gn,c> of {
|
||||||
<GSg Masc,Gen> => "dessen" ;
|
<GSg Masc,Gen> => "dessen" ;
|
||||||
<GSg Fem, Gen> => "derer" ;
|
<GSg Fem, Gen> => "derer" ;
|
||||||
@@ -180,8 +173,8 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
IndefArt = {
|
IndefArt = {
|
||||||
s = table {GSg g => \\c => "ein" + pronEnding ! (GSg g) ! c ;
|
s = \\_ => table {GSg g => \\c => "ein" + pronEnding ! (GSg g) ! c ;
|
||||||
GPl => \\c => []} ;
|
GPl => \\c => []} ;
|
||||||
sp = table {GSg g => \\c => "ein" + detEnding ! (GSg g) ! c ;
|
sp = table {GSg g => \\c => "ein" + detEnding ! (GSg g) ! c ;
|
||||||
GPl => caselist "einige" "einige" "einigen" "einiger"} ;
|
GPl => caselist "einige" "einige" "einigen" "einiger"} ;
|
||||||
a = MixedStrong ; -- Sg Mixed, Pl Strong
|
a = MixedStrong ; -- Sg Mixed, Pl Strong
|
||||||
@@ -233,10 +226,12 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
|||||||
let
|
let
|
||||||
g = cn.g
|
g = cn.g
|
||||||
in cn ** {
|
in cn ** {
|
||||||
s = \\a,n,c =>
|
s = case ap.isPre of { -- HL 1/2023 False only for ap = SentAP ap' sc
|
||||||
preOrPost ap.isPre
|
True => \\a,n,c => -- besserer cn als a.s2 [instead: cn, besser als a.s2,]
|
||||||
(ap.c.p1 ++ ap.c.p2 ++ ap.s ! agrAdj a (gennum g n) c)
|
(ap.c.p1 ++ ap.c.p2 ++ ap.s ! agrAdj a (gennum g n) c)
|
||||||
(cn.s ! a ! n ! c) ++ ap.ext ; -- comparison part of ap HL 11/2023;
|
++ (cn.s ! a ! n ! c) ++ ap.s2 ! c ++ ap.ext ;
|
||||||
|
False => \\a,n,c => cn.s ! a ! n ! c ++ -- postnominal ap with sc
|
||||||
|
embedInCommas (ap.c.p1 ++ ap.c.p2 ++ ap.s ! APred ++ ap.s2 ! c ++ ap.ext)} ;
|
||||||
g = g
|
g = g
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -103,17 +103,18 @@ concrete StructuralGer of Structural = CatGer **
|
|||||||
} ;
|
} ;
|
||||||
something_NP = nameNounPhrase Neutr {s = \\_ => "etwas"} ;
|
something_NP = nameNounPhrase Neutr {s = \\_ => "etwas"} ;
|
||||||
somewhere_Adv = ss "irgendwo" ;
|
somewhere_Adv = ss "irgendwo" ;
|
||||||
that_Quant = {
|
that_Quant = let jener : GenNum => Case => Str = \\gn,c => "jen" + detEnding ! gn ! c
|
||||||
s,sp = \\gn,c => "jen" + detEnding ! gn ! c ; a = Weak ; isDefArt,delCardOne = False} ;
|
in {s = \\_ => jener ; sp = jener ; a = Weak ; isDefArt,delCardOne = False} ;
|
||||||
---b that_NP = nameNounPhrase Neutr {s = caselist "das" "das" "dem" "dessen"} ; ----
|
---b that_NP = nameNounPhrase Neutr {s = caselist "das" "das" "dem" "dessen"} ; ----
|
||||||
there_Adv = ss "da" ; --- no variants in the rgl | ss "dort" ;
|
there_Adv = ss "da" ; --- no variants in the rgl | ss "dort" ;
|
||||||
there7to_Adv = ss "dahin" ;
|
there7to_Adv = ss "dahin" ;
|
||||||
there7from_Adv = ss ["daher"] ;
|
there7from_Adv = ss ["daher"] ;
|
||||||
therefore_PConj = ss "deshalb" ;
|
therefore_PConj = ss "deshalb" ;
|
||||||
---b these_NP = {s = caselist "diese" "diese" "diesen" "dieser" ; a = agrP3 Pl} ;
|
---b these_NP = {s = caselist "diese" "diese" "diesen" "dieser" ; a = agrP3 Pl} ;
|
||||||
|
|
||||||
they_Pron = mkPronPers "sie" "sie" "ihnen" "ihrer" "ihr" Fem Pl P3 ;
|
they_Pron = mkPronPers "sie" "sie" "ihnen" "ihrer" "ihr" Fem Pl P3 ;
|
||||||
this_Quant = {
|
this_Quant = let dieser : GenNum => Case => Str = \\gn,c => "dies" + detEnding ! gn ! c
|
||||||
s,sp = \\gn,c => "dies" + detEnding ! gn ! c ; a = Weak ; isDefArt, delCardOne = False} ;
|
in {s = \\_ => dieser ; sp = dieser ; a = Weak ; isDefArt, delCardOne = False} ;
|
||||||
---b this_NP = nameNounPhrase Neutr {s = caselist "dies" "dies" "diesem" "dieses"} ; ----
|
---b this_NP = nameNounPhrase Neutr {s = caselist "dies" "dies" "diesem" "dieses"} ; ----
|
||||||
---b those_NP = {s = caselist "jene" "jene" "jenen" "jener" ; a = agrP3 Pl} ;
|
---b those_NP = {s = caselist "jene" "jene" "jenen" "jener" ; a = agrP3 Pl} ;
|
||||||
through_Prep = mkPrep "durch" P.accusative ;
|
through_Prep = mkPrep "durch" P.accusative ;
|
||||||
@@ -148,8 +149,8 @@ concrete StructuralGer of Structural = CatGer **
|
|||||||
|
|
||||||
not_Predet = {s = \\_,_,_ => "nicht" ; c = noCase ; a = PAgNone} ;
|
not_Predet = {s = \\_,_,_ => "nicht" ; c = noCase ; a = PAgNone} ;
|
||||||
no_Quant = {
|
no_Quant = {
|
||||||
s = table {GSg g => \\c => "kein" + pronEnding ! GSg g ! c ;
|
s = \\_ => table {GSg g => \\c => "kein" + pronEnding ! GSg g ! c ;
|
||||||
GPl => \\c => "kein" + detEnding ! GPl ! c} ;
|
GPl => \\c => "kein" + detEnding ! GPl ! c} ;
|
||||||
sp = \\gn,c => "kein" + detEnding ! gn ! c ;
|
sp = \\gn,c => "kein" + detEnding ! gn ! c ;
|
||||||
a = Mixed ; isDefArt = False ; delCardOne = True} ; -- HL kein+ein(er) => kein(er)
|
a = Mixed ; isDefArt = False ; delCardOne = True} ; -- HL kein+ein(er) => kein(er)
|
||||||
if_then_Conj = {s1 = "wenn" ; s2 = "dann" ; n = Sg ; lock_Conj = <>} ;
|
if_then_Conj = {s1 = "wenn" ; s2 = "dann" ; n = Sg ; lock_Conj = <>} ;
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in {
|
|||||||
insertInf inf vps) ** {c2 = v.c2 ; objCtrl = v.objCtrl} ;
|
insertInf inf vps) ** {c2 = v.c2 ; objCtrl = v.objCtrl} ;
|
||||||
|
|
||||||
SlashV2A v ap =
|
SlashV2A v ap =
|
||||||
insertAdj (ap.s ! APred) ap.c ap.ext (predV v) ** {c2 = v.c2; objCtrl = False} ;
|
insertAdj (ap.s ! APred ++ ap.s2 ! Nom) ap.c ap.ext (predV v) ** {c2 = v.c2; objCtrl = False} ;
|
||||||
|
|
||||||
ComplSlash vps np =
|
ComplSlash vps np =
|
||||||
-- IL 24/04/2018 force reflexive in the VPSlash to take the agreement of np.
|
-- IL 24/04/2018 force reflexive in the VPSlash to take the agreement of np.
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ concrete TestLangGer of TestLang =
|
|||||||
s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++
|
s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++
|
||||||
(vp.nn ! agrP3 Sg).p3 ++ (vp.nn ! agrP3 Sg).p4 ++ vp.adj ++ vp.a2
|
(vp.nn ! agrP3 Sg).p3 ++ (vp.nn ! agrP3 Sg).p4 ++ vp.adj ++ vp.a2
|
||||||
++ vp.inf.inpl.p2 ++ vp.s.s ! VPastPart af ;
|
++ vp.inf.inpl.p2 ++ vp.s.s ! VPastPart af ;
|
||||||
|
s2 = \\_ => [] ;
|
||||||
isPre = True ;
|
isPre = True ;
|
||||||
c = <[],[]> ;
|
c = <[],[]> ;
|
||||||
adj = [] ;
|
adj = [] ;
|
||||||
@@ -183,7 +184,7 @@ gr -tr (PredVP (UsePron ?) (ComplSlash (SlashV2V lassen_V2V (ReflVP (SlashV2a wa
|
|||||||
s = \\m,t,a,p =>
|
s = \\m,t,a,p =>
|
||||||
let
|
let
|
||||||
cls = slash.s ! m ! t ! a ! p ;
|
cls = slash.s ! m ! t ! a ! p ;
|
||||||
who = appPrepC slash.c2 ip.s ;
|
who = appPrep slash.c2 ip.s ;
|
||||||
in table {
|
in table {
|
||||||
QDir => who ++ cls ! Inv ! (RGenNum gn);
|
QDir => who ++ cls ! Inv ! (RGenNum gn);
|
||||||
QIndir => who ++ cls ! Sub ! (RGenNum gn)
|
QIndir => who ++ cls ! Sub ! (RGenNum gn)
|
||||||
@@ -201,10 +202,10 @@ gr -tr (PredVP (UsePron ?) (ComplSlash (SlashV2V lassen_V2V (ReflVP (SlashV2a wa
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
SlashVS np vs slash =
|
SlashVS np vs slash =
|
||||||
let subj = mkSubj np PrepNom ;
|
let subj = mkSubject np PrepNom ;
|
||||||
vps = insertExtrapos (conjThat ++ slash.s ! Sub) (predV vs)
|
vps = insertExtrapos (conjThat ++ slash.s ! Sub) (predV vs)
|
||||||
** {c2 = slash.c2 ; objCtrl = False} -- default objCtrl guessed
|
** {c2 = slash.c2 ; objCtrl = False} -- default objCtrl guessed
|
||||||
in mkClSlash subj.p1 subj.p2 vps ;
|
in mkClSlash subj.s subj.a vps ;
|
||||||
|
|
||||||
UseSlash t p cl = {
|
UseSlash t p cl = {
|
||||||
s = \\o => t.s ++ p.s ++ cl.s ! t.m ! t.t ! t.a ! p.p ! o ! RSentence ;
|
s = \\o => t.s ++ p.s ++ cl.s ! t.m ! t.t ! t.a ! p.p ! o ! RSentence ;
|
||||||
@@ -213,9 +214,9 @@ gr -tr (PredVP (UsePron ?) (ComplSlash (SlashV2V lassen_V2V (ReflVP (SlashV2a wa
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
gnToAgr : RelGenNum -> Agr = \gn ->
|
gnToAgr : RelGenNum -> Agr = \gn ->
|
||||||
case gn of {RGenNum (GSg g) => Ag g Sg P3 ;
|
case gn of {RGenNum (GSg g) => AgSgP3 g ;
|
||||||
RGenNum GPl => Ag Neutr Pl P3 ;
|
RGenNum GPl => AgPl P3 ;
|
||||||
RSentence => Ag Neutr Sg P3} ;
|
RSentence => AgSgP3 Neutr} ;
|
||||||
|
|
||||||
|
|
||||||
mkClSlash : Str -> Agr -> ResGer.VPSlash -> ClauseSlash = \subj,agr,vp ->
|
mkClSlash : Str -> Agr -> ResGer.VPSlash -> ClauseSlash = \subj,agr,vp ->
|
||||||
@@ -227,7 +228,8 @@ gr -tr (PredVP (UsePron ?) (ComplSlash (SlashV2V lassen_V2V (ReflVP (SlashV2a wa
|
|||||||
Sub => True ; -- glue prefix to verb
|
Sub => True ; -- glue prefix to verb
|
||||||
_ => False
|
_ => False
|
||||||
} ;
|
} ;
|
||||||
verb = vps.s ! ord ! agr ! VPFinite m t a ;
|
vagr = agr2vagr agr ;
|
||||||
|
verb = vps.s ! ord ! vagr ! VPFinite m t a ;
|
||||||
haben = verb.inf2 ;
|
haben = verb.inf2 ;
|
||||||
neg = negation ! b ;
|
neg = negation ! b ;
|
||||||
ag : Agr = case vp.objCtrl of {True => gnToAgr gn ; _ => agr} ;
|
ag : Agr = case vp.objCtrl of {True => gnToAgr gn ; _ => agr} ;
|
||||||
|
|||||||
@@ -51,8 +51,6 @@ lin
|
|||||||
kaufen_bei_fuer_V4 = dirV4 (irregV "buy" "bought" "bought") (mkPrep "from") (mkPrep "for") ;
|
kaufen_bei_fuer_V4 = dirV4 (irregV "buy" "bought" "bought") (mkPrep "from") (mkPrep "for") ;
|
||||||
mieten_von_fuer_V4 = dirV4 (regV "rent") (mkPrep "from") (mkPrep "for") ;
|
mieten_von_fuer_V4 = dirV4 (regV "rent") (mkPrep "from") (mkPrep "for") ;
|
||||||
|
|
||||||
neugierig_auf_A2 = mkA2 (regA "curious") (mkPrep "about") ;
|
|
||||||
|
|
||||||
wagen_VV = mkVV (regV "dare") ; -- typ=VVInf
|
wagen_VV = mkVV (regV "dare") ; -- typ=VVInf
|
||||||
versuchen_VV = mkVV (irregV "try" "tried" "tried") ; -- typ=VVInf
|
versuchen_VV = mkVV (irregV "try" "tried" "tried") ; -- typ=VVInf
|
||||||
helfen_V2V = defaultV2V (regV "help") ;
|
helfen_V2V = defaultV2V (regV "help") ;
|
||||||
@@ -62,4 +60,10 @@ lin
|
|||||||
-- aci verb:
|
-- aci verb:
|
||||||
sehen_V2V = mkV2V (I.see_V) ;
|
sehen_V2V = mkV2V (I.see_V) ;
|
||||||
hoeren_V2V = mkV2V (I.hear_V) ;
|
hoeren_V2V = mkV2V (I.hear_V) ;
|
||||||
|
|
||||||
|
-- Adjectives
|
||||||
|
|
||||||
|
neugierig_auf_A2 = mkA2 (regA "curious") (mkPrep "about") ;
|
||||||
|
treu_A2 = mkA2 (compoundA (mkA "faithful")) (mkPrep "to") ;
|
||||||
|
stolz_A2 = mkA2 (mkA "proud" "prouder") (mkPrep "of") ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,8 +55,6 @@ lin
|
|||||||
kaufen_bei_fuer_V4 = dirV4 (regV "kaufen") bei_Prep fuer_Prep ;
|
kaufen_bei_fuer_V4 = dirV4 (regV "kaufen") bei_Prep fuer_Prep ;
|
||||||
mieten_von_fuer_V4 = dirV4 (regV "mieten") von_Prep fuer_Prep ;
|
mieten_von_fuer_V4 = dirV4 (regV "mieten") von_Prep fuer_Prep ;
|
||||||
|
|
||||||
neugierig_auf_A2 = mkA2 (mk3A "neugierig" "neugieriger" "neugierigste") (mkPrep "auf" accusative) ;
|
|
||||||
|
|
||||||
-- verbs with infinitival object (non-modal):
|
-- verbs with infinitival object (non-modal):
|
||||||
wagen_VV = mkVV (regV "wagen") ;
|
wagen_VV = mkVV (regV "wagen") ;
|
||||||
versuchen_VV = mkVV (irregV "versuchen" "versucht" "versuchte" "versuchte" "versucht") ;
|
versuchen_VV = mkVV (irregV "versuchen" "versucht" "versuchte" "versuchte" "versucht") ;
|
||||||
@@ -72,4 +70,11 @@ lin
|
|||||||
-- aci verb:
|
-- aci verb:
|
||||||
sehen_V2V = auxV2V (irregV "sehen" "sieht" "sah" "sähe" "gesehen") accPrep ;
|
sehen_V2V = auxV2V (irregV "sehen" "sieht" "sah" "sähe" "gesehen") accPrep ;
|
||||||
hoeren_V2V = auxV2V (regV "hören") accPrep ;
|
hoeren_V2V = auxV2V (regV "hören") accPrep ;
|
||||||
|
|
||||||
|
-- Adjectives
|
||||||
|
|
||||||
|
neugierig_auf_A2 = mkA2 (mk3A "neugierig" "neugieriger" "neugierigste") (mkPrep "auf" accusative) ;
|
||||||
|
treu_A2 = mkA2 (mk3A "treu" "treuer" "treueste") datPrep ;
|
||||||
|
stolz_A2 = mkA2 (mk3A "stolz" "stolzer" "stolzeste") (mkPrep "auf" accusative) ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,6 @@ fun
|
|||||||
entschuldigen_bei_fuer_rV3 : V3 ;
|
entschuldigen_bei_fuer_rV3 : V3 ;
|
||||||
raechen_am_fuer_rV3 : V3 ;
|
raechen_am_fuer_rV3 : V3 ;
|
||||||
|
|
||||||
neugierig_auf_A2 : A2 ;
|
|
||||||
|
|
||||||
wagen_VV : VV ;
|
wagen_VV : VV ;
|
||||||
versuchen_VV : VV ;
|
versuchen_VV : VV ;
|
||||||
|
|
||||||
@@ -43,4 +41,10 @@ fun
|
|||||||
kaufen_bei_fuer_V4 : V4 ;
|
kaufen_bei_fuer_V4 : V4 ;
|
||||||
mieten_von_fuer_V4 : V4 ;
|
mieten_von_fuer_V4 : V4 ;
|
||||||
|
|
||||||
|
-- Adjectives
|
||||||
|
|
||||||
|
neugierig_auf_A2 : A2 ;
|
||||||
|
treu_A2 : A2 ; -- Ger: dative complement
|
||||||
|
stolz_A2 : A2 ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user