diff --git a/lib/src/abstract/Noun.gf b/lib/src/abstract/Noun.gf index 9d996f78c..f09bf1214 100644 --- a/lib/src/abstract/Noun.gf +++ b/lib/src/abstract/Noun.gf @@ -27,6 +27,7 @@ abstract Noun = Cat ** { PPartNP : NP -> V2 -> NP ; -- the man seen AdvNP : NP -> Adv -> NP ; -- Paris today + ExtAdvNP: NP -> Adv -> NP ; -- boys, such as .. RelNP : NP -> RS -> NP ; -- Paris, which is here -- Determiners can form noun phrases directly. diff --git a/lib/src/abstract/Verb.gf b/lib/src/abstract/Verb.gf index 17d41fb75..ad5ff4248 100644 --- a/lib/src/abstract/Verb.gf +++ b/lib/src/abstract/Verb.gf @@ -56,6 +56,7 @@ abstract Verb = Cat ** { -- vs. next to (or before) the verb. AdvVP : VP -> Adv -> VP ; -- sleep here + ExtAdvVP : VP -> Adv -> VP ; -- sleep , even though ... AdVVP : AdV -> VP -> VP ; -- always sleep AdvVPSlash : VPSlash -> Adv -> VPSlash ; -- use (it) here diff --git a/lib/src/bulgarian/NounBul.gf b/lib/src/bulgarian/NounBul.gf index 8c054056b..80a775515 100644 --- a/lib/src/bulgarian/NounBul.gf +++ b/lib/src/bulgarian/NounBul.gf @@ -61,6 +61,11 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { a = np.a } ; + ExtAdvNP np adv = { + s = \\c => np.s ! c ++ "," ++ adv.s ; + a = np.a + } ; + DetQuant quant num = { s = \\sp,g,c => let sp' = case num.nonEmpty of { True => True ; False => sp } diff --git a/lib/src/english/NounEng.gf b/lib/src/english/NounEng.gf index 9f58f5a93..7c5e22c30 100644 --- a/lib/src/english/NounEng.gf +++ b/lib/src/english/NounEng.gf @@ -31,6 +31,11 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in { a = np.a } ; + ExtAdvNP np adv = { + s = \\c => np.s ! c ++ "," ++ adv.s ++ finalComma; + a = np.a + } ; + DetQuant quant num = { s = quant.s ! num.hasCard ! num.n ++ num.s ! Nom; sp = \\c => case num.hasCard of { diff --git a/lib/src/english/VerbEng.gf b/lib/src/english/VerbEng.gf index c07b2a1d6..03437c0dd 100644 --- a/lib/src/english/VerbEng.gf +++ b/lib/src/english/VerbEng.gf @@ -37,6 +37,7 @@ concrete VerbEng of Verb = CatEng ** open ResEng, Prelude in { UseComp comp = insertObj comp.s (predAux auxBe) ; AdvVP vp adv = insertObj (\\_ => adv.s) vp ; + ExtAdvVP vp adv = insertObj (\\_ => "," ++ adv.s ++ finalComma) vp ; AdVVP adv vp = insertAdV adv.s vp ; AdvVPSlash vp adv = insertObj (\\_ => adv.s) vp ** {c2 = vp.c2 ; gapInMiddle = vp.gapInMiddle} ;