mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-10-28 10:13:17 -06:00
Reorganizing Ger by smaller prepositions and separating object cases from all (N, NP, etc.) cases (#474)
* (Ger) prepositions of contracting type, to base S,VV,QS-correlates and split adverbs on
* api/TryGer: omit mkAdv,mkIAdv,mkConj from ParadigmsGer, mkStructuralGer
* (Ger) sync with 'master' (undo changes unrelated to Preposition) up to few corrections
* (Ger) correct GPl to CPl in ExtraGer
* Returning to f4aae6a61a by ignoring prep-contraction
* (Ger) Prep contracting with DefArtSg, IP, RP
* (Ger) Corrected GPl to CPl in ExtraGer, ExtendGer
* (Ger) Simplified many lincats (Prep,V2,N2,A2,.. VPSlash,ClSlash) by reducing
Preposition from 4*3 = 12 parameters to 3*2 = 6 via
Prepositon : Type = {s : PrepForm => Str; s2:Str ; c : ObjCase ; t : PrepType} ;
param PrepType = isCase | isPrep ; -- isPrepDefArt
ObjCase = Acc | Dat | Gen ; Case = Nom | Obj ObjCase ;
This commit is contained in:
1 parent
dcc0f3f56c
commit
997a9adae3
15 files changed
+387
-252
No files matched your search
+14
-12
@@ -19,7 +19,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
PPzuAdv cn = {s = case cn.g of {
|
||||
Masc | Neutr => "zum" ;
|
||||
Fem => "zur"
|
||||
} ++ cn.s ! adjfCase Weak Dat ! Sg ! Dat
|
||||
} ++ cn.s ! adjfCase Weak (Obj Dat) ! Sg ! (Obj Dat)
|
||||
} ;
|
||||
|
||||
TImpfSubj = {s = [] ; t = Past ; m = MConjunct} ; --# notpresent
|
||||
@@ -49,8 +49,8 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
|
||||
EmptyRelSlash slash = {
|
||||
s = \\m,t,a,p,gn =>
|
||||
appPrep slash.c2 (relPron ! gn) ++ slash.s ! m ! t ! a ! p ! Sub ;
|
||||
c = slash.c2.c
|
||||
appPrep (toSPrep slash.c2) (relPron ! gn) ++ slash.s ! m ! t ! a ! p ! Sub ;
|
||||
c = Obj slash.c2.c
|
||||
} ;
|
||||
|
||||
PassVPSlash vp =
|
||||
@@ -83,7 +83,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
in {
|
||||
s = \\af => (vp.nn ! a).p1 ++ (vp.nn ! a).p2 ++ (vp.nn ! a).p3
|
||||
++ vp.a2 ++ agent ++ vp.adj ++ vp.inf.inpl.p2
|
||||
++ vp.c2.s ! GPl -- junk if not TV
|
||||
++ vp.c2.s ! CPl -- junk if not TV
|
||||
++ vp.ext ++ (vp.inf.extr ! a) ++ vp.s.s ! VPastPart af ;
|
||||
s2 = \\_ => [] ;
|
||||
isPre = True ;
|
||||
@@ -179,14 +179,16 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
RNPList = {s1,s2 : Agr => Case => Str} ;
|
||||
|
||||
linref
|
||||
RNP = \rnp -> rnp.s ! AgSgP3 Masc ! Acc ++ rnp.ext ++ rnp.rc ;
|
||||
RNP = \rnp -> rnp.s ! AgSgP3 Masc ! (Obj Acc) ++ rnp.ext ++ rnp.rc ;
|
||||
|
||||
lin
|
||||
ReflRNP vps rnp =
|
||||
insertObjReflNP rnp vps ;
|
||||
|
||||
ReflPron = { -- with personal pronoun nominative
|
||||
s = ResGer.reflPron ; rc,ext = [] ; isPron = True } ;
|
||||
s = \\a,c => case c of {Nom => ResGer.persPronNom ! a ;
|
||||
(Obj d) => ResGer.reflPron ! a ! d} ;
|
||||
rc,ext = [] ; isPron = True } ;
|
||||
|
||||
-- We might define ReflPron by the stronger reflPronSelf below, using "selbst"
|
||||
-- to distinguish personal pronoun from reflexive pronoun:
|
||||
@@ -212,24 +214,24 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
g = genderAgr a ;
|
||||
d = case pred.c.k of {NoCase => c ; PredCase k => k} ;
|
||||
in case rnp.isPron of {
|
||||
True => pred.s ! Pl ! Masc ! c ++ "von" ++ rnp.s ! a ! Dat ;
|
||||
True => pred.s ! Pl ! Masc ! c ++ "von" ++ rnp.s ! a ! (Obj Dat) ;
|
||||
_ => pred.s ! n ! genderAgr a ! c ++ pred.c.p ++ rnp.s ! a ! d} ;
|
||||
ext = rnp.ext ; rc = rnp.rc ;
|
||||
isPron = False} ;
|
||||
-- ok: alle von uns; die meisten von uns ; wrong: *nur von uns =/= nur wir
|
||||
|
||||
AdvRNP np prep rnp = {s = \\a,c => np.s ! False ! c
|
||||
++ appPrep prep (rnp.s ! a) ++ rnp.ext ++ rnp.rc ;
|
||||
++ appPrep (toSPrep prep) (rnp.s ! a) ++ rnp.ext ++ rnp.rc ;
|
||||
ext = np.ext ; rc = np.rc ; isPron = False} ;
|
||||
|
||||
AdvRAP ap prep rnp =
|
||||
let -- ? adv ++ ap.s ! af
|
||||
adv = appPrep prep (rnp.s ! agrP3 Sg) ; -- bug: fixed agreement
|
||||
adv = appPrep (toSPrep prep) (rnp.s ! agrP3 Sg) ; -- bug: fixed agreement
|
||||
in ap ** { s = \\af => ap.s ! af ++ adv } ; -- e.g. unknown in one's youth
|
||||
|
||||
ReflA2RNP adj rnp = -- would need AP.c : Agr => Str*Str, not AP.c : Str*Str
|
||||
let -- as we have no reflexive AP,
|
||||
compl = appPrep adj.c2 (rnp.s ! agrP3 Sg) ; -- we use a fixed agreement
|
||||
compl = appPrep (toSPrep adj.c2) (rnp.s ! agrP3 Sg) ; -- we use a fixed agreement
|
||||
in {
|
||||
s = adj.s ! Posit ;
|
||||
s2 = \\_ => [] ;
|
||||
@@ -261,7 +263,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
Cons_nr_RNP x xs = consrTable2 Agr Case comma {s = \\_,c => x.s ! False ! c ++ x.ext ++ x.rc} xs ;
|
||||
|
||||
oper
|
||||
reflPronSelf : Agr => Case => Str = \\a => \\c => reflPron ! a ! c ++ "selbst" ;
|
||||
reflPronSelf : Agr => ObjCase => Str = \\a => \\c => reflPron ! a ! c ++ "selbst" ;
|
||||
|
||||
reflPossPron : Agr -> Number -> Gender -> Case -> Str =
|
||||
let eigen = adjForms "eigen" "eigen" in
|
||||
@@ -273,7 +275,7 @@ concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
insertObjRNP : RNP -> Preposition -> ResGer.VPSlash -> ResGer.VP = -- HL 5/2022
|
||||
\rnp,prep,vp -> -- generalize ResGer.insertObjRefl
|
||||
let
|
||||
obj : Agr => Str = \\a => prep.s ! GPl ++ rnp.s ! a ! prep.c ++ rnp.ext ++ rnp.rc
|
||||
obj : Agr => Str = \\a => prep.s ! CPl ++ rnp.s ! a ! (Obj prep.c) ++ rnp.ext ++ rnp.rc
|
||||
in vp ** {
|
||||
nn = \\a =>
|
||||
let vpnn = vp.nn ! a in
|
||||
|
||||
Reference in new issue
Block a user