forked from GitHub/gf-rgl
(Ger) Made AP a split phrase with movable comparison NP
This commit is contained in:
@@ -3,29 +3,28 @@ concrete AdjectiveGer of Adjective = CatGer ** open ResGer, Prelude in {
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
PositA a = {
|
||||
s = a.s ! Posit ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = <[],[]> ;
|
||||
ext = []
|
||||
} ;
|
||||
ComparA a np =
|
||||
let nps = np.s ! False ! Nom ++ bigNP np
|
||||
in {
|
||||
s = \\af => a.s ! Compar ! af ++ conjThan ++ nps ;
|
||||
ComparA a np = {
|
||||
s = \\af => a.s ! Compar ! af ;
|
||||
s2 = \\c => conjThan ++ np.s ! False ! c ++ np.ext ++ np.rc ;
|
||||
isPre = True ;
|
||||
c = <[],[]> ;
|
||||
ext = []
|
||||
} ;
|
||||
CAdvAP ad ap np =
|
||||
let nps = np.s ! False ! Nom ++ bigNP np in
|
||||
ap ** {
|
||||
s = \\af => ad.s ++ ap.s ! af ++ ad.p ++ nps ;
|
||||
isPre = False
|
||||
CAdvAP adv ap np = ap ** {
|
||||
s = \\af => adv.s ++ ap.s ! af ;
|
||||
s2 = \\c => adv.p ++ np.s ! False ! c ++ np.ext ++ np.rc ;
|
||||
isPre = True -- HL 1/2023
|
||||
} ;
|
||||
UseComparA a = {
|
||||
s = \\af => a.s ! Compar ! af ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = <[],[]> ;
|
||||
ext = []
|
||||
@@ -33,6 +32,7 @@ concrete AdjectiveGer of Adjective = CatGer ** open ResGer, Prelude in {
|
||||
|
||||
AdjOrd a = {
|
||||
s = a.s ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = <[],[]> ;
|
||||
ext = []
|
||||
@@ -41,25 +41,24 @@ concrete AdjectiveGer of Adjective = CatGer ** open ResGer, Prelude in {
|
||||
-- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||
|
||||
ComplA2 a np =
|
||||
let CExt = case a.c2.t of {
|
||||
isCase => <appPrepNP a.c2 np, []> ;
|
||||
_ => <[], appPrepNP a.c2 np> }
|
||||
let
|
||||
obj = appPrepNP a.c2 np
|
||||
in {
|
||||
s = a.s ! Posit ;
|
||||
isPre = True ;
|
||||
c = CExt ;
|
||||
ext = []
|
||||
s = a.s ! Posit ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = case a.c2.t of {isCase => <obj, []> ; _ => <[], obj>} ;
|
||||
ext = []
|
||||
} ;
|
||||
|
||||
ReflA2 a =
|
||||
let
|
||||
compl = appPrep a.c2 (reflPron ! agrP3 Sg) ;
|
||||
CExt = case a.c2.t of
|
||||
{isCase => <compl, []> ; _ => <[], compl> }
|
||||
obj = appPrep a.c2 (reflPron ! agrP3 Sg) ;
|
||||
in {
|
||||
s = a.s ! Posit ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = CExt ;
|
||||
c = case a.c2.t of {isCase => <obj, []> ; _ => <[], obj>} ;
|
||||
ext = []
|
||||
} ;
|
||||
|
||||
@@ -72,9 +71,12 @@ concrete AdjectiveGer of Adjective = CatGer ** open ResGer, Prelude in {
|
||||
|
||||
UseA2 a = {
|
||||
s = a.s ! Posit ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = <[],[]> ;
|
||||
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)
|
||||
|
||||
AP = {s : AForm => Str ; isPre : Bool ; c: Str * Str ; ext : Str} ;
|
||||
-- ich bin [c1 ihm] treu
|
||||
-- du bist so klug gewesen [ext ihn zu lesen]
|
||||
-- ich bin stolz [c2 auf dich]
|
||||
AP = {
|
||||
s : AForm => Str ;
|
||||
s2 : Case => Str ; -- comparison np, e.g. [s kleineres] (Tier) [s2 als den Hund] HL 1/34
|
||||
isPre : Bool ; -- pre-nominal as attribute, e.g. False with sentential complement
|
||||
c: Str * Str ; -- pp,np-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
|
||||
|
||||
@@ -127,7 +130,7 @@ concrete CatGer of Cat =
|
||||
VP = \vp -> useInfVP False vp ;
|
||||
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 ;
|
||||
|
||||
V, VS, VQ, VA = \v -> useInfVP False (predV v) ;
|
||||
|
||||
@@ -20,6 +20,7 @@ concrete ConjunctionGer of Conjunction =
|
||||
in (conjAgr agr ss.a) }) ;
|
||||
|
||||
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} ;
|
||||
|
||||
ConjRS conj ss = conjunctDistrTable RelGenNum conj ss ** {
|
||||
@@ -87,8 +88,8 @@ concrete ConjunctionGer of Conjunction =
|
||||
[CN] = {s1,s2 : Adjf => Number => Case => Str ; g : Gender} ;
|
||||
|
||||
oper
|
||||
bigAP : AP -> AForm => Str = \ap ->
|
||||
\\a => ap.c.p1 ++ ap.s ! a ++ ap.c.p2 ++ ap.ext;
|
||||
bigAP : AP -> AForm => Str = \ap -> -- HL 1/23: not always ok:
|
||||
\\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 ->
|
||||
\\a,n,c => cn.s ! a ! n ! c ++ cn.adv ++ cn.ext ++ cn.rc ! n ;
|
||||
|
||||
|
||||
@@ -164,6 +164,7 @@ concrete ExtendGer of Extend =
|
||||
let a = agrP3 Sg in {
|
||||
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 ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = <[],[]> ;
|
||||
ext = vp.ext
|
||||
@@ -177,6 +178,7 @@ concrete ExtendGer of Extend =
|
||||
++ vp.a2 ++ agent ++ vp.adj ++ vp.inf.inpl.p2
|
||||
++ vp.c2.s ! GPl -- junk if not TV
|
||||
++ vp.ext ++ (vp.inf.extr ! a) ++ vp.s.s ! VPastPart af ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = <[],[]> ;
|
||||
ext = []
|
||||
@@ -291,6 +293,7 @@ concrete ExtendGer of Extend =
|
||||
compl = appPrep adj.c2 (rnp.s ! agrP3 Sg) ; -- we use a fixed agreement
|
||||
in {
|
||||
s = adj.s ! Posit ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = case adj.c2.t of {isCase => <compl, []> ; _ => <[], compl>} ;
|
||||
ext = rnp.ext ++ rnp.rc
|
||||
|
||||
@@ -71,6 +71,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
let a = agrP3 Sg in {
|
||||
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 ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = <[],[]> ;
|
||||
ext = vp.ext
|
||||
@@ -84,6 +85,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
++ vp.a2 ++ agent ++ vp.adj ++ vp.inf.inpl.p2
|
||||
++ vp.c2.s ! GPl -- junk if not TV
|
||||
++ vp.ext ++ (vp.inf.extr ! a) ++ vp.s.s ! VPastPart af ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = <[],[]> ;
|
||||
ext = []
|
||||
@@ -230,6 +232,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
compl = appPrep adj.c2 (rnp.s ! agrP3 Sg) ; -- we use a fixed agreement
|
||||
in {
|
||||
s = adj.s ! Posit ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
c = case adj.c2.t of {isCase => <compl, []> ; _ => <[], compl>} ;
|
||||
ext = rnp.ext ++ rnp.rc
|
||||
|
||||
@@ -233,10 +233,12 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
||||
let
|
||||
g = cn.g
|
||||
in cn ** {
|
||||
s = \\a,n,c =>
|
||||
preOrPost ap.isPre
|
||||
s = case ap.isPre of { -- HL 1/2023 False only for ap = SentAP ap' sc
|
||||
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)
|
||||
(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
|
||||
} ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user