(Som) More VV types

This commit is contained in:
Inari Listenmaa
2019-08-29 15:07:21 +02:00
parent 259b75753e
commit 4f8f4a6c86
7 changed files with 122 additions and 65 deletions
+33 -13
View File
@@ -15,17 +15,33 @@ lin
ReflVP = ResSom.insertRefl ;
-- : VV -> VP -> VP ;
ComplVV vv vp = let vc = vp.vComp in case vv.isVS of {
True => vp ** {
vComp = vc ** {pr = vv.s ! VInf} ;
obj2 = vp.obj2 ** {s = []} ; -- word order hack to avoid more parameters:
miscAdv = vp.miscAdv ++ vp.obj2.s -- dump it all to miscAdv
ComplVV vv vp = let vc = vp.vComp in case vv.vvtype of {
Waa_In => vp ** {
vComp = vc ** {in_ = vv.s ! VInf} ; -- it's always the word "in", and it will be placed before subject pronoun. it's placed in vv.s!VInf so that the VV would contribute with some string. /IL
obj2 = vp.obj2 ** {s = []} ; -- word order hack to avoid more parameters:
miscAdv = vp.miscAdv ++ vp.obj2.s -- dump the object to miscAdv
} ;
False => vp ** {
Subjunctive => vp ** {
s = vv.s ; -- check Saeed p. 169
vComp = vc ** {pst = vc.pst ++ vp.s ! VInf} ;
pred = NoPred ;
stm = Waxa ;
vComp = vc ** {
subcl = \\agr =>
let subj = pronTable ! agr ;
cls = predVPSlash subj vp ;
rcl = mergeRCl (cls.s ! True) ;
in "in" ++ rcl.s ! Pres ! Simul ! Pos
} ; -- TODO check
obj2 = vp.obj2 ** {s = []} ; -- dump the object to vComp.subcl
} ;
Infinitive => vp ** {
s = vv.s ; -- check Saeed p. 169
vComp = vc ** {
inf = vc.inf ++ vp.s ! VInf
} ;
stm = Waa NoPred ;
-- pred = NoPred ;
}
} ;
@@ -127,28 +143,32 @@ lin
-- : AP -> Comp ;
CompAP ap = {
comp = \\a => <[], ap.s ! AF (getNum a) Abs> ;
pred = Copula ;
stm = Waa Copula ;
-- pred = Copula ;
} ;
-- : CN -> Comp ;
CompCN cn = {
comp = \\a => <[], cn2str Sg Abs cn> ;
pred = NoCopula ;
stm = Waa NoCopula ;
-- pred = NoCopula ;
} ;
-- NP -> Comp ;
CompNP np = {
comp = \\a => <[], np.s ! Abs> ;
pred = NoCopula ;
stm = Waa NoCopula ;
-- pred = NoCopula ;
} ;
-- : Adv -> Comp ;
CompAdv adv = {
comp = \\a => <[], linAdv adv> ;
pred = Copula ;
stm = Waa Copula ;
-- pred = Copula ;
} ;
-- : VP -- Copula alone;
UseCopula = useV copula ** {pred=Copula} ;
UseCopula = useV copula ;
}