1
0
forked from GitHub/gf-rgl
Files
gf-rgl/src/bulgarian/ExtendBul.gf

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} ;
}