From 6404f1daedf02183ce4389b633445b21d078e3d2 Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 1 Jun 2010 19:01:03 +0000 Subject: [PATCH] focal constructions in Scandinavian --- lib/src/abstract/Extra.gf | 17 +++++++++++++++++ lib/src/scandinavian/ExtraScand.gf | 22 +++++++++++++++++++++- lib/src/swedish/ExtraSwe.gf | 24 +++++++++++++++++++++++- 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/lib/src/abstract/Extra.gf b/lib/src/abstract/Extra.gf index 2e852a4a3..ed8111fc1 100644 --- a/lib/src/abstract/Extra.gf +++ b/lib/src/abstract/Extra.gf @@ -47,4 +47,21 @@ abstract Extra = Cat ** { PrepCN : Prep -> CN -> Adv ; -- by accident [Prep + CN without article] + -- fronted/focal constructions, only for main clauses + + cat + Foc ; + + fun + FocObj : NP -> ClSlash -> Foc ; -- her I love + FocAdv : Adv -> Cl -> Foc ; -- today I will sleep + FocAdV : AdV -> Cl -> Foc ; -- never will I sleep + FocAP : AP -> NP -> Foc ; -- green was the tree + FocNeg : Cl -> Foc ; -- not is he here + FocVP : VP -> NP -> Foc ; -- love her I do + FocVV : VV -> VP -> NP -> Foc ; -- to love her I want + + UseFoc : Temp -> Pol -> Foc -> Utt ; + + } diff --git a/lib/src/scandinavian/ExtraScand.gf b/lib/src/scandinavian/ExtraScand.gf index e6cb0aff8..4e650974d 100644 --- a/lib/src/scandinavian/ExtraScand.gf +++ b/lib/src/scandinavian/ExtraScand.gf @@ -1,5 +1,5 @@ incomplete concrete ExtraScand of ExtraScandAbs = CatScand ** - open CommonScand,Coordination,ResScand in { + open CommonScand,Coordination,ResScand, ParamX in { lin GenNP np = { s,sp = \\n,_,_,g => np.s ! NPPoss (gennum (ngen2gen g) n) Nom ; @@ -84,4 +84,24 @@ incomplete concrete ExtraScand of ExtraScandAbs = CatScand ** ICompAP ap = {s = \\a => hur_IAdv.s ++ ap.s ! a} ; IAdvAdv adv = {s = hur_IAdv.s ++ adv.s} ; + + lincat + Foc = {s : ParamX.Tense => Anteriority => Polarity => Str} ; + + lin + FocObj np cls = { + s = \\t,a,p => cls.c2.s ++ np.s ! accusative ++ cls.s ! t ! a ! p ! Inv + } ; + FocAdv adv cls = { + s = \\t,a,p => adv.s ++ cls.s ! t ! a ! p ! Inv + } ; + FocAdV adv cls = { + s = \\t,a,p => adv.s ++ cls.s ! t ! a ! p ! Inv + } ; + FocNeg cl = { + s = \\t,a,p => (negation ! Neg) ++ cl.s ! t ! a ! p ! Inv + } ; + + UseFoc t p foc = {s = t.s ++ p.s ++ foc.s ! t.t ! t.a ! p.p} ; + } diff --git a/lib/src/swedish/ExtraSwe.gf b/lib/src/swedish/ExtraSwe.gf index ca533be6b..cbb0bf70d 100644 --- a/lib/src/swedish/ExtraSwe.gf +++ b/lib/src/swedish/ExtraSwe.gf @@ -1,3 +1,25 @@ -concrete ExtraSwe of ExtraSweAbs = ExtraScandSwe ** { +concrete ExtraSwe of ExtraSweAbs = ExtraScandSwe ** open CommonScand, ResSwe, ParamX in { + +lin + FocVP vp np = { + s = \\t,a,p => + let + subj = np.s ! nominative ; + agr = np.a ; + vps = vp.s ! VPFinite t a ; + verb = case < : ParamX.Tense * Anteriority> of { + => {fin = "gör" ; inf = vps.inf} + ; --# notpresent + => {fin = "gjorde" ; inf = vps.inf} ; --# notpresent + _ => vps --# notpresent + } ; + vfin = verb.fin ; + vinf = verb.inf ; + neg = vp.a1 ! p ; + comp = vp.n2 ! agr ++ vp.a2 ++ vp.ext + in + vinf ++ comp ++ vfin ++ subj ++ neg + } ; + }