diff --git a/lib/resource/bulgarian/CatBul.gf b/lib/resource/bulgarian/CatBul.gf index d7ca0785a..5f2347327 100644 --- a/lib/resource/bulgarian/CatBul.gf +++ b/lib/resource/bulgarian/CatBul.gf @@ -53,6 +53,7 @@ concrete CatBul of Cat = open ResBul, Prelude, (R = ParamX) in { VP = { s : ResBul.Tense => Anteriority => Polarity => Agr => Bool => Str ; imp : Polarity => Number => Str ; + ad : Bool => Str ; s2 : Agr => Str ; subjRole : Role } ; diff --git a/lib/resource/bulgarian/PhraseBul.gf b/lib/resource/bulgarian/PhraseBul.gf index 7f52f7b12..99b9f7528 100644 --- a/lib/resource/bulgarian/PhraseBul.gf +++ b/lib/resource/bulgarian/PhraseBul.gf @@ -12,6 +12,7 @@ concrete PhraseBul of Phrase = CatBul ** open Prelude, ResBul in { UttIP ip = {s = ip.s ! RSubj} ; UttIAdv iadv = {s = iadv.s1} ; UttNP np = {s = np.s ! RSubj} ; + UttVP vp = {s = vp.ad ! False ++ "да" ++ vp.s ! Pres ! Simul ! Pos ! {gn=GSg Masc; p=P1} ! False} ; UttAdv adv = adv ; NoPConj = {s = []} ; diff --git a/lib/resource/bulgarian/ResBul.gf b/lib/resource/bulgarian/ResBul.gf index 24107bfe6..bfa4e0c12 100644 --- a/lib/resource/bulgarian/ResBul.gf +++ b/lib/resource/bulgarian/ResBul.gf @@ -191,6 +191,7 @@ resource ResBul = ParamX ** open Prelude in { VP : Type = { s : Tense => Anteriority => Polarity => Agr => Bool => Str ; imp : Polarity => Number => Str ; + ad : Bool => Str ; -- sentential adverb s2 : Agr => Str ; subjRole : Role } ; @@ -244,6 +245,7 @@ resource ResBul = ParamX ** open Prelude in { in aux.s1 ++ verbs.main ++ aux.s2; imp = \\p,n => let ne = case p of {Pos => []; Neg => "не"} ; in ne ++ verb.s ! VImperative n ; + ad = \\_ => [] ; s2 = \\_ => [] ; subjRole = case verb.vtype of { VNormal => RSubj ; @@ -255,6 +257,7 @@ resource ResBul = ParamX ** open Prelude in { insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> { s = vp.s ; imp = vp.imp ; + ad = vp.ad ; s2 = \\a => vp.s2 ! a ++ obj ! a ; subjRole = vp.subjRole } ; @@ -461,13 +464,13 @@ resource ResBul = ParamX ** open Prelude in { \subj,agr,vp -> { s = \\t,a,b,o => let - verb = vp.s ! t ! a ! b ! agr ! False ; - verbq = vp.s ! t ! a ! b ! agr ! True ; + verb : Bool => Str + = \\q => vp.ad ! q ++ vp.s ! t ! a ! b ! agr ! q ; compl = vp.s2 ! agr in case o of { - Main => subj ++ verb ++ compl ; - Inv => verb ++ compl ++ subj ; - Quest => subj ++ verbq ++ compl + Main => subj ++ verb ! False ++ compl ; + Inv => verb ! False ++ compl ++ subj ; + Quest => subj ++ verb ! True ++ compl } } ; diff --git a/lib/resource/bulgarian/SentenceBul.gf b/lib/resource/bulgarian/SentenceBul.gf index 6f7047de4..2560e1c37 100644 --- a/lib/resource/bulgarian/SentenceBul.gf +++ b/lib/resource/bulgarian/SentenceBul.gf @@ -24,6 +24,7 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in { (let vp = predV vv in { s = \\t,a,p,agr,q => vp.s ! t ! a ! p ! agr ! q ++ "да" ++ v2.s ! (VPres (numGenNum agr.gn) agr.p) ; imp = vp.imp ; + ad = vp.ad ; s2 = vp.s2 ; subjRole = vp.subjRole }) ** @@ -43,6 +44,7 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in { EmbedS s = {s = "," ++ "че" ++ s.s} ; EmbedQS qs = {s = qs.s ! QIndir} ; + EmbedVP vp = {s = vp.ad ! False ++ "да" ++ vp.s ! Pres ! Simul ! Pos ! {gn=GSg Masc; p=P1} ! False} ; UseCl t a p cl = { s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! Main diff --git a/lib/resource/bulgarian/VerbBul.gf b/lib/resource/bulgarian/VerbBul.gf index 486809304..8450490ee 100644 --- a/lib/resource/bulgarian/VerbBul.gf +++ b/lib/resource/bulgarian/VerbBul.gf @@ -9,8 +9,9 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in { insertObj (\\_ => v.c2.s ++ np.s ! RObj v.c2.c ++ v.c3.s ++ np2.s ! RObj v.c3.c) (predV v) ; ComplVV vv vp = { - s = \\t,a,p,agr,q => (predV vv).s ! t ! a ! p ! agr ! q ++ "да" ++ vp.s ! Pres ! Simul ! Pos ! agr ! False ; + s = \\t,a,p,agr,q => (predV vv).s ! t ! a ! p ! agr ! q ++ vp.ad ! False ++ "да" ++ vp.s ! Pres ! Simul ! Pos ! agr ! False ; imp = vp.imp ; + ad = \\_ => [] ; s2 = vp.s2 ; subjRole = vp.subjRole } ; @@ -21,7 +22,15 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in { AdvVP vp adv = insertObj (\\_ => adv.s) vp ; - ReflV2 v = predV (reflV v v.c2.c) ; + AdVVP adv vp = { + s = \\t,a,p,agr,q => vp.s ! t ! a ! p ! agr ! False ; + imp = vp.imp ; + ad = \\q => vp.ad ! q ++ adv.s ++ case q of {True => "ли"; False => []} ; + s2 = vp.s2 ; + subjRole = vp.subjRole + } ; + + ReflV2 v = predV (reflV (v ** {lock_V=<>}) v.c2.c) ; PassV2 v = insertObj (\\a => v.s ! VPassive (aform a.gn Indef (RObj Acc))) (predV verbBe) ;