From 865d84508f086d4b223ae700baa0e79d65f8625e Mon Sep 17 00:00:00 2001 From: aarne Date: Sun, 18 Jun 2006 18:34:08 +0000 Subject: [PATCH] preposition stranding in English and Scand --- lib/resource-1.0/abstract/Extra.gf | 6 ++++- lib/resource-1.0/english/ExtraEng.gf | 14 ++++++++++++ lib/resource-1.0/english/QuestionEng.gf | 2 +- lib/resource-1.0/english/RelativeEng.gf | 7 +++--- lib/resource-1.0/scandinavian/ExtraScand.gf | 22 +++++++++++++++++++ .../scandinavian/RelativeScand.gf | 10 ++++----- 6 files changed, 50 insertions(+), 11 deletions(-) diff --git a/lib/resource-1.0/abstract/Extra.gf b/lib/resource-1.0/abstract/Extra.gf index 99b7de1a0..52075b5d1 100644 --- a/lib/resource-1.0/abstract/Extra.gf +++ b/lib/resource-1.0/abstract/Extra.gf @@ -10,4 +10,8 @@ abstract Extra = Cat ** { GenNP : NP -> Quant ; -- this man's ComplBareVS : VS -> S -> VP ; -- know you go -} \ No newline at end of file + StrandRelSlash : RP -> Slash -> RCl ; -- that he lives in + EmptyRelSlash : RP -> Slash -> RCl ; -- he lives in + StrandQuestSlash : IP -> Slash -> QCl ; -- whom does John live with + +} diff --git a/lib/resource-1.0/english/ExtraEng.gf b/lib/resource-1.0/english/ExtraEng.gf index bcb1a6b2b..b02482c8e 100644 --- a/lib/resource-1.0/english/ExtraEng.gf +++ b/lib/resource-1.0/english/ExtraEng.gf @@ -4,6 +4,20 @@ concrete ExtraEng of ExtraEngAbs = CatEng ** open ResEng, Prelude in { GenNP np = {s = \\_ => np.s ! Gen} ; ComplBareVS v s = insertObj (\\_ => s.s) (predV v) ; + StrandRelSlash rp slash = { + s = \\t,a,p,_ => rp.s ! RC Acc ++ slash.s ! t ! a ! p ! ODir ++ slash.c2 ; + c = Acc + } ; + EmptyRelSlash rp slash = { + s = \\t,a,p,_ => slash.s ! t ! a ! p ! ODir ++ slash.c2 ; + c = Acc + } ; + + StrandQuestSlash ip slash = + {s = \\t,a,b,q => + (mkQuestion (ss (ip.s ! Acc)) slash).s ! t ! a ! b ! q ++ slash.c2 + }; + UncNegCl t a cl = {s = t.s ++ a.s ++ cl.s ! t.t ! a.a ! neg ! ODir} ; UncNegQCl t a cl = {s = \\q => t.s ++ a.s ++ cl.s ! t.t ! a.a ! neg !q} ; UncNegRCl t a cl = { diff --git a/lib/resource-1.0/english/QuestionEng.gf b/lib/resource-1.0/english/QuestionEng.gf index 73ab335f2..c58f631fc 100644 --- a/lib/resource-1.0/english/QuestionEng.gf +++ b/lib/resource-1.0/english/QuestionEng.gf @@ -19,7 +19,7 @@ concrete QuestionEng of Question = CatEng ** open ResEng, Prelude in { QuestSlash ip slash = mkQuestion (ss (slash.c2 ++ ip.s ! Acc)) slash ; - --- stranding in ExtEng + --- stranding in ExratEng QuestIAdv iadv cl = mkQuestion iadv cl ; diff --git a/lib/resource-1.0/english/RelativeEng.gf b/lib/resource-1.0/english/RelativeEng.gf index a25a42db3..87c78c96a 100644 --- a/lib/resource-1.0/english/RelativeEng.gf +++ b/lib/resource-1.0/english/RelativeEng.gf @@ -22,11 +22,12 @@ concrete RelativeEng of Relative = CatEng ** open ResEng in { c = Nom } ; --- Preposition stranding: "that we are looking at". Pied-piping is --- deferred to $ExtEng.gf$ ("at which we are looking"). +-- Pied piping: "at which we are looking". Stranding and empty +-- relative are defined in $ExtraEng.gf$ ("that we are looking at", +-- "we are looking at"). RelSlash rp slash = { - s = \\t,a,p,_ => rp.s ! RC Acc ++ slash.s ! t ! a ! p ! ODir ++ slash.c2 ; + s = \\t,a,p,_ => slash.c2 ++ rp.s ! RPrep ++ slash.s ! t ! a ! p ! ODir ; c = Acc } ; diff --git a/lib/resource-1.0/scandinavian/ExtraScand.gf b/lib/resource-1.0/scandinavian/ExtraScand.gf index 4968b944c..f4eefee25 100644 --- a/lib/resource-1.0/scandinavian/ExtraScand.gf +++ b/lib/resource-1.0/scandinavian/ExtraScand.gf @@ -8,4 +8,26 @@ incomplete concrete ExtraScand of ExtraScandAbs = CatScand ** open CommonScand,R ComplBareVS v s = insertObj (\\_ => s.s ! Sub) (predV v) ; + StrandRelSlash rp slash = { + s = \\t,a,p,ag => + rp.s ! ag.gn ! RNom ++ slash.s ! t ! a ! p ! Sub ++ slash.c2 ; + c = NPAcc + } ; + EmptyRelSlash rp slash = { + s = \\t,a,p,ag => + slash.s ! t ! a ! p ! Sub ++ slash.c2 ; + c = NPAcc + } ; + + StrandQuestSlash ip slash = { + s = \\t,a,p => + let + cls = slash.s ! t ! a ! p ; + who = ip.s ! accusative + in table { + QDir => who ++ cls ! Inv ++ slash.c2 ; + QIndir => who ++ cls ! Sub ++ slash.c2 + } + } ; + } diff --git a/lib/resource-1.0/scandinavian/RelativeScand.gf b/lib/resource-1.0/scandinavian/RelativeScand.gf index b671e3442..633270eee 100644 --- a/lib/resource-1.0/scandinavian/RelativeScand.gf +++ b/lib/resource-1.0/scandinavian/RelativeScand.gf @@ -23,15 +23,13 @@ incomplete concrete RelativeScand of Relative = c = NPNom } ; ---- We make this easy by using "som" and preposition stranding. It would be ---- a proble to determine whether $slash$ takes a direct object, since ---- $slash.c2$ is defined to be just a string. --- --- The empty relative is left to $ExtScand$. +-- This rule uses pied piping ("huset i vilket hon bor") +-- Preposition stranding ("huset som hon bor i") +-- and the empty relative ("huset hon bor i") are defined in $ExtraScand$. RelSlash rp slash = { s = \\t,a,p,ag => - rp.s ! ag.gn ! RNom ++ slash.s ! t ! a ! p ! Sub ++ slash.c2 ; + slash.c2 ++ rp.s ! ag.gn ! RPrep ++ slash.s ! t ! a ! p ! Sub ; c = NPAcc } ;