diff --git a/src/bulgarian/CatBul.gf b/src/bulgarian/CatBul.gf index 9e9c9407..783ebc37 100644 --- a/src/bulgarian/CatBul.gf +++ b/src/bulgarian/CatBul.gf @@ -1,5 +1,5 @@ --# -coding=utf8 -concrete CatBul of Cat = CommonX - [IAdv,AdV] ** open ResBul, Prelude, Predef, (R = ParamX) in { +concrete CatBul of Cat = CommonX - [Temp,Tense,IAdv,AdV] ** open ResBul, Prelude, Predef, (R = ParamX) in { lincat -- Tensed/Untensed @@ -11,6 +11,9 @@ concrete CatBul of Cat = CommonX - [IAdv,AdV] ** open ResBul, Prelude, Predef, ( -- Sentence + Temp = {s : Str ; t : ResBul.Tense ; a : R.Anteriority} ; + Tense = {s : Str ; t : ResBul.Tense} ; + Cl = {s : ResBul.Tense => Anteriority => Polarity => Order => Str} ; ClSlash = { s : Agr => ResBul.Tense => Anteriority => Polarity => Order => Str ; @@ -115,7 +118,7 @@ concrete CatBul of Cat = CommonX - [IAdv,AdV] ** open ResBul, Prelude, Predef, ( 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; + ClSlash = \cl -> cl.s ! agrP3 (GSg Masc) ! VPresent ! Simul ! Pos ! Main ++ cl.c2.s; VP = \vp -> linrefVP vp; VPSlash = \vps -> let vp : ResBul.VP diff --git a/src/bulgarian/ExtendBul.gf b/src/bulgarian/ExtendBul.gf index bae3834d..19f9a990 100644 --- a/src/bulgarian/ExtendBul.gf +++ b/src/bulgarian/ExtendBul.gf @@ -317,5 +317,7 @@ lin AnaphPron np = => they_Pron } ; +lin TPasseSimple = {s = []} ** {t = VPastSimple} ; --# notpresent + } diff --git a/src/bulgarian/GrammarBul.gf b/src/bulgarian/GrammarBul.gf index 39adaefe..971d0ca2 100644 --- a/src/bulgarian/GrammarBul.gf +++ b/src/bulgarian/GrammarBul.gf @@ -15,7 +15,7 @@ concrete GrammarBul of Grammar = TextBul, StructuralBul, IdiomBul, - TenseX - [CAdv,IAdv,AdV,SC], + TenseBul, NamesBul ** { flags coding=utf8 ; diff --git a/src/bulgarian/IdiomBul.gf b/src/bulgarian/IdiomBul.gf index c8cd86c2..34bd8dbb 100644 --- a/src/bulgarian/IdiomBul.gf +++ b/src/bulgarian/IdiomBul.gf @@ -29,6 +29,7 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in { present = verb ! (VPres (numGenNum agr.gn) agr.p) ; aorist = verb ! (VAorist (numGenNum agr.gn) agr.p) ; + imperfect = verb ! (VImperfect (numGenNum agr.gn) agr.p) ; perfect = verb ! (VPerfect (aform agr.gn Indef (RObj Acc))) ; auxPres = auxBe ! VPres (numGenNum agr.gn) agr.p ; @@ -37,14 +38,16 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in { v : {aux1:Str; aux2:Str; main:Str} = case of { - => {aux1=[]; aux2=[]; main=present} + => {aux1=[]; aux2=[]; main=present} ; --# notpresent - => {aux1=[]; aux2=auxPres; main=perfect} ; --# notpresent - => {aux1=[]; aux2=[]; main=aorist} ; --# notpresent - => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent - => {aux1="ще"; aux2=[]; main=present} ; --# notpresent - => {aux1="ще"++auxPres; aux2=[]; main=perfect} ; --# notpresent - => {aux1=auxCondS; aux2=[]; main=perfect} --# notpresent + => {aux1=[]; aux2=auxPres; main=perfect} ; --# notpresent + => {aux1=[]; aux2=[]; main=aorist} ; --# notpresent + => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent + => {aux1=[]; aux2=[]; main=imperfect} ; --# notpresent + => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent + => {aux1="ще"; aux2=[]; main=present} ; --# notpresent + => {aux1="ще"++auxPres; aux2=[]; main=perfect} ; --# notpresent + => {aux1=auxCondS; aux2=[]; main=perfect} --# notpresent } ; in case o of { diff --git a/src/bulgarian/ResBul.gf b/src/bulgarian/ResBul.gf index e869807c..f3d665f8 100644 --- a/src/bulgarian/ResBul.gf +++ b/src/bulgarian/ResBul.gf @@ -8,7 +8,7 @@ -- implement $Test$, it moreover contains regular lexical -- patterns needed for $Lex$. -resource ResBul = ParamX ** open Prelude, Predef in { +resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in { flags coding=utf8 ; optimize=all ; @@ -68,7 +68,7 @@ resource ResBul = ParamX ** open Prelude, Predef in { | VNoun NForm | VGerund ; - + VType = VNormal | VMedial Case @@ -77,6 +77,14 @@ resource ResBul = ParamX ** open Prelude, Predef in { VVType = VVInf Aspect | VVGerund ; + Tense = + VPresent + | VPastSimple --# notpresent + | VPastImperfect --# notpresent + | VFut --# notpresent + | VCond --# notpresent + ; + -- The order of sentence is needed already in $VP$. Order = Main | Inv | Quest ; @@ -533,10 +541,12 @@ resource ResBul = ParamX ** open Prelude, Predef in { present = verb.s ! asp ! (VPres (numGenNum clitic.agr.gn) clitic.agr.p) ; presentImperf = verb.s ! Imperf ! (VPres (numGenNum clitic.agr.gn) clitic.agr.p) ; aorist = verb.s ! asp ! (VAorist (numGenNum clitic.agr.gn) clitic.agr.p) ; + imperfect = verb.s ! asp ! (VImperfect (numGenNum clitic.agr.gn) clitic.agr.p) ; perfect = verb.s ! asp ! (VPerfect (aform clitic.agr.gn Indef (RObj Acc))) ; auxPres = auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ; auxAorist = auxBe ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ; + auxImperf = auxBe ! VImperfect (numGenNum clitic.agr.gn) clitic.agr.p ; auxCondS = auxCond ! numGenNum clitic.agr.gn ! clitic.agr.p ; apc : Str -> Str = \s -> @@ -580,14 +590,16 @@ resource ResBul = ParamX ** open Prelude, Predef in { verbs : {aux:{s1:Str; s2:Str}; main:Str} = case of { - => {aux=vf2 clitic.s; main=presentImperf} + => {aux=vf2 clitic.s; main=presentImperf} ; --# notpresent - => {aux=vf1 clitic.s; main=perfect} ; --# notpresent - => {aux=vf2 clitic.s; main=aorist} ; --# notpresent - => {aux=vf4 auxAorist; main=perfect} ; --# notpresent - => {aux=vf3 clitic.s; main=present} ; --# notpresent - => {aux=vf3 (apc []); main=perfect} ; --# notpresent - => {aux=vf4 auxCondS; main=perfect} --# notpresent + => {aux=vf1 clitic.s; main=perfect} ; --# notpresent + => {aux=vf2 clitic.s; main=aorist} ; --# notpresent + => {aux=vf4 auxAorist; main=perfect} ; --# notpresent + => {aux=vf2 clitic.s; main=imperfect} ; --# notpresent + => {aux=vf4 auxImperf; main=perfect} ; --# notpresent + => {aux=vf3 clitic.s; main=present} ; --# notpresent + => {aux=vf3 (apc []); main=perfect} ; --# notpresent + => {aux=vf4 auxCondS; main=perfect} --# notpresent } in verb.ad.s ++ li0 ++ verbs.aux.s1 ++ verbs.main ++ verbs.aux.s2 ; diff --git a/src/bulgarian/TenseBul.gf b/src/bulgarian/TenseBul.gf new file mode 100644 index 00000000..295d2be9 --- /dev/null +++ b/src/bulgarian/TenseBul.gf @@ -0,0 +1,9 @@ +concrete TenseBul of Tense = CatBul [Tense,Temp], TenseX - [Temp,Tense,TPres,TPast,TFut,TCond,IAdv,AdV,SC] ** open ResBul in { + +lin + TPres = {s = []} ** {t = VPresent} ; + TPast = {s = []} ** {t = VPastImperfect} ; --# notpresent + TFut = {s = []} ** {t = VFut} ; --# notpresent + TCond = {s = []} ** {t = VCond} ; --# notpresent + +}