forked from GitHub/gf-core
bug fixes in PredFin passives and vvtypes
This commit is contained in:
@@ -15,13 +15,13 @@ lin
|
|||||||
LiftVQ v = liftV v ;
|
LiftVQ v = liftV v ;
|
||||||
LiftVA v = liftV v ** {c1 = v.c2} ;
|
LiftVA v = liftV v ** {c1 = v.c2} ;
|
||||||
LiftVN v = liftV v ** {c1 = v.c2} ;
|
LiftVN v = liftV v ** {c1 = v.c2} ;
|
||||||
LiftVV v = liftV v ** {vvType = v.vi} ;
|
LiftVV v = liftV v ** {vvtype = v.vi} ;
|
||||||
|
|
||||||
LiftV3 v = liftV v ** {c1 = v.c2 ; c2 = v.c3} ;
|
LiftV3 v = liftV v ** {c1 = v.c2 ; c2 = v.c3} ;
|
||||||
|
|
||||||
LiftV2S v = liftV v ** {c1 = v.c2} ;
|
LiftV2S v = liftV v ** {c1 = v.c2} ;
|
||||||
LiftV2Q v = liftV v ** {c1 = v.c2} ;
|
LiftV2Q v = liftV v ** {c1 = v.c2} ;
|
||||||
LiftV2V v = liftV v ** {c1 = v.c2 ; vvType = v.vi} ;
|
LiftV2V v = liftV v ** {c1 = v.c2 ; vvtype = v.vi} ;
|
||||||
LiftV2A v = liftV v ** {c1 = v.c2 ; c2 = v.c3} ;
|
LiftV2A v = liftV v ** {c1 = v.c2 ; c2 = v.c3} ;
|
||||||
LiftV2N v = liftV v ** {c1 = v.c2 ; c2 = v.c3} ;
|
LiftV2N v = liftV v ** {c1 = v.c2 ; c2 = v.c3} ;
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ lin
|
|||||||
adj : Str = vp.adj ! np.a ;
|
adj : Str = vp.adj ! np.a ;
|
||||||
obj1 : Str = vp.obj1 ! np.a ;
|
obj1 : Str = vp.obj1 ! np.a ;
|
||||||
obj2 : Str = vp.obj2 ! np.a ;
|
obj2 : Str = vp.obj2 ! np.a ;
|
||||||
c3 : Compl = noComplCase ;
|
c3 : Compl = vp.c1 ; ---- could be c2
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ReflVP x vp = vp ** {
|
ReflVP x vp = vp ** {
|
||||||
@@ -137,8 +137,8 @@ lin
|
|||||||
SCNom => \\agr => finV (a.s ++ t.s ++ p.s) t.t a.a p.p Pass agr (lin PrV verb) ;
|
SCNom => \\agr => finV (a.s ++ t.s ++ p.s) t.t a.a p.p Pass agr (lin PrV verb) ;
|
||||||
_ => \\_ => finV (a.s ++ t.s ++ p.s) t.t a.a p.p Pass defaultAgr (lin PrV verb)
|
_ => \\_ => finV (a.s ++ t.s ++ p.s) t.t a.a p.p Pass defaultAgr (lin PrV verb)
|
||||||
} ;
|
} ;
|
||||||
inf : VVType => Str = \\vtt => tenseInfV (a.s ++ p.s) a.a p.p Pass (lin PrV verb) vtt ;
|
inf : VVType => Str = \\vtt => tenseInfV (a.s ++ p.s) a.a p.p Pass (lin PrV verb) vtt ; ---- still Act
|
||||||
imp : ImpType => Str = \\it => imperativeV p.s p.p it (lin PrV verb) ;
|
imp : ImpType => Str = \\it => imperativeV p.s p.p it (lin PrV verb) ; ---- still Act
|
||||||
isPass : Bool = True ;
|
isPass : Bool = True ;
|
||||||
c1 : Compl = noComplCase ;
|
c1 : Compl = noComplCase ;
|
||||||
c2 : Compl = verb.c2 ;
|
c2 : Compl = verb.c2 ;
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ lincat
|
|||||||
|
|
||||||
VPC = {
|
VPC = {
|
||||||
v : VAgr => Str ;
|
v : VAgr => Str ;
|
||||||
inf : Agr => Str ;
|
inf : Agr => VVType => Str ;
|
||||||
|
imp : ImpType => Str ;
|
||||||
c1 : ComplCase ;
|
c1 : ComplCase ;
|
||||||
c2 : ComplCase ;
|
c2 : ComplCase ;
|
||||||
s1 : Str ; -- storing both in both-and
|
s1 : Str ; -- storing both in both-and
|
||||||
@@ -168,7 +169,7 @@ lin
|
|||||||
adj = vp.adj ! np.a ;
|
adj = vp.adj ! np.a ;
|
||||||
obj1 = vp.part ++ strComplCase vp.c1 ++ vp.obj1.p1 ! np.a ; ---- apply complCase ---- place of part depends on obj
|
obj1 = vp.part ++ strComplCase vp.c1 ++ vp.obj1.p1 ! np.a ; ---- apply complCase ---- place of part depends on obj
|
||||||
obj2 = strComplCase vp.c2 ++ vp.obj2.p1 ! (case vp.obj2.p2 of {True => np.a ; False => vp.obj1.p2}) ; ---- apply complCase
|
obj2 = strComplCase vp.c2 ++ vp.obj2.p1 ! (case vp.obj2.p2 of {True => np.a ; False => vp.obj1.p2}) ; ---- apply complCase
|
||||||
c3 = noComplCase ; -- for one more prep to build ClSlash
|
c3 = vp.c1 ; -- in case there is any free slot left ---- could be c2
|
||||||
qforms = qformsVP vp (agr2vagr np.a) ;
|
qforms = qformsVP vp (agr2vagr np.a) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -311,8 +312,10 @@ lin
|
|||||||
++ c.s2 ++
|
++ c.s2 ++
|
||||||
wv.p1 ++ w.adV ++ wv.p2 ++ wv.p3 ++ w.adj ! vpa ++ ---- appComplCase
|
wv.p1 ++ w.adV ++ wv.p2 ++ wv.p3 ++ w.adj ! vpa ++ ---- appComplCase
|
||||||
w.c1 ++ w.obj1.p1 ! vpa ++ w.c2 ++ w.obj2.p1 ! vpa ++ w.adv ++ w.ext ;
|
w.c1 ++ w.obj1.p1 ! vpa ++ w.c2 ++ w.obj2.p1 ! vpa ++ w.adv ++ w.ext ;
|
||||||
inf = \\a =>
|
inf = \\a,vt =>
|
||||||
infVP v.vvtype a v ++ c.s2 ++ infVP w.vvtype a w ;
|
infVP vt a v ++ c.s2 ++ infVP vt a w ;
|
||||||
|
imp = \\i =>
|
||||||
|
impVP i v ++ c.s2 ++ impVP i w ;
|
||||||
c1 = noComplCase ; ---- w.c1 ? --- the full story is to unify v and w...
|
c1 = noComplCase ; ---- w.c1 ? --- the full story is to unify v and w...
|
||||||
c2 = noComplCase ; ---- w.c2 ?
|
c2 = noComplCase ; ---- w.c2 ?
|
||||||
s1 = c.s1 ;
|
s1 = c.s1 ;
|
||||||
@@ -329,8 +332,10 @@ lin
|
|||||||
v.c1 ++ v.obj1.p1 ! vpa ++ v.c2 ++ v.obj2.p1 ! vpa ++ v.adv ++ v.ext ---- appComplCase
|
v.c1 ++ v.obj1.p1 ! vpa ++ v.c2 ++ v.obj2.p1 ! vpa ++ v.adv ++ v.ext ---- appComplCase
|
||||||
++ "," ++
|
++ "," ++
|
||||||
wv ;
|
wv ;
|
||||||
inf = \\a =>
|
inf = \\a,vt =>
|
||||||
infVP v.vvtype a v ++ "," ++ w.inf ! a ;
|
infVP vt a v ++ "," ++ w.inf ! a ! vt ;
|
||||||
|
imp = \\i =>
|
||||||
|
impVP i v ++ "," ++ w.imp ! i ;
|
||||||
c1 = noComplCase ; ---- w.c1 ? --- the full story is to unify v and w...
|
c1 = noComplCase ; ---- w.c1 ? --- the full story is to unify v and w...
|
||||||
c2 = noComplCase ; ---- w.c2 ?
|
c2 = noComplCase ; ---- w.c2 ?
|
||||||
s1 = w.s1 ;
|
s1 = w.s1 ;
|
||||||
@@ -338,10 +343,11 @@ lin
|
|||||||
|
|
||||||
UseVPC x vpc = initPrVerbPhrase ** { ---- big loss of quality (overgeneration) seems inevitable
|
UseVPC x vpc = initPrVerbPhrase ** { ---- big loss of quality (overgeneration) seems inevitable
|
||||||
v = \\a => <[], [], vpc.s1 ++ vpc.v ! a> ;
|
v = \\a => <[], [], vpc.s1 ++ vpc.v ! a> ;
|
||||||
inf = \\_ => vpc.inf ! defaultAgr ; ---- agreement
|
inf = \\vt => vpc.inf ! defaultAgr ! vt ; ---- agr
|
||||||
|
imp = vpc.imp ;
|
||||||
c1 = vpc.c1 ;
|
c1 = vpc.c1 ;
|
||||||
c2 = vpc.c2 ;
|
c2 = vpc.c2 ;
|
||||||
qforms = \\a => <"do", vpc.inf ! defaultAgr> ; ---- do/does/did
|
qforms = \\a => <"do", vpc.inf ! defaultAgr ! vvInfinitive> ; ---- do/does/did
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
StartClC x c a b = {
|
StartClC x c a b = {
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ oper
|
|||||||
strComplCase : ComplCase -> Str = \c -> c.s.p1 ++ c.s.p2 ;
|
strComplCase : ComplCase -> Str = \c -> c.s.p1 ++ c.s.p2 ;
|
||||||
|
|
||||||
appComplCase : ComplCase -> NounPhrase -> Str = \p,np -> appCompl True Pos p np ;
|
appComplCase : ComplCase -> NounPhrase -> Str = \p,np -> appCompl True Pos p np ;
|
||||||
noComplCase : ComplCase = P.postGenPrep [] ; ----
|
noComplCase : ComplCase = P.accPrep ; ----
|
||||||
|
|
||||||
noObj : Agr => Str = \\_ => [] ;
|
noObj : Agr => Str = \\_ => [] ;
|
||||||
|
|
||||||
@@ -207,14 +207,15 @@ oper
|
|||||||
finV : Str -> STense -> Anteriority -> Polarity -> SVoice -> Agr -> PrVerb -> {fin,inf : Str} =
|
finV : Str -> STense -> Anteriority -> Polarity -> SVoice -> Agr -> PrVerb -> {fin,inf : Str} =
|
||||||
\sta,t,a,pol,o,agr,v ->
|
\sta,t,a,pol,o,agr,v ->
|
||||||
let
|
let
|
||||||
ovps = (S.vp2old_vp (S.predV v)).s ! VIFin t ! a ! pol ! agr ; -- VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
vit = case o of {Act => VIFin t ; Pass => VIPass t} ;
|
||||||
|
ovps = (S.vp2old_vp (S.predV v)).s ! vit ! a ! pol ! agr ; -- VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
||||||
in
|
in
|
||||||
{fin = sta ++ ovps.fin ; inf = ovps.inf} ;
|
{fin = sta ++ ovps.fin ; inf = ovps.inf} ;
|
||||||
|
|
||||||
infV : Str -> Anteriority -> Polarity -> SVoice -> PrVerb -> VVType -> Str =
|
infV : Str -> Anteriority -> Polarity -> SVoice -> PrVerb -> VVType -> Str =
|
||||||
\sa,a,pol,o,v,vvt ->
|
\sa,a,pol,o,v,vvt ->
|
||||||
let
|
let
|
||||||
vt = Inf1 ; ----vvtype2inform vvt
|
vt = vvtype2infform vvt ;
|
||||||
ovps = (S.vp2old_vp (S.predV v)).s ! VIInf vt ! a ! pol ! defaultAgr ; -- VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
ovps = (S.vp2old_vp (S.predV v)).s ! VIInf vt ! a ! pol ! defaultAgr ; -- VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
||||||
in
|
in
|
||||||
sa ++ ovps.fin ++ ovps.inf ;
|
sa ++ ovps.fin ++ ovps.inf ;
|
||||||
@@ -248,8 +249,8 @@ oper
|
|||||||
case cl.focType of {
|
case cl.focType of {
|
||||||
NoFoc => cl.verb.fin ++ Predef.BIND ++ ko ++
|
NoFoc => cl.verb.fin ++ Predef.BIND ++ ko ++
|
||||||
cl.subj ++ cl.adV ++ cl.verb.inf ++ cl.adj ++ cl.obj1 ++ cl.obj2 ++ cl.adv ++ cl.ext ;
|
cl.subj ++ cl.adV ++ cl.verb.inf ++ cl.adj ++ cl.obj1 ++ cl.obj2 ++ cl.adv ++ cl.ext ;
|
||||||
_ => cl.foc ++ cl.verb.fin ++
|
_ => cl.foc ++ cl.subj ++ cl.verb.fin ++
|
||||||
cl.subj ++ cl.adV ++ cl.verb.inf ++ cl.adj ++ cl.obj1 ++ cl.obj2 ++ cl.adv ++ cl.ext
|
cl.adV ++ cl.verb.inf ++ cl.adj ++ cl.obj1 ++ cl.obj2 ++ cl.adv ++ cl.ext
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
questSubordCl : PrQuestionClause -> Str = questCl ;
|
questSubordCl : PrQuestionClause -> Str = questCl ;
|
||||||
@@ -264,8 +265,8 @@ oper
|
|||||||
tenseV : Str -> STense -> Anteriority -> Polarity -> SVoice -> VAgr -> PrVerb -> Str * Str * Str =
|
tenseV : Str -> STense -> Anteriority -> Polarity -> SVoice -> VAgr -> PrVerb -> Str * Str * Str =
|
||||||
\sta,t,a,pol,o,agr,v ->
|
\sta,t,a,pol,o,agr,v ->
|
||||||
let
|
let
|
||||||
ovps = (S.vp2old_vp (S.predV v)).s ! VIFin t ! a ! pol ! agr ; -- VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
vit = case o of {Act => VIFin t ; Pass => VIPass t} ;
|
||||||
act = Act
|
ovps = (S.vp2old_vp (S.predV v)).s ! vit ! a ! pol ! agr ; -- VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
||||||
in
|
in
|
||||||
<sta ++ ovps.fin, ovps.inf, []> ;
|
<sta ++ ovps.fin, ovps.inf, []> ;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user