From 3f2a7db309e64e1b18ba0637ed11012d08d55136 Mon Sep 17 00:00:00 2001 From: aarne Date: Sun, 22 Jan 2006 21:12:07 +0000 Subject: [PATCH] German double infinitives, place of adverbials --- lib/resource-1.0/german/ResGer.gf | 48 ++++++++++++++++++------ lib/resource-1.0/german/StructuralGer.gf | 2 +- lib/resource-1.0/german/VerbGer.gf | 8 ++-- 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/lib/resource-1.0/german/ResGer.gf b/lib/resource-1.0/german/ResGer.gf index 881d63630..bb9e060c4 100644 --- a/lib/resource-1.0/german/ResGer.gf +++ b/lib/resource-1.0/german/ResGer.gf @@ -196,13 +196,15 @@ resource ResGer = ParamGer ** open Prelude in { VP : Type = { s : Agr => VPForm => { - fin : Str ; -- V1 hat - inf : Str -- V2 gesagt + fin : Str ; -- hat + inf : Str -- wollen } ; - a1 : Polarity => Str ; -- A1 nicht - n2 : Agr => Str ; -- N2 dich - a2 : Str ; -- A2 heute - ext : Str -- S-Ext dass sie kommt + a1 : Polarity => Str ; -- nicht + n2 : Agr => Str ; -- dich + a2 : Str ; -- heute + isAux : Bool ; -- is a double infinitive + inf : Str ; -- sagen + ext : Str -- dass sie kommt } ; predV : Verb -> VP = predVGen False ; @@ -248,7 +250,8 @@ resource ResGer = ParamGer ** open Prelude in { VRefl c => \\a => reflPron ! a ! c } ; a2 : Str = [] ; - ext : Str = [] + isAux = isAux ; ---- + inf,ext : Str = [] } ; auxPerfect : Verb -> VForm => Str = \verb -> @@ -314,6 +317,8 @@ resource ResGer = ParamGer ** open Prelude in { a1 = vp.a1 ; n2 = \\a => vp.n2 ! a ++ obj ! a ; a2 = vp.a2 ; + isAux = vp.isAux ; + inf = vp.inf ; ext = vp.ext } ; @@ -322,6 +327,8 @@ resource ResGer = ParamGer ** open Prelude in { a1 = \\a => vp.a1 ! a ++ adv ; n2 = vp.n2 ; a2 = vp.a2 ; + isAux = vp.isAux ; + inf = vp.inf ; ext = vp.ext } ; @@ -330,6 +337,8 @@ resource ResGer = ParamGer ** open Prelude in { a1 = vp.a1 ; n2 = vp.n2 ; a2 = vp.a2 ++ adv ; + isAux = vp.isAux ; + inf = vp.inf ; ext = vp.ext } ; @@ -338,9 +347,21 @@ resource ResGer = ParamGer ** open Prelude in { a1 = vp.a1 ; n2 = vp.n2 ; a2 = vp.a2 ; + isAux = vp.isAux ; + inf = vp.inf ; ext = vp.ext ++ ext } ; + insertInf : Str -> VP -> VP = \inf,vp -> { + s = vp.s ; + a1 = vp.a1 ; + n2 = vp.n2 ; + a2 = vp.a2 ; + isAux = vp.isAux ; ---- + inf = vp.inf ++ inf ; + ext = vp.ext + } ; + -- For $Sentence$. Clause : Type = { @@ -353,13 +374,18 @@ resource ResGer = ParamGer ** open Prelude in { verb = vp.s ! agr ! VPFinite t a ; neg = vp.a1 ! b ; obj = vp.n2 ! agr ++ vp.a2 ; - compl = neg ++ obj ++ verb.inf ; + compl = neg ++ obj ; + inf = vp.inf ++ verb.inf ; extra = vp.ext ; + inffin = case of { + => verb.fin ++ inf ; -- double infinitive + _ => inf ++ verb.fin --- or just auxiliary vp + } in case o of { - Main => subj ++ verb.fin ++ compl ++ extra ; - Inv => verb.fin ++ subj ++ compl ++ extra ; - Sub => subj ++ compl ++ verb.fin ++ extra + Main => subj ++ verb.fin ++ compl ++ inf ++ extra ; + Inv => verb.fin ++ subj ++ compl ++ inf ++ extra ; + Sub => subj ++ compl ++ inffin ++ extra } } ; diff --git a/lib/resource-1.0/german/StructuralGer.gf b/lib/resource-1.0/german/StructuralGer.gf index 677349e07..0c47d3d7b 100644 --- a/lib/resource-1.0/german/StructuralGer.gf +++ b/lib/resource-1.0/german/StructuralGer.gf @@ -38,7 +38,7 @@ concrete StructuralGer of Structural = CatGer ** he_Pron = mkPronPers "er" "ihn" "ihm" "seiner" "sein" Sg P3 ; here7to_Adv = ss ["hierher"] ; here7from_Adv = ss ["hieraus"] ; - here_Adv = ss ["to hier"] ; + here_Adv = ss "hier" ; how_IAdv = ss "wie" ; how8many_IDet = detLikeAdj Pl "wieviel" ; if_Subj = ss "wenn" ; diff --git a/lib/resource-1.0/german/VerbGer.gf b/lib/resource-1.0/german/VerbGer.gf index a929f3cc9..836627754 100644 --- a/lib/resource-1.0/german/VerbGer.gf +++ b/lib/resource-1.0/german/VerbGer.gf @@ -11,13 +11,15 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer in { ComplVV v vp = let - compl : Agr => Str = \\a => + compl : Agr -> (Str * Str) = \a -> let vpi = vp.s ! a ! VPInfinit Simul in - vp.n2 ! a ++ vp.a2 ++ vpi.fin ++ infPart v.isAux ++ vpi.inf + ; + obj : Agr => Str = \\a => (compl a).p1 ; + inf : Str = (compl (agrP3 Sg)).p2 ; --- agr makes no diff here in - insertObj compl (predVGen v.isAux v) ; + insertInf inf (insertObj obj (predVGen v.isAux v)) ; ComplVS v s = insertExtrapos (conjThat ++ s.s ! Sub) (predV v) ;