1
0
forked from GitHub/gf-rgl
Files
gf-rgl/src/russian/VerbRus.gf
2020-07-24 21:32:52 +03:00

178 lines
4.7 KiB
Plaintext

concrete VerbRus of Verb = CatRus ** open ResRus, Prelude, Coordination in {
lin
-- : V -> VP ; -- sleep
UseV v = {
adv = \\a=>[] ;
verb = v ;
dep=[] ;
compl = \\_ => []
} ;
-- : V2 -> VP ; -- be loved
PassV2 v2 = {
adv = \\a=>[] ;
verb = passivate v2 ;
dep=[] ;
compl = \\a=>[]
} ;
-- : VV -> VP -> VP ; -- want to run
ComplVV vv vp = vp ** {
verb=vv.v ;
dep=verbInf vp.verb ;
adv=\\a=>vv.modal ! a ++ vp.adv ! a
} ;
-- : VS -> S -> VP ; -- say that she runs
ComplVS vs s = {
verb = vs ;
dep=[] ;
adv=\\a=>[] ;
compl=\\A=>comma ++ "что" ++ s.s ! Ind
} ;
-- : VQ -> QS -> VP ; -- wonder who runs
ComplVQ vq qs = {
verb = vq ;
dep=[] ;
adv=\\a=>[] ;
compl=\\A=>comma ++ "что" ++ qs.s ! QDir
} ;
-- : VA -> AP -> VP ; -- they become red
ComplVA va ap = {
verb=va ;
dep=[] ;
adv=\\a=>[] ;
compl=case ap.preferShort of {
PrefFull => (\\a => ap.s ! agrGenNum a ! Inanimate ! Ins) ;
PrefShort => ap.short
}
} ;
-- : V2 -> VPSlash ; -- love (it)
SlashV2a v2 = {adv=\\a=>[] ; verb=v2 ; dep=[] ; compl=\\_ => [] ; c=v2.c} ; -- looses complement info?
-- : V3 -> NP -> VPSlash ; -- give it (to her)
Slash2V3 v3 np = {
adv=\\a=>[] ;
verb=v3 ;
dep=[] ;
compl=\\a=> v3.c.s ++ np.s ! v3.c.c;
c=v3.c2
} ;
-- : V3 -> NP -> VPSlash ; -- give (it) to her
Slash3V3 v3 np = {
adv=\\a=>[] ;
verb=v3 ;
dep=[] ;
compl=\\a=> v3.c2.s ++ np.s ! v3.c2.c;
c=v3.c
} ;
-- : V2V -> VP -> VPSlash ; -- beg (her) to go
SlashV2V v2v vp = vp ** {
verb=v2v ;
dep=verbInf vp.verb ;
c=v2v.c
} ;
-- : V2S -> S -> VPSlash ; -- answer (to him) that it is good
SlashV2S v2s s = {
adv=\\a=>[] ;
verb=v2s ;
dep=[] ;
compl=\\a=> embedInCommas ("что" ++ s.s ! Ind) ;
c=v2s.c
} ;
-- : V2Q -> QS -> VPSlash ; -- ask (him) who came
SlashV2Q v2q qs = {
adv=\\a=>[] ;
verb=v2q ;
dep=[] ;
compl=\\a=>qs.s ! QDir;
c=v2q.c
} ;
-- : V2A -> AP -> VPSlash ; -- paint (it) red
SlashV2A v2a ap = {
adv=\\a=>[] ;
verb=v2a ;
dep=[] ;
compl=case ap.preferShort of {
PrefFull => (\\a => ap.s ! agrGenNum a ! Inanimate ! v2a.c.c) ; -- TODO: Check acc dep on animacy
PrefShort => ap.short
} ;
c=v2a.c
} ;
-- : VPSlash -> NP -> VP ; -- love it
ComplSlash vps np = vps ** {
compl=\\a => vps.compl ! a ++ (applyPrep vps.c np) -- hasPrep? order?
} ;
-- : VV -> VPSlash -> VPSlash ; -- want to buy
SlashVV vv vps = vps ** {
verb=vv.v ;
dep=(verbInf vps.verb) ++ vps.dep ;
adv=\\a=>vv.modal ! a ++ vps.adv ! a
} ;
-- : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy
SlashV2VNP v2v np vps = vps ** {
verb=v2v ;
dep=(verbInf vps.verb) ++ vps.dep ;
compl=\\a=>vps.compl ! a ++ (applyPrep vps.c np); -- hasPrep? Order?
c=v2v.c
} ;
-- : VPSlash -> VP ; -- love himself
ReflVP vps = vps ** {
compl=\\a => vps.compl ! a ++ vps.c.s ++ sam.s ! vps.c.c -- TODO: use applyPronounPrep (search all ".c.s" also)
} ;
-- : Comp -> VP ; -- be warm
UseComp comp = {
adv=\\a=>comp.adv ;
compl=comp.s ;
verb=selectCopula comp.cop ;
dep=[] ;
} ;
-- : VP -> Adv -> VP ; -- sleep here
AdvVP vp adv = vp ** {compl=\\a => vp.compl ! a ++ adv.s} ;
-- : VP -> Adv -> VP ; -- sleep , even though ...
ExtAdvVP vp adv = vp ** {compl=\\a => vp.compl ! a ++ embedInCommas adv.s};
-- : AdV -> VP -> VP ; -- always sleep
AdVVP adv vp = vp ** {adv=\\a => adv.s ++ vp.adv ! a} ;
-- : VPSlash -> Adv -> VPSlash ; -- use (it) here
AdvVPSlash vps adv = vps ** {compl=\\a => vps.compl ! a ++ adv.s} ;
-- : AdV -> VPSlash -> VPSlash ; -- always use (it)
AdVVPSlash adv vps = vps ** {adv=\\a=>adv.s ++ vps.adv ! a} ;
-- : VP -> Prep -> VPSlash ; -- live in (it)
VPSlashPrep vp prep = vp ** {c=prep} ;
-- : AP -> Comp ; -- (be) small
CompAP ap = case ap.preferShort of {
PrefFull => {s=\\a=>ap.s ! agrGenNum a ! Inanimate ! Ins ; adv=[] ; cop=InsCopula} ;
PrefShort => {s=ap.short ; adv=[] ; cop=EllCopula}
};
-- : NP -> Comp ; -- (be) the man
CompNP np = {s=\\a=>np.s ! Ins ; adv=[] ; cop=InsCopula} ;
-- : Adv -> Comp ; -- (be) here
CompAdv adv = {s=\\a=>[] ; adv=adv.s ; cop=NomCopula} ;
-- : CN -> Comp ; -- (be) a man/men
CompCN cn = {s=\\a=>cn.s ! numGenNum (agrGenNum a) ! Ins ; adv=[] ; cop=InsCopula} ;
-- : VP ; -- be
UseCopula = {adv=\\a=>[] ; verb=copulaIns ; dep=[] ; compl=\\a=>[]} ;
}