1
0
forked from GitHub/gf-rgl

Merge pull request #433 from hleiss/prepDefArt

Prep def art
This commit is contained in:
Inari Listenmaa
2023-08-21 11:16:29 +03:00
committed by GitHub
29 changed files with 745 additions and 559 deletions
+30 -17
View File
@@ -1,4 +1,5 @@
concrete CatGer of Cat =
--# -path=.:../abstract:../common:../prelude
concrete CatGer of Cat =
CommonX - [Tense,Temp] **
open ResGer, Prelude in {
@@ -41,7 +42,7 @@ concrete CatGer of Cat =
VPSlash = ResGer.VPSlash ;
Comp = {s : Agr => Str ; ext : Str} ;
-- Adjective
-- 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
@@ -57,20 +58,28 @@ concrete CatGer of Cat =
adv : Str ; -- Haus [adv auf dem Hügel]
g : Gender
} ;
NP = ResGer.NP ;
Pron = {s : NPForm => Str ; a : Agr} ;
Det, DAP = {s,sp : Gender => PCase => Str ; n : Number ; a : Adjf ; isDef : Bool} ;
Quant = {
s : Bool => Number => Gender => PCase => Str ; -- Bool is True if a cardinal number is present
sp : Bool => Number => Gender => PCase => Str ;
-- simplified PCase to Case in NP, Det, DAP, Quant, Predet HL 8/22
NP = ResGer.NP ;
Det = {s,sp : Bool => Gender => Case => Str ; -- True if DefArt is dropped HL 8/22
n : Number ; a : Adjf ; isDef, hasDefArt : Bool } ;
DAP = {s,sp : Gender => Case => Str ; n : Number ; a : Adjf ; isDef, hasDefArt : Bool } ;
-- HL 7/2022: first Bool = True if used to glue in Sg with preposition
-- second Bool is True if a cardinal number is present
Quant = {
s, sp : Bool => Bool => Number => Gender => Case => Str ;
a : Adjf ;
aPl : Adjf ; --- to distinguish "meine guten Freunde" / "gute Freunde"
hasDefArt : Bool
} ;
Predet = {
s : Number => Gender => PCase => Str ;
s : Number => Gender => Case => Str ;
c : {p : Str ; k : PredetCase} ;
a : PredetAgr -- if an agr is forced, e.g. jeder von uns ist ...
} ;
Num = {s : Gender => Case => Str ; n : Number ; isNum : Bool} ;
Card = {s : Gender => Case => Str ; n : Number} ;
Ord = {s : AForm => Str} ;
@@ -111,24 +120,28 @@ concrete CatGer of Cat =
Tense = {s : Str ; t : ResGer.Tense ; m : Mood} ;
linref
NP = \np -> np.s!(NPC Nom) ++ np.ext ++ np.rc ; -- HL 6/2019
NP = \np -> np.s ! False ! Nom ++ np.ext ++ np.rc ; -- HL 7/2022 Bool added
CN = \cn -> cn.s ! Strong ! Pl ! Nom ++ cn.adv ++ cn.ext ++ cn.rc ! Pl ;
SSlash = \ss -> ss.s ! Main ++ ss.c2.s ;
ClSlash = \cls -> cls.s ! MIndic ! Pres ! Simul ! Pos ! Main ++ cls.c2.s ;
SSlash = \ss -> ss.s ! Main ++ ss.c2.s ! GPl ;
ClSlash = \cls -> cls.s ! MIndic ! Pres ! Simul ! Pos ! Main ++ cls.c2.s ! GPl ;
VP = \vp -> useInfVP False vp ;
VPSlash = \vps -> useInfVP False vps ++ vps.c2.s ++ 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 ;
A2 = \a2 -> a2.s ! Posit ! APred ++ a2.c2.s ;
AP = \ap -> ap.c.p1 ++ ap.s ! APred ++ ap.c.p2 ++ ap.ext ;
A2 = \a2 -> a2.s ! Posit ! APred ++ a2.c2.s ! GPl ;
V, VS, VQ, VA = \v -> useInfVP False (predV v) ;
V2, V2A, V2Q, V2S = \v -> useInfVP False (predV v) ++ v.c2.s ;
V3 = \v -> useInfVP False (predV v) ++ v.c2.s ++ v.c3.s ;
V2, V2A, V2Q, V2S = \v -> useInfVP False (predV v) ++ v.c2.s ! GPl ;
V3 = \v -> useInfVP False (predV v) ++ v.c2.s ! GPl ++ v.c3.s ! GPl;
VV = \v -> useInfVP v.isAux (predVGen v.isAux v) ;
V2V = \v -> useInfVP v.isAux (predVGen v.isAux v) ++ v.c2.s ;
V2V = \v -> useInfVP v.isAux (predVGen v.isAux v) ++ v.c2.s ! GPl ;
Conj = \c -> c.s1 ++ c.s2 ;
Det = \det -> det.s ! False ! Masc ! Nom ;
Prep = \prep -> case prep.isPrep of {isPrepDefArt => prep.s ! GSg Masc ;
_ => prep.s ! GPl } ;
}