mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-28 04:16:30 -06:00
The glueing of preposition with definite article is now implemented using
NP.s : Bool => Case => Str and NP.w = WDefArt
np.s ! False : Case => Str is the ordinary paradigm; if the np has a
definite article, np.w = WDefArt, and np.s ! True : Case => Str is the
paradigm with definite article omitted, if np.a = Ag g Sg p.
Prepositions now have type
Prep = {s : GenNum => Str ; s2 :Str ; c : Case ; isPrep : PrepType},
and |Prep| = |Case|*|isPrep| = 4 * 3 = 12, independent of |PCase| >= 18.
A preposition p with p.isPrep = isPrepDefArt has in p.s ! (GSg g) : Str
the preposition glued with definite article of a following np in singular.
The modified linearization categories for Prep, NP, Det, DAP, Quant,
Predet are no longer Prep', NP' etc., but Prep, NP etc. in CatGer.
They are now also used in gf-rgl/tests/german/TestLangGer.gf.
The previous auxiliary files abstract/Adjective'.gf etc. are removed.
BUT: for complexitiy reasons,
- the glueing is omitted in SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash,
- SlashVP : NP -> SlashVP -> ClSlash (in SentenceGer and TestLanGer)
are commented out.
SlashVP causes grammar compilation to crash due to memory limits, probably
because mkClause and its modification mkClSlash are too detailed.
This commit is contained in:
+11
-11
@@ -1,4 +1,4 @@
|
||||
concrete ExtraGer of ExtraGerAbs' = CatGer **
|
||||
concrete ExtraGer of ExtraGerAbs = CatGer **
|
||||
open ResGer, Coordination, Prelude, IrregGer, (P = ParadigmsGer) in {
|
||||
flags coding=utf8 ;
|
||||
|
||||
@@ -49,7 +49,7 @@ 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 ;
|
||||
appPrep slash.c2 (relPron ! gn) ++ slash.s ! m ! t ! a ! p ! Sub ;
|
||||
c = slash.c2.c
|
||||
} ;
|
||||
|
||||
@@ -67,7 +67,7 @@ concrete ExtraGer of ExtraGerAbs' = CatGer **
|
||||
Pass3V3 v = -- HL 7/19
|
||||
let bekommenPass : Verb = P.habenV (P.irregV "bekommen" "bekommt" "bekam" "bekäme" "bekommen")
|
||||
in insertObj (\\_ => (v.s ! VPastPart APred)) (predV bekommenPass) **
|
||||
{ c1 = PrepNom' ; c2 = v.c2 ; objCtrl = False } ;
|
||||
{ c1 = PrepNom ; c2 = v.c2 ; objCtrl = False } ;
|
||||
|
||||
PastPartAP vp =
|
||||
let a = agrP3 Sg in {
|
||||
@@ -80,7 +80,7 @@ concrete ExtraGer of ExtraGerAbs' = CatGer **
|
||||
|
||||
PastPartAgentAP vp np =
|
||||
let a = agrP3 Sg ;
|
||||
agent = appPrepNP' P.von_Prep np
|
||||
agent = appPrepNP P.von_Prep np
|
||||
in {
|
||||
s = \\af => (vp.nn ! a).p1 ++ (vp.nn ! a).p2 ++ (vp.nn ! a).p3
|
||||
++ vp.a2 ++ agent ++ vp.inf.inpl.p2
|
||||
@@ -101,7 +101,7 @@ concrete ExtraGer of ExtraGerAbs' = CatGer **
|
||||
|
||||
PredVPS np vpi =
|
||||
let
|
||||
subj = np.s ! False ! Nom ++ bigNP' np ;
|
||||
subj = np.s ! False ! Nom ++ bigNP np ;
|
||||
agr = np.a ;
|
||||
in {
|
||||
s = \\o =>
|
||||
@@ -175,7 +175,7 @@ concrete ExtraGer of ExtraGerAbs' = CatGer **
|
||||
RNP = {s : Agr => Case => Str} ;
|
||||
lin
|
||||
ReflRNP vps rnp =
|
||||
insertObj (\\a => appPrep' vps.c2 (rnp.s ! a)) vps ;
|
||||
insertObj (\\a => appPrep vps.c2 (rnp.s ! a)) vps ;
|
||||
|
||||
ReflPoss num cn = {s = \\a,c => num.s ! cn.g ! c ++ possPron a num.n cn.g c ++ cn.s ! adjfCase Strong c ! num.n ! c} ;
|
||||
|
||||
@@ -202,7 +202,7 @@ concrete ExtraGer of ExtraGerAbs' = CatGer **
|
||||
|
||||
lin
|
||||
FocObj np cl =
|
||||
let n = appPrepNP' cl.c2 np in mkFoc n cl ;
|
||||
let n = appPrepNP cl.c2 np in mkFoc n cl ;
|
||||
|
||||
FocAdv adv cl = mkFoc adv.s cl ;
|
||||
|
||||
@@ -214,7 +214,7 @@ concrete ExtraGer of ExtraGerAbs' = CatGer **
|
||||
-- "treu ist sie ihm"
|
||||
-- "froh ist sie dass er da ist"
|
||||
-- "stolz ist sie auf ihn"
|
||||
subj = mkSubj' np vp.c1 ;
|
||||
subj = mkSubj np vp.c1 ;
|
||||
cl = mkClause subj.p1 subj.p2 vp
|
||||
in mkFoc adj cl ;
|
||||
|
||||
@@ -239,7 +239,7 @@ concrete ExtraGer of ExtraGerAbs' = CatGer **
|
||||
-- "es wird gelacht"; generating formal sentences
|
||||
|
||||
lincat
|
||||
FClause = ResGer.VP ** {subj : ResGer.NP'} ;
|
||||
FClause = ResGer.VP ** {subj : ResGer.NP} ;
|
||||
|
||||
lin
|
||||
VPass v =
|
||||
@@ -250,7 +250,7 @@ concrete ExtraGer of ExtraGerAbs' = CatGer **
|
||||
AdvFor adv fcl = fcl ** {a2 = adv.s} ;
|
||||
|
||||
FtoCl cl =
|
||||
let subj = mkSubj' cl.subj cl.c1
|
||||
let subj = mkSubj cl.subj cl.c1
|
||||
in DisToCl subj.p1 subj.p2 cl ;
|
||||
|
||||
|
||||
@@ -259,7 +259,7 @@ concrete ExtraGer of ExtraGerAbs' = CatGer **
|
||||
mkFoc : Str -> Cl -> Foc = \focus, cl ->
|
||||
lin Foc {s = \\m,t,a,p => focus ++ cl.s ! m ! t ! a ! p ! Inv} ;
|
||||
|
||||
esSubj : CatGer.NP' = lin NP' {
|
||||
esSubj : CatGer.NP = lin NP {
|
||||
s = \\_,_ => "es" ;
|
||||
rc, ext = [] ;
|
||||
a = Ag Neutr Sg P3 ;
|
||||
|
||||
Reference in New Issue
Block a user