diff --git a/lib/src/bulgarian/CatBul.gf b/lib/src/bulgarian/CatBul.gf index 8e3e80967..470f86069 100644 --- a/lib/src/bulgarian/CatBul.gf +++ b/lib/src/bulgarian/CatBul.gf @@ -87,4 +87,50 @@ concrete CatBul of Cat = CommonX - [IAdv,CAdv] ** open ResBul, Prelude, Predef, N2 = {s : NForm => Str; g : AGender} ** {c2 : Preposition} ; N3 = {s : NForm => Str; g : AGender} ** {c2,c3 : Preposition} ; PN = {s : Str; g : Gender} ; + + lindef + SSlash = \s -> {s = \\_ => s; c2 = {s=""; c=Acc}}; + ClSlash = \s -> {s = \\_,_,_,_,_ => s; c2 = {s=""; c=Acc}}; + + VP = \s -> predV {s = \\_,_ => s; vtype = VNormal}; + VPSlash = \s -> slashV {s = \\_,_ => s; vtype = VNormal} {s=""; c=Acc}; + + V, VS, VQ, VA = \s -> {s = \\_,_ => s; vtype = VNormal}; + V2, V2A = \s -> {s = \\_,_ => s; vtype = VNormal; c2 = {s=""; c=Acc}}; + V2V, V2S, V2Q = \s -> {s = \\_,_ => s; vtype = VNormal; c2,c3 = {s=""; c=Acc}}; + V3 = \s -> {s = \\_,_ => s; vtype = VNormal; c2,c3 = {s=""; c=Acc}}; + VV = \s -> {s = \\_,_ => s; vtype = VNormal; typ = VVInf}; + + A = \s -> {s = \\_ => s; adv = s}; + A2 = \s -> {s = \\_ => s; adv = s; c2 = ""}; + + N = \s -> {s = \\_ => s; rel = \\_ => s; g = AMasc NonHuman}; + N2 = \s -> {s = \\_ => s; g = AMasc NonHuman; c2 = {s=""; c=Acc}}; + N3 = \s -> {s = \\_ => s; g = AMasc NonHuman; c2,c3 = {s=""; c=Acc}}; + + linref + SSlash = \ss -> ss.s ! agrP3 (GSg Masc) ++ ss.c2.s; + ClSlash = \cl -> cl.s ! agrP3 (GSg Masc) ! Pres ! Simul ! Pos ! Main ++ cl.c2.s; + + VP = \vp -> linrefVP vp; + VPSlash = \vps -> let vp : ResBul.VP + = {s = vps.s ; + ad = vps.ad ; + compl = \\a => vps.compl1 ! a ++ vps.c2.s ++ vps.compl2 ! a ; + vtype = vps.vtype + } + in linrefVP vp; + + V, VS, VQ, VA = \v -> linrefVP (predV v); + V2, V2A = \v -> linrefVP (predV v) ++ v.c2.s; + V2V, V2S, V2Q = \v -> linrefVP (predV v) ++ v.c2.s ++ v.c3.s; + V3 = \v -> linrefVP (predV v) ++ v.c2.s ++ v.c3.s; + VV = \v -> linrefVP (predV v); + + A = \a -> a.s ! ASg Masc Indef; + A2 = \a -> a.s ! ASg Masc Indef ++ a.c2; + + N = \n -> n.s ! NF Sg Indef; + N2 = \n -> n.s ! NF Sg Indef ++ n.c2.s; + N3 = \n -> n.s ! NF Sg Indef ++ n.c2.s ++ n.c3.s; } diff --git a/lib/src/bulgarian/ResBul.gf b/lib/src/bulgarian/ResBul.gf index 7de5ede20..7578482ca 100644 --- a/lib/src/bulgarian/ResBul.gf +++ b/lib/src/bulgarian/ResBul.gf @@ -494,6 +494,18 @@ resource ResBul = ParamX ** open Prelude, Predef in { } ++ vp.compl ! agr ; + linrefVP : VP -> Str = + \vp -> + let agr = {gn = GSg Neut; p = P1}; + clitic = case vp.vtype of { + VNormal => {s=[]; agr=agr} ; + VMedial c => {s=reflClitics ! c; agr=agr} ; + VPhrasal c => {s=personalClitics ! c ! agr.gn ! agr.p; agr={gn=GSg Neut; p=P3}} + } ; + in vp.ad.s ++ + vp.s ! Imperf ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ++ clitic.s ++ + vp.compl ! agr ; + gerund : VP -> Aspect => Agr => Str = \vp -> \\asp,agr => let clitic = case vp.vtype of {