1
0
forked from GitHub/gf-core

reflexive and deponent as verb features added

This commit is contained in:
aarne
2006-01-16 20:42:52 +00:00
parent 6bfefe0ea9
commit 4ef83ea806
16 changed files with 89 additions and 103 deletions

View File

@@ -175,6 +175,10 @@ oper
seinV : V -> V ;
habenV : V -> V ;
-- Reflexive verbs can take reflexive pronouns of different cases.
reflV : V -> Case -> V ;
--3 Two-place verbs
--
-- Two-place verbs need a preposition, except the special case with direct object
@@ -332,16 +336,21 @@ oper
in
mkV singen singt sing sang saenge gesungen ;
prefixV p v = {s = v.s ; prefix = p ; lock_V = v.lock_V ; aux = v.aux} ;
habenV v = {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben} ;
seinV v = {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VSein} ;
prefixV p v =
{s = v.s ; prefix = p ; lock_V = v.lock_V ; aux = v.aux ; vtype = v.vtype} ;
habenV v =
{s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben ; vtype = v.vtype} ;
seinV v =
{s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VSein ; vtype = v.vtype} ;
reflV v c =
{s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben ; vtype = VRefl c} ;
no_geV v = let vs = v.s in {
s = table {
p@(VPastPart _) => Predef.drop 2 (vs ! p) ;
p => vs ! p
} ;
prefix = v.prefix ; lock_V = v.lock_V ; aux = v.aux
prefix = v.prefix ; lock_V = v.lock_V ; aux = v.aux ; vtype = v.vtype
} ;
mkV2 v c = v ** {c2 = c ; lock_V2 = <>} ;

View File

@@ -57,6 +57,8 @@ resource ParamGer = ParamX ** {
param VAux = VHaben | VSein ;
param VType = VAct | VRefl Case ;
-- The order of sentence is depends on whether it is used as a main
-- clause, inverted, or subordinate.

View File

@@ -62,7 +62,12 @@ resource ResGer = ParamGer ** open Prelude in {
-- suffixes "t" and "st". Auxiliaries like "sein" will have to
-- make extra cases even for this.
Verb : Type = {s : VForm => Str ; prefix : Str ; aux : VAux} ;
Verb : Type = {
s : VForm => Str ;
prefix : Str ;
aux : VAux ;
vtype : VType
} ;
mkV : (x1,_,_,_,_,_,_,_,_,_,_,x12 : Str) -> Str -> VAux -> Verb =
\geben,gebe,gibst,gibt,gebt,gib,gab,gabst,gaben,gabt,gaebe,gegeben,ein,aux ->
@@ -91,7 +96,8 @@ resource ResGer = ParamGer ** open Prelude in {
VPastPart a => (regA gegeben).s ! Posit ! a
} ;
prefix = ein ;
aux = aux
aux = aux ;
vtype = VAct
} ;
-- These functions cover many regular cases; full coverage inflectional patterns are
@@ -237,7 +243,10 @@ resource ResGer = ParamGer ** open Prelude in {
VPInfinit Anter => vf [] (vpart ++ haben)
} ;
a1 : Polarity => Str = negation ;
n2 : Agr => Str = \\_ => [] ;
n2 : Agr => Str = case verb.vtype of {
VAct => \\_ => [] ;
VRefl c => \\a => reflPron ! a ! c
} ;
a2 : Str = [] ;
ext : Str = []
} ;
@@ -287,7 +296,8 @@ resource ResGer = ParamGer ** open Prelude in {
v => sein.s ! v
} ;
prefix = [] ;
aux = VSein
aux = VSein ;
vtype = VAct
} ;
auxVV : Verb -> Verb ** {isAux : Bool} = \v -> v ** {isAux = True} ;