German double infinitives, place of adverbials

This commit is contained in:
aarne
2006-01-22 21:12:07 +00:00
parent 29a4ef3172
commit 3f2a7db309
3 changed files with 43 additions and 15 deletions

View File

@@ -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 <a,vp.isAux> of {
<Anter,True> => 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
}
} ;

View File

@@ -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" ;

View File

@@ -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
<vp.n2 ! a ++ vp.a2, 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) ;