added voice parameter to Scandinavian VP to enable PassVPSlash with the s-passive; some additions and corrections in DictEngSwe

This commit is contained in:
aarne
2013-11-07 21:41:58 +00:00
parent 6729cca568
commit eaab0660bd
7 changed files with 55 additions and 39 deletions

View File

@@ -38,7 +38,7 @@ incomplete concrete CatScand of Cat =
-- Verb
VP = {
s : VPForm => {
s : Voice => VPForm => {
fin : Str ; -- V1 har ---s1
inf : Str -- V2 sagt ---s4
} ;

View File

@@ -269,7 +269,7 @@ oper
-- For $Verb$.
VP = {
s : VPForm => {
s : Voice => VPForm => {
fin : Str ; -- V1 har ---s1
inf : Str -- V2 sagt ---s4
} ;
@@ -337,10 +337,21 @@ oper
eext = vp.eext
} ;
passiveVP : VP -> VP = \vp -> {
s = \\_ => vp.s ! Pass ; -- forms the s-passive
a1 = vp.a1 ;
n2 = vp.n2 ;
a2 = vp.a2 ;
ext = vp.ext ;
en2 = vp.en2 ;
ea2 = vp.ea2 ;
eext = vp.eext
} ;
infVP : VP -> Agr -> Str = \vp,a -> infVPPlus vp a Simul Pos ;
infVPPlus : VP -> Agr -> Anteriority -> Polarity -> Str = \vp,a,ant,pol ->
vp.a1 ! pol ++ (vp.s ! VPInfinit ant).inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ; --- a1
vp.a1 ! pol ++ (vp.s ! Act ! VPInfinit ant).inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ; --- a1
-- For $Sentence$.
@@ -352,7 +363,7 @@ oper
mkClause : Str -> Agr -> VP -> Clause = \subj,agr,vp -> {
s = \\t,a,b,o =>
let
verb = vp.s ! VPFinite t a ;
verb = vp.s ! Act ! VPFinite t a ;
neg = vp.a1 ! b ;
compl = vp.n2 ! agr ++ vp.a2 ++ vp.ext
in

View File

@@ -76,7 +76,7 @@ incomplete concrete ExtraScand of ExtraScandAbs = CatScand **
s = \\o,a =>
let
neg = vp.a1 ! p.p ;
verb = vp.s ! VPFinite t.t t.a ;
verb = vp.s ! Act ! VPFinite t.t t.a ;
compl = verb.inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ;
in t.s ++ p.s ++ case o of {
Main => verb.fin ++ neg ++ compl ;

View File

@@ -25,13 +25,13 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in {
oper
predV : Verb -> VP = \verb ->
let
diath = case verb.vtype of {
diath : Voice -> Voice = \d -> case verb.vtype of {
VPass => Pass ;
_ => Act
_ => d
} ;
vfin : STense -> Str = \t -> verb.s ! vFin t diath ;
vsup = verb.s ! VI (VSupin diath) ; --# notpresent
vinf = verb.s ! VI (VInfin diath) ;
vfin : Voice -> STense -> Str = \d,t -> verb.s ! vFin t (diath d) ;
vsup : Voice -> Str = \d -> verb.s ! VI (VSupin (diath d)) ; --# notpresent
vinf : Voice -> Str = \d -> verb.s ! VI (VInfin (diath d)) ;
auxv = case hasAuxBe verb of {
True => verbBe.s ;
@@ -47,24 +47,24 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in {
} ;
in {
s = table {
s = \\d => table {
VPFinite t Simul => case t of {
-- SPres | SPast => vf (vfin t) [] ; -- the general rule
SPast => vf (vfin t) [] ; --# notpresent
SFut => vf auxFut vinf ; --# notpresent
SFutKommer => vf auxFutKommer (auxFutPart ++ infMark ++ vinf) ; --# notpresent
SCond => vf auxCond vinf ; --# notpresent
SPres => vf (vfin t) []
-- SPres | SPast => vf (vfin d t) [] ; -- the general rule
SPast => vf (vfin d t) [] ; --# notpresent
SFut => vf auxFut (vinf d) ; --# notpresent
SFutKommer => vf auxFutKommer (auxFutPart ++ infMark ++ vinf d) ; --# notpresent
SCond => vf auxCond (vinf d) ; --# notpresent
SPres => vf (vfin d t) []
} ;
VPFinite t Anter => case t of { --# notpresent
SPres | SPast => vf (har t) vsup ; --# notpresent
SFut => vf auxFut (ha ++ vsup) ; --# notpresent
SFutKommer => vf auxFutKommer (auxFutPart ++ infMark ++ ha ++ vsup) ; --# notpresent
SCond => vf auxCond (ha ++ vsup) --# notpresent
SPres | SPast => vf (har t) (vsup d) ; --# notpresent
SFut => vf auxFut (ha ++ vsup d) ; --# notpresent
SFutKommer => vf auxFutKommer (auxFutPart ++ infMark ++ ha ++ vsup d) ; --# notpresent
SCond => vf auxCond (ha ++ vsup d) --# notpresent
} ; --# notpresent
VPImperat => vf (verb.s ! VF (VImper diath)) [] ;
VPInfinit Anter => vf [] (ha ++ vsup) ; --# notpresent
VPInfinit Simul => vf [] vinf
VPImperat => vf (verb.s ! VF (VImper (diath d))) [] ;
VPInfinit Anter => vf [] (ha ++ vsup d) ; --# notpresent
VPInfinit Simul => vf [] (vinf d)
} ;
a1 : Polarity => Str = negation ;
n2 : Agr => Str = \\a => case verb.vtype of {

View File

@@ -12,7 +12,7 @@ incomplete concrete SentenceScand of Sentence =
s = \\pol,n =>
let
agr = {g = Utr ; n = n ; p = P2} ;
verb = vp.s ! VPImperat ;
verb = vp.s ! Act ! VPImperat ;
in
verb.fin ++ vp.a1 ! pol ++ verb.inf ++ vp.n2 ! agr ++ vp.a2 ++ vp.ext
} ;