diff --git a/lib/src/english/ExtraEng.gf b/lib/src/english/ExtraEng.gf index c0905be0b..0ff9f7a94 100644 --- a/lib/src/english/ExtraEng.gf +++ b/lib/src/english/ExtraEng.gf @@ -13,8 +13,6 @@ concrete ExtraEng of ExtraEngAbs = CatEng ** a = RAg (agrP3 nu.n) } ; - ComplBareVS v s = insertObj (\\_ => s.s) (predV v) ; - StrandRelSlash rp slash = { s = \\t,a,p,ag => rp.s ! RC (fromAgr ag).g NPAcc ++ slash.s ! t ! a ! p ! ODir ++ slash.c2 ; @@ -161,7 +159,8 @@ lin ptp = be.ptp ; inf = be.inf ; ad = [] ; - s2 = \\a => vps.ad ++ ppt ++ vps.p ++ vps.s2 ! a ++ vps.c2 ---- order + s2 = \\a => vps.ad ++ ppt ++ vps.p ++ vps.s2 ! a ++ vps.c2 ; ---- order + ext = vps.ext } ; --- AR 7/3/2013 @@ -177,8 +176,8 @@ lin PurposeVP vp = {s = infVP VVInf vp Simul CPos (agrP3 Sg)} ; --- agr - ComplBareVS v s = insertObj (\\_ => s.s) (predV v) ; - SlashBareV2S v s = insertObjc (\\_ => s.s) (predVc v) ; + ComplBareVS v s = insertExtra s.s (predV v) ; + SlashBareV2S v s = insertExtrac s.s (predVc v) ; diff --git a/lib/src/english/ResEng.gf b/lib/src/english/ResEng.gf index fd2845f13..efbe6b22d 100644 --- a/lib/src/english/ResEng.gf +++ b/lib/src/english/ResEng.gf @@ -230,7 +230,8 @@ resource ResEng = ParamX ** open Prelude in { ptp : Str ; -- past participle inf : Str ; -- the infinitive form ; VerbForms would be the logical place ad : Str ; -- sentence adverb - s2 : Agr => Str -- complement + s2 : Agr => Str ; -- complement + ext : Str -- extreposed field such as S, QS, VP } ; @@ -271,6 +272,7 @@ resource ResEng = ParamX ** open Prelude in { ptp = verb.s ! VPPart ; inf = verb.s ! VInf ; ad = [] ; + ext = [] ; s2 = \\a => if_then_Str verb.isRefl (reflPron ! a) [] } ; @@ -309,6 +311,7 @@ resource ResEng = ParamX ** open Prelude in { ptp = verb.ppart ; inf = verb.inf ; ad = [] ; + ext = [] ; s2 = \\_ => [] } ; @@ -331,7 +334,8 @@ resource ResEng = ParamX ** open Prelude in { ptp = vp.ptp ; inf = vp.inf ; ad = vp.ad ; - s2 = \\a => vp.s2 ! a ++ obj ! a + s2 = \\a => vp.s2 ! a ++ obj ! a ; + ext = vp.ext } ; insertObjPre : (Agr => Str) -> VP -> VP = \obj,vp -> { @@ -341,11 +345,14 @@ resource ResEng = ParamX ** open Prelude in { ptp = vp.ptp ; inf = vp.inf ; ad = vp.ad ; - s2 = \\a => obj ! a ++ vp.s2 ! a + s2 = \\a => obj ! a ++ vp.s2 ! a ; + ext = vp.ext } ; insertObjc : (Agr => Str) -> SlashVP -> SlashVP = \obj,vp -> insertObj obj vp ** {c2 = vp.c2 ; gapInMiddle = vp.gapInMiddle} ; + insertExtrac : Str -> SlashVP -> SlashVP = \obj,vp -> + insertExtra obj vp ** {c2 = vp.c2 ; gapInMiddle = vp.gapInMiddle} ; --- AR 7/3/2013 move the particle after the object insertObjPartLast : (Agr => Str) -> VP -> VP = \obj,vp -> { @@ -355,7 +362,8 @@ resource ResEng = ParamX ** open Prelude in { ptp = vp.ptp ; inf = vp.inf ; ad = vp.ad ; - s2 = \\a => obj ! a ++ vp.s2 ! a ++ vp.p -- and put it here ; corresponds to insertObjPre + s2 = \\a => obj ! a ++ vp.s2 ! a ++ vp.p ; -- and put it here ; corresponds to insertObjPre + ext = vp.ext } ; --- The adverb should be before the finite verb. @@ -367,7 +375,19 @@ resource ResEng = ParamX ** open Prelude in { ptp = vp.ptp ; inf = vp.inf ; ad = vp.ad ++ ad ; - s2 = \\a => vp.s2 ! a + s2 = \\a => vp.s2 ! a ; + ext = vp.ext + } ; + + insertExtra : Str -> VP -> VP = \e,vp -> { + s = vp.s ; + p = vp.p ; + prp = vp.prp ; + ptp = vp.ptp ; + inf = vp.inf ; + ad = vp.ad ; + s2 = vp.s2 ; + ext = vp.ext ++ e --- there should be at most one, one might think; but: I would say that it will be raining if I saw clouds } ; -- @@ -410,7 +430,7 @@ resource ResEng = ParamX ** open Prelude in { _ => "having" ++ vp.ad ++ vp.ptp --# notpresent } --# notpresent } ++ vp.p ++ - vp.s2 ! a ; + vp.s2 ! a ++ vp.ext ; agrVerb : Str -> Str -> Agr -> Str = \has,have,agr -> case agr of { @@ -473,7 +493,7 @@ resource ResEng = ParamX ** open Prelude in { s = \\t,a,b,o => let verb = vp.s ! t ! a ! b ! o ! agr ; - compl = vp.s2 ! agr + compl = vp.s2 ! agr ++ vp.ext in case o of { ODir => subj ++ verb.aux ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf ++ vp.p ++ compl ; diff --git a/lib/src/english/VerbEng.gf b/lib/src/english/VerbEng.gf index 1f15b691f..435304baf 100644 --- a/lib/src/english/VerbEng.gf +++ b/lib/src/english/VerbEng.gf @@ -11,16 +11,16 @@ concrete VerbEng of Verb = CatEng ** open ResEng, Prelude in { Slash3V3 v np = insertObjc (\\_ => v.c3 ++ np.s ! NPAcc) (predVc v) ; ---- - ComplVV v vp = insertObj (\\a => infVP v.typ vp Simul CPos a) (predVV v) ; - ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ; + ComplVV v vp = insertObj (\\a => infVP v.typ vp Simul CPos a) (predVV v) ; ---- insertExtra? + ComplVS v s = insertExtra (conjThat ++ s.s) (predV v) ; --- ComplVS v s = insertObj (variants {\\_ => conjThat ++ s.s; \\_ => s.s}) (predV v) ; - ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ; + ComplVQ v q = insertExtra (q.s ! QIndir) (predV v) ; ComplVA v ap = insertObj (ap.s) (predV v) ; SlashV2V v vp = insertObjc (\\a => v.c3 ++ infVP v.typ vp Simul CPos a) (predVc v) ; - SlashV2S v s = insertObjc (\\_ => conjThat ++ s.s) (predVc v) ; + SlashV2S v s = insertExtrac (conjThat ++ s.s) (predVc v) ; ---- insertExtra? --- SlashV2S v s = insertObjc (variants {\\_ => conjThat ++ s.s; \\_ => s.s}) (predVc v) ; - SlashV2Q v q = insertObjc (\\_ => q.s ! QIndir) (predVc v) ; + SlashV2Q v q = insertExtrac (q.s ! QIndir) (predVc v) ; SlashV2A v ap = insertObjc (\\a => ap.s ! a) (predVc v) ; ---- ComplSlash vp np = case vp.gapInMiddle of {