forked from GitHub/gf-rgl
110 lines
2.8 KiB
Plaintext
110 lines
2.8 KiB
Plaintext
--# -path=.:../abstract:../common:../../prelude
|
|
|
|
concrete IdiomRus of Idiom = CatRus ** open Prelude, ParamX, TenseRus, ResRus, Coordination, MorphoRus in {
|
|
flags optimize=all_subs ; coding=utf8 ;
|
|
|
|
lin
|
|
-- : VP -> Cl ; -- it is hot
|
|
ImpersCl vp =
|
|
let a = Ag (GSg Neut) P3 in {
|
|
subj="" ;
|
|
adv=vp.adv ! a ;
|
|
verb=vp.verb ;
|
|
dep=vp.dep ;
|
|
compl=\\p => vp.compl ! p ! a ;
|
|
a=a
|
|
} ;
|
|
|
|
-- : VP -> Cl ; -- one sleeps
|
|
GenericCl vp =
|
|
let a = Ag (GSg Masc) P2 in {
|
|
subj="" ;
|
|
adv=vp.adv ! a ;
|
|
verb=vp.verb ;
|
|
dep=vp.dep ;
|
|
compl=\\p => vp.compl ! p ! a ;
|
|
a=a
|
|
} ;
|
|
|
|
-- : NP -> RS -> Cl ; -- it is I who did it
|
|
CleftNP np rs = {
|
|
subj="это" ++ np.s ! Nom ;
|
|
adv=[];
|
|
verb=copulaEll ; -- ???
|
|
dep=[] ;
|
|
compl=\\_ => embedInCommas (rs.s ! agrGenNum np.a ! Animate ! Nom) ; -- TODO: here or in subj???
|
|
a=np.a
|
|
} ;
|
|
-- : Adv -> S -> Cl ; -- it is here she slept
|
|
CleftAdv adv s = {
|
|
subj="это" ;
|
|
adv=adv.s ;
|
|
verb=nullVerb ; -- ???
|
|
dep=[] ;
|
|
compl=\\_ => s.s ! Ind ;
|
|
a=Ag (GSg Neut) P3
|
|
} ;
|
|
|
|
-- : NP -> Cl ; -- there is a house
|
|
ExistNP np = {
|
|
subj=np.s ! Nom ;
|
|
compl=\\_ => [] ;
|
|
verb=to_exist ;
|
|
dep=[] ;
|
|
adv=[] ;
|
|
a=np.a
|
|
} ;
|
|
|
|
-- : IP -> QCl ; -- which houses are there
|
|
ExistIP ip = {
|
|
subj=ip.nom ; -- gen?
|
|
adv=[] ;
|
|
verb=to_exist;
|
|
dep=[] ;
|
|
compl=\\_ => [] ;
|
|
a=ip.a
|
|
} ;
|
|
-- : NP -> Adv -> Cl ; -- there is a house in Paris
|
|
ExistNPAdv np adv = {
|
|
subj=np.s ! Nom ;
|
|
adv=adv.s ;
|
|
verb=to_exist ;
|
|
dep=[] ;
|
|
compl=\\_ => [] ;
|
|
a=np.a
|
|
} ;
|
|
-- : IP -> Adv -> QCl ; -- which houses are there in Paris
|
|
ExistIPAdv ip adv = {
|
|
subj=ip.nom ; -- gen?
|
|
adv=adv.s ;
|
|
verb=to_exist;
|
|
dep=[] ;
|
|
compl=\\_ => [] ;
|
|
a=ip.a
|
|
} ;
|
|
|
|
-- : VP -> VP ; -- be sleeping
|
|
ProgrVP vp = vp ;
|
|
-- : VP -> Utt ; -- let's go
|
|
ImpPl1 vp =
|
|
let a = Ag GPl P1 in {
|
|
s = (verbEnvAgr "давайте" (vp.adv ! a) vp.verb Infinitive Pres a PPos) ++ vp.dep ++ vp.compl ! Pos ! a
|
|
} ;
|
|
-- : NP -> VP -> Utt ; -- let John walk
|
|
ImpP3 np vp = {
|
|
s = (verbEnvAgr "пусть" (vp.adv ! np.a ++ np.s ! Nom) vp.verb Ind Pres np.a PPos) ++ vp.dep ++ vp.compl ! Pos ! np.a
|
|
} ;
|
|
|
|
-- : VP -> VP ; -- is at home himself
|
|
SelfAdvVP vp = vp ** {
|
|
compl=\\p,a => vp.compl ! p ! a ++ (adjFormsAdjective sam).s ! agrGenNum a ! Animate ! Nom
|
|
} ;
|
|
-- : VP -> VP ; -- is himself at home
|
|
SelfAdVVP vp = vp ** {adv=\\a => (adjFormsAdjective sam).s ! agrGenNum a ! Animate ! Nom ++ vp.adv ! a} ;
|
|
-- : NP -> NP ; -- the president himself (is at home)
|
|
SelfNP np = np ** {
|
|
s=\\cas => ((adjFormsAdjective sam).s ! agrGenNum np.a ! Animate ! cas ) ++ np.s ! cas
|
|
} ;
|
|
|
|
}
|