From e03fd993dfabaf2ecd810aa5ab29bd8f5176e13a Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 4 Dec 2009 14:19:40 +0000 Subject: [PATCH] tensed verb coordination (cat VPS) in English and Scand extra --- lib/src/abstract/Extra.gf | 9 ++++++++ lib/src/demo/Demo.gf | 2 +- lib/src/demo/DemoDan.gf | 2 +- lib/src/demo/DemoNor.gf | 2 +- lib/src/demo/DemoSwe.gf | 2 +- lib/src/english/ExtraEng.gf | 25 +++++++++++++++++++++ lib/src/english/ResEng.gf | 5 ----- lib/src/scandinavian/ExtraScand.gf | 36 ++++++++++++++++++++++++++++++ 8 files changed, 74 insertions(+), 9 deletions(-) diff --git a/lib/src/abstract/Extra.gf b/lib/src/abstract/Extra.gf index fe893d958..4f5bb08e3 100644 --- a/lib/src/abstract/Extra.gf +++ b/lib/src/abstract/Extra.gf @@ -26,5 +26,14 @@ abstract Extra = Cat ** { ConjVPI : Conj -> [VPI] -> VPI ; ComplVPIVV : VV -> VPI -> VP ; + -- new 4/12/2009 + cat + VPS ; + [VPS] {2} ; + + fun + MkVPS : Temp -> Pol -> VP -> VPS ; + ConjVPS : Conj -> [VPS] -> VPS ; + PredVPS : NP -> VPS -> S ; } diff --git a/lib/src/demo/Demo.gf b/lib/src/demo/Demo.gf index 2fcb5a3fc..6f44916d3 100644 --- a/lib/src/demo/Demo.gf +++ b/lib/src/demo/Demo.gf @@ -13,7 +13,7 @@ abstract Demo = ---- Text, ---- Idiom, Structural - [everybody_NP,everything_NP,something_NP], - Lexicon ** { + Lexicon, Tense ** { flags startcat = S ; diff --git a/lib/src/demo/DemoDan.gf b/lib/src/demo/DemoDan.gf index 62e89c515..9277e1aec 100644 --- a/lib/src/demo/DemoDan.gf +++ b/lib/src/demo/DemoDan.gf @@ -8,7 +8,7 @@ concrete DemoDan of Demo = NumeralDan, QuestionDan, StructuralDan, - LexiconDan + LexiconDan, TenseX ** { flags language = da; unlexer = text ; lexer = text ; diff --git a/lib/src/demo/DemoNor.gf b/lib/src/demo/DemoNor.gf index 92487132f..3fe17bcf0 100644 --- a/lib/src/demo/DemoNor.gf +++ b/lib/src/demo/DemoNor.gf @@ -8,7 +8,7 @@ concrete DemoNor of Demo = NumeralNor, QuestionNor, StructuralNor, - LexiconNor + LexiconNor, TenseX ** { flags language = no; unlexer = text ; lexer = text ; diff --git a/lib/src/demo/DemoSwe.gf b/lib/src/demo/DemoSwe.gf index b6d9bfb66..a7c83bcd8 100644 --- a/lib/src/demo/DemoSwe.gf +++ b/lib/src/demo/DemoSwe.gf @@ -8,7 +8,7 @@ concrete DemoSwe of Demo = NumeralSwe, QuestionSwe, StructuralSwe, - LexiconSwe + LexiconSwe, TenseX ** { flags language = sv; unlexer = text ; lexer = text ; diff --git a/lib/src/english/ExtraEng.gf b/lib/src/english/ExtraEng.gf index b004f16d3..c70154869 100644 --- a/lib/src/english/ExtraEng.gf +++ b/lib/src/english/ExtraEng.gf @@ -68,4 +68,29 @@ concrete ExtraEng of ExtraEngAbs = CatEng ** each_Det = mkDeterminer Sg "each" ; +-- for VP conjunction + + param + VPIForm = VPIInf | VPIPPart ; + + lincat + VPS = {s : Agr => Str} ; + [VPS] = {s1,s2 : Agr => Str} ; + + lin + BaseVPS = twoTable Agr ; + ConsVPS = consrTable Agr comma ; + + PredVPS np vpi = {s = np.s ! Nom ++ vpi.s ! np.a} ; + + MkVPS t p vp = { + s = \\a => + let + verb = vp.s ! t.t ! t.a ! contrNeg True p.p ! ODir ! a ; + verbf = verb.aux ++ verb.adv ++ verb.fin ++ verb.inf ; + in t.s ++ p.s ++ vp.ad ++ verbf ++ vp.s2 ! a + } ; + + ConjVPS = conjunctDistrTable Agr ; + } diff --git a/lib/src/english/ResEng.gf b/lib/src/english/ResEng.gf index 68b972300..b86fe27ed 100644 --- a/lib/src/english/ResEng.gf +++ b/lib/src/english/ResEng.gf @@ -470,10 +470,5 @@ resource ResEng = ParamX ** open Prelude in { } } ; --- for VP conjunction - - param - VPIForm = VPIInf | VPIPPart ; - } diff --git a/lib/src/scandinavian/ExtraScand.gf b/lib/src/scandinavian/ExtraScand.gf index 32ec58bc2..56bbeedcc 100644 --- a/lib/src/scandinavian/ExtraScand.gf +++ b/lib/src/scandinavian/ExtraScand.gf @@ -44,4 +44,40 @@ incomplete concrete ExtraScand of ExtraScandAbs = CatScand ** ConjVPI = conjunctDistrTable2 VPIForm Agr ; ComplVPIVV vv vpi = insertObj (\\a => vv.c2.s ++ vpi.s ! VPIInf ! a) (predV vv) ; + lincat + VPS = {s : Order => Agr => Str} ; + [VPS] = {s1,s2 : Order => Agr => Str} ; + + lin + BaseVPS = twoTable2 Order Agr ; + ConsVPS = consrTable2 Order Agr comma ; + + PredVPS np vpi = + let + subj = np.s ! nominative ; + agr = np.a ; + in { + s = \\o => + let verb = vpi.s ! o ! agr + in case o of { + Main => subj ++ verb ; + Inv => verb ++ subj ; ---- älskar henne och sover jag + Sub => subj ++ verb + } + } ; + + MkVPS t p vp = { + s = \\o,a => + let + neg = vp.a1 ! p.p ; + verb = vp.s ! VPFinite t.t t.a ; + compl = verb.inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ; + in t.s ++ p.s ++ case o of { + Main => verb.fin ++ neg ++ compl ; + Inv => verb.fin ++ neg ++ compl ; ---- + Sub => neg ++ verb.fin ++ compl + } + } ; + + ConjVPS = conjunctDistrTable2 Order Agr ; }