diff --git a/lib/src/abstract/Extra.gf b/lib/src/abstract/Extra.gf index 1dd1f428b..1e41915f6 100644 --- a/lib/src/abstract/Extra.gf +++ b/lib/src/abstract/Extra.gf @@ -78,6 +78,11 @@ abstract Extra = Cat ** { PassAgentVPSlash : VPSlash -> NP -> VP ; -- be begged by her to go +-- In many languages, the passives use past participles. + + PastPartAP : VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space + PastPartAgentAP : VPSlash -> NP -> AP ; -- (opportunity) lost by the company + -- publishing of the document NominalizeVPSlashNP : VPSlash -> NP -> NP ; diff --git a/lib/src/german/ExtraGer.gf b/lib/src/german/ExtraGer.gf index 212aa20b2..6d7642adc 100644 --- a/lib/src/german/ExtraGer.gf +++ b/lib/src/german/ExtraGer.gf @@ -57,10 +57,26 @@ concrete ExtraGer of ExtraGerAbs = CatGer ** c = (prepC slash.c2.c).c } ; - PassVPSlash vps = - insertInf (vps.s.s ! VPastPart APred) (predV werdenPass) ; - PassAgentVPSlash vps np = ---- "von" here, "durch" in StructuralGer - insertAdv (appPrep P.von_Prep np.s) (insertInf (vps.s.s ! VPastPart APred) (predV werdenPass)) ; + PassVPSlash vp = insertObj (\\_ => (PastPartAP (lin VPSlash vp)).s ! APred) (predV werdenPass) ; + + PassAgentVPSlash vp np = ---- "von" here, "durch" in StructuralGer + insertObj (\\_ => (PastPartAgentAP (lin VPSlash vp) (lin NP np)).s ! APred) (predV werdenPass) ; + + PastPartAP vp = { + s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ vp.a2 ++ vp.inf ++ + vp.c2.s ++ --- junk if not TV + vp.ext ++ vp.infExt ++ vp.s.s ! VPastPart af ; + isPre = True + } ; + + PastPartAgentAP vp np = + let agent = appPrep P.von_Prep np.s + in { + s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ vp.a2 ++ agent ++ vp.inf ++ + vp.c2.s ++ --- junk if not TV + vp.ext ++ vp.infExt ++ vp.s.s ! VPastPart af ; + isPre = True + } ; lincat VPS = {s : Order => Agr => Str} ; diff --git a/lib/src/german/ExtraGerAbs.gf b/lib/src/german/ExtraGerAbs.gf index 38774c02e..26496392e 100644 --- a/lib/src/german/ExtraGerAbs.gf +++ b/lib/src/german/ExtraGerAbs.gf @@ -1,7 +1,7 @@ abstract ExtraGerAbs = Extra [ VPI,ListVPI,BaseVPI,ConsVPI,MkVPI,ComplVPIVV,ConjVPI,ClSlash,RCl, VPS,ListVPS,BaseVPS,ConsVPS,ConjVPS,MkVPS,PredVPS,EmptyRelSlash, - VPSlash, PassVPSlash, PassAgentVPSlash, CompIQuant, + VPSlash, PassVPSlash, PassAgentVPSlash, CompIQuant, PastPartAP, PastPartAgentAP, Temp,Tense,Pol,S,NP,VV,VP,Conj,IAdv,IQuant,IComp,ICompAP,IAdvAdv,Adv,AP] ** { flags coding=utf8; fun