mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-11 08:06:34 -06:00
140 lines
3.9 KiB
Plaintext
140 lines
3.9 KiB
Plaintext
concrete SentenceRus of Sentence = CatRus ** open Prelude, TenseRus, ParamRus, Coordination, Maybe, (R=ResRus) in {
|
|
flags optimize=all_subs ; coding=utf8 ;
|
|
lin
|
|
-- : Adv -> S -> S ; -- then I will go home
|
|
AdvS adv s = {s=\\m => adv.s ++ s.s ! m} ;
|
|
-- : Adv -> S -> S ; -- next week, I will go home
|
|
ExtAdvS adv s = {s=\\m => adv.s ++ comma ++ s.s ! m} ;
|
|
|
|
-- : Temp -> Pol -> Cl -> S ; -- she had not slept - она не спала
|
|
UseCl temp pol cl = {
|
|
s : Mood => Str = \\m =>
|
|
temp.s
|
|
++ (R.verbEnvAgr cl.subj cl.adv cl.verb m temp.t cl.a pol)
|
|
++ cl.dep
|
|
++ cl.compl ! pol.p ;
|
|
} ;
|
|
|
|
-- : Temp -> Pol -> RCl -> RS ; -- that had not slept
|
|
UseRCl temp pol rcl = {
|
|
s = \\gn,anim,cas =>
|
|
let a : Agr = fromMaybe Agr (genNumAgrP3 gn) rcl.a in
|
|
temp.s
|
|
++ (R.verbEnvAgr (rcl.subj ! gn ! anim ! Nom) (rcl.adv ! (genNumAgrP3 gn)) rcl.verb Ind temp.t a pol)
|
|
++ rcl.dep
|
|
++ rcl.compl ! pol.p ! (genNumAgrP3 gn)
|
|
} ;
|
|
|
|
-- : Temp -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
|
|
UseSlash temp pol cls = {
|
|
s : Mood => Str = \\m =>
|
|
temp.s
|
|
++ (R.verbEnvAgr cls.subj cls.adv cls.verb m temp.t cls.a pol)
|
|
++ cls.dep
|
|
++ cls.compl ! pol.p ;
|
|
c=cls.c
|
|
} ;
|
|
|
|
-- : NP -> VPSlash -> ClSlash ; -- (whom) he sees
|
|
SlashVP np vps = {
|
|
subj=np.s ! Nom ; -- ????????
|
|
adv=vps.adv ! np.a ; -- ??
|
|
verb=vps.verb ;
|
|
dep=vps.dep ;
|
|
compl=\\p => vps.compl ! p ! np.a ; -- ??
|
|
a=np.a ;
|
|
c=vps.c
|
|
} ;
|
|
|
|
-- : Cl -> Prep -> ClSlash ; -- (with whom) he walks
|
|
SlashPrep cl prep = {
|
|
subj=cl.subj ;
|
|
compl=cl.compl ;
|
|
adv=cl.adv ;
|
|
verb=cl.verb ;
|
|
dep=cl.dep ;
|
|
a=cl.a ;
|
|
c=prep
|
|
} ;
|
|
|
|
-- NP -> VS -> SSlash -> ClSlash ; -- (whom) she says that he loves
|
|
SlashVS np vs ss = {
|
|
subj=np.s ! Nom ; -- ????????
|
|
compl=\\_ => embedInCommas ("что" ++ ss.s ! Ind) ; -- ?? that?
|
|
adv=[]; -- ??
|
|
verb=vs ;
|
|
dep=[] ;
|
|
a=np.a ;
|
|
c=ss.c
|
|
} ;
|
|
|
|
-- : S -> Subj -> S -> S ; -- I go home, if she comes
|
|
SSubjS s subj s2 = {
|
|
s=\\m => s.s ! m ++ comma ++ subj.s ++ s2.s ! Ind
|
|
} ;
|
|
|
|
-- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
|
AdvSlash cls adv = cls ** {
|
|
adv=cls.adv ++ adv.s
|
|
} ;
|
|
|
|
-- : VP -> Imp ; -- love yourselves
|
|
ImpVP vp = {
|
|
s = \\polarity, gn =>
|
|
let pol = case polarity of {Neg => PNeg; Pos => PPos} in
|
|
let a = Ag gn P2 in
|
|
(R.verbEnvAgr "" "" vp.verb Imperative Pres a pol)
|
|
++ vp.dep
|
|
++ vp.adv ! a
|
|
++ vp.compl ! pol.p ! a
|
|
} ;
|
|
|
|
-- : NP -> VP -> Cl ; -- John walks - Иван гуляет
|
|
PredVP np vp = {
|
|
subj=np.s ! Nom ;
|
|
adv=vp.adv ! np.a ;
|
|
verb=vp.verb ;
|
|
dep=vp.dep ;
|
|
compl=\\p => vp.compl ! p ! np.a ;
|
|
a=np.a
|
|
} ;
|
|
|
|
-- : SC -> VP -> Cl ; -- that she goes is good - что она идёт есть хорошо
|
|
PredSCVP sc vp = {
|
|
subj=sc.s ;
|
|
adv=vp.adv ! (Ag (GSg Neut) P3) ; -- ???
|
|
verb=vp.verb ;
|
|
dep=vp.dep ;
|
|
compl=\\p => vp.compl ! p ! Ag (GSg Neut) P3 ; -- ???
|
|
a=Ag (GSg Neut) P3 -- ???
|
|
} ;
|
|
|
|
-- : S -> SC ; -- that she goes - что она идёт
|
|
EmbedS s = {s = "что" ++ s.s ! Ind} ;
|
|
|
|
-- : Temp -> Pol -> QCl -> QS ; -- who had not slept
|
|
UseQCl temp pol cl = {
|
|
s = \\qf =>
|
|
temp.s
|
|
++ (R.verbEnvAgr cl.subj cl.adv cl.verb Ind temp.t cl.a pol)
|
|
++ cl.dep
|
|
++ cl.compl ! pol.p
|
|
} ;
|
|
|
|
-- : QS -> SC ; -- who goes
|
|
EmbedQS qs = {s = qs.s ! QIndir} ;
|
|
|
|
-- : VP -> SC ; -- to go
|
|
EmbedVP vp = {
|
|
s=vp.adv ! Ag (GSg Neut) P3
|
|
++ (R.verbInf vp.verb)
|
|
++ vp.dep
|
|
++ vp.compl ! Pos ! Ag (GSg Neut) P3 -- ???
|
|
} ;
|
|
|
|
-- : S -> RS -> S ; -- she sleeps, which is good
|
|
RelS s rs = {
|
|
s=\\m=>s.s ! m ++ comma ++ rs.s ! GSg Neut ! Inanimate ! Nom ;
|
|
} ;
|
|
}
|