forked from GitHub/gf-rgl
54 lines
1.9 KiB
Plaintext
54 lines
1.9 KiB
Plaintext
--# -path=.:../abstract:../common:prelude
|
|
concrete ExtendBul of Extend = CatBul ** open Prelude, ResBul in {
|
|
|
|
lin
|
|
EmptyRelSlash slash = {
|
|
s = \\t,a,p,agr => slash.c2.s ++ whichRP ! agr.gn ++ slash.s ! agr ! t ! a ! p ! Main ;
|
|
role = RObj Acc
|
|
} ;
|
|
|
|
CompoundN n1 n2 =
|
|
let aform = ASg (case n2.g of {
|
|
AMasc _ => Masc ;
|
|
AFem => Fem ;
|
|
ANeut => Neut
|
|
}) Indef
|
|
in {
|
|
s = \\nf => n1.rel ! nform2aform nf n2.g ++ n2.s ! (indefNForm nf) ;
|
|
rel = \\af => n1.rel ! aform ++ n2.s ! NF Sg Indef ;
|
|
g = n2.g
|
|
} ;
|
|
|
|
PositAdVAdj a = {s = a.adv} ;
|
|
|
|
PresPartAP vp =
|
|
let ap : AForm => Person => Str
|
|
= \\aform,p => vp.ad.s ++
|
|
vp.s ! Imperf ! VPresPart aform ++
|
|
case vp.vtype of {
|
|
VMedial c => reflClitics ! c;
|
|
_ => []
|
|
} ++
|
|
vp.compl ! {gn=aform2gennum aform; p=p} ;
|
|
in {s = ap; adv = ap ! (ASg Neut Indef) ! P3; isPre = vp.isSimple} ;
|
|
|
|
PastPartAP vp =
|
|
let ap : AForm => Person => Str
|
|
= \\aform,p => vp.ad.s ++
|
|
vp.s ! Perf ! VPassive aform ++
|
|
vp.compl1 ! {gn=aform2gennum aform; p=p} ++
|
|
vp.compl2 ! {gn=aform2gennum aform; p=p}
|
|
in {s = ap; adv = ap ! ASg Neut Indef ! P3; isPre = vp.isSimple} ;
|
|
|
|
PastPartAgentAP vp np =
|
|
let ap : AForm => Person => Str
|
|
= \\aform,p => vp.ad.s ++
|
|
vp.s ! Perf ! VPassive aform ++
|
|
vp.compl1 ! {gn=aform2gennum aform; p=p} ++
|
|
vp.compl2 ! {gn=aform2gennum aform; p=p} ++
|
|
"от" ++ np.s ! RObj Acc
|
|
in {s = ap; adv = ap ! ASg Neut Indef ! P3; isPre = False} ;
|
|
|
|
}
|
|
|