From b4104b90e1f6ca229ff686be8e01cf4779cc6302 Mon Sep 17 00:00:00 2001 From: aarne Date: Thu, 25 Sep 2014 17:56:22 +0000 Subject: [PATCH] enabled some gerunds and participles in Translate, implemented for Eng and Swe. Commented out which_N, a source of errors. --- lib/src/scandinavian/CommonScand.gf | 12 ++++++++++++ lib/src/translator/Dictionary.gf | 2 +- lib/src/translator/ExtensionsSwe.gf | 30 +++++++++++++++++++++-------- lib/src/translator/Translate.gf | 2 +- lib/src/translator/TranslateEng.gf | 3 +-- lib/src/translator/TranslateSwe.gf | 4 +++- 6 files changed, 40 insertions(+), 13 deletions(-) diff --git a/lib/src/scandinavian/CommonScand.gf b/lib/src/scandinavian/CommonScand.gf index 621761159..b0082e433 100644 --- a/lib/src/scandinavian/CommonScand.gf +++ b/lib/src/scandinavian/CommonScand.gf @@ -138,6 +138,13 @@ oper gennumAgr : Agr -> GenNum = \a -> gennum a.g a.n ; + aformpos2agr : AFormPos -> Agr = \af -> case af of { + Strong (GSg g) => {p = P3 ; n = Sg ; g = g} ; + Strong GPl => {p = P3 ; n = Pl ; g = Utr} ; -- loss of gender does not matter in Pl + Weak n => {p = P3 ; n = n ; g = Utr} ---- loss of gender: *det stor blivande huset + } ; + + -- Used in $DiffScand.predV$. vFin : STense -> Voice -> VForm = \t,v -> case t of { @@ -333,6 +340,11 @@ oper infVPPlus : VP -> Agr -> Anteriority -> Polarity -> Str = \vp,a,ant,pol -> vp.a1 ! pol ! a ++ (vp.s ! Act ! VPInfinit ant).inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ; --- a1 + partVPPlus : VP -> PartForm -> Agr -> Polarity -> Str = \vp,pf,a,pol -> + vp.a1 ! pol ! a ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ++ vp.sp ! pf ; -- verb final: i sängen liggande + partVPPlusPost : VP -> PartForm -> Agr -> Polarity -> Str = \vp,pf,a,pol -> + vp.a1 ! pol ! a ++ vp.sp ! pf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ; -- verb first: liggande i sängen + -- For $Sentence$. diff --git a/lib/src/translator/Dictionary.gf b/lib/src/translator/Dictionary.gf index fbd074039..e5e0d3260 100644 --- a/lib/src/translator/Dictionary.gf +++ b/lib/src/translator/Dictionary.gf @@ -64737,7 +64737,7 @@ fun whether_Subj : Subj ; fun whetstone_N : N ; fun whey_N : N ; fun which_IQuant : IQuant ; -fun which_N : N ; +--fun which_N : N ; ---- what is this? creates spurious parses. AR 25/9/2014 fun whichever_A : A ; fun whichever_Quant : Quant ; fun whichsoever_A : A ; diff --git a/lib/src/translator/ExtensionsSwe.gf b/lib/src/translator/ExtensionsSwe.gf index 4f0e44620..6c72c37b0 100644 --- a/lib/src/translator/ExtensionsSwe.gf +++ b/lib/src/translator/ExtensionsSwe.gf @@ -47,16 +47,30 @@ lin isPre = True } ; - GerundN v = { - s = \\n,d,c => v.s ! VI (VPtPres n d c) ; - g = Neutr ; - co = v.s ! VI (VPtPres Sg Indef Nom) ; - } ; - + GerundNP vp = { -- infinitive: att dricka öl, att vara glad + s = \\_ => "att" ++ infVP vp {g = Utr ; n = Sg ; p = P3} ; + a = {g = Neutr ; n = Sg ; p = P3} + } ; + + GerundAdv vp = { + s = partVPPlusPost vp (PartPres Sg Indef (Nom|Gen)) {g = Utr ; n = Sg ; p = P3} Pos -- sovande(s) i sängen + } ; + PresPartAP vp = { - s = \\_ => v.s ! VI (VPtPres Sg Indef Nom) ; + s = \\af => partVPPlus vp (PartPres Sg Indef Nom) (aformpos2agr af) Pos ; isPre = True - } ; + } ; + + PastPartAP vp = { + s = \\af => partVPPlus vp (PartPret af Nom) (aformpos2agr af) Pos ; + isPre = True + } ; + + PastPartAgentAP vp np = { + s = \\af => "av" ++ np.s ! accusative ++ partVPPlus vp (PartPret af Nom) (aformpos2agr af) Pos ; ---- agent and other advs before; + isPre = True ---- the right choice in attributive but not predicative position + } ; + ---- PastPartAP vp diff --git a/lib/src/translator/Translate.gf b/lib/src/translator/Translate.gf index 2c5665420..175c3d983 100644 --- a/lib/src/translator/Translate.gf +++ b/lib/src/translator/Translate.gf @@ -26,7 +26,7 @@ abstract Translate = Extensions [ CompoundN,AdAdV,UttAdV,ApposNP,MkVPI, MkVPS, PredVPS, PassVPSlash, PassAgentVPSlash, CompoundAP, DirectComplVS, DirectComplVQ, FocusObjS ----- , PastPartAP, PastPartAgentAP, PresPartAP ---- not yet available for all languages + , PastPartAP, PastPartAgentAP, PresPartAP, GerundNP, GerundAdv ---- not yet available for all languages ], Dictionary, Documentation diff --git a/lib/src/translator/TranslateEng.gf b/lib/src/translator/TranslateEng.gf index c6e47c183..b06fb310f 100644 --- a/lib/src/translator/TranslateEng.gf +++ b/lib/src/translator/TranslateEng.gf @@ -36,8 +36,7 @@ concrete TranslateEng of Translate = ChunkEng, ExtensionsEng [CompoundN,AdAdV,UttAdV,ApposNP,MkVPI, MkVPS, PredVPS, PassVPSlash, PassAgentVPSlash, CompoundAP, DirectComplVS, DirectComplVQ, FocusObjS - ----- , PastPartAP, PastPartAgentAP, PresPartAP + , PastPartAP, PastPartAgentAP, PresPartAP, GerundNP, GerundAdv ], DictionaryEng ** open MorphoEng, ResEng, ParadigmsEng, (G = GrammarEng), (E = ExtraEng), Prelude in { diff --git a/lib/src/translator/TranslateSwe.gf b/lib/src/translator/TranslateSwe.gf index 7c516f668..041e54fad 100644 --- a/lib/src/translator/TranslateSwe.gf +++ b/lib/src/translator/TranslateSwe.gf @@ -24,7 +24,9 @@ concrete TranslateSwe of Translate = ChunkSwe, ExtensionsSwe [CompoundN,AdAdV,UttAdV,ApposNP,MkVPI, MkVPS, PredVPS, PassVPSlash, PassAgentVPSlash, CompoundAP, - DirectComplVS, DirectComplVQ, FocusObjS], + DirectComplVS, DirectComplVQ, FocusObjS + ,PastPartAP, PastPartAgentAP, PresPartAP, GerundNP, GerundAdv + ], DictionarySwe ** open MorphoSwe, ResSwe, ParadigmsSwe, SyntaxSwe, CommonScand, (E = ExtraSwe), Prelude in {