TPasseSimple unlock four more tenses in Bulgarian as well

This commit is contained in:
Krasimir Angelov
2023-10-10 13:38:30 +02:00
parent e22bb13eda
commit af1010da71
6 changed files with 48 additions and 19 deletions

View File

@@ -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

View File

@@ -317,5 +317,7 @@ lin AnaphPron np =
<GPl, _> => they_Pron
} ;
lin TPasseSimple = {s = []} ** {t = VPastSimple} ; --# notpresent
}

View File

@@ -15,7 +15,7 @@ concrete GrammarBul of Grammar =
TextBul,
StructuralBul,
IdiomBul,
TenseX - [CAdv,IAdv,AdV,SC],
TenseBul,
NamesBul
** {
flags coding=utf8 ;

View File

@@ -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 <t,a> of {
<Pres,Simul> => {aux1=[]; aux2=[]; main=present}
<VPresent,Simul> => {aux1=[]; aux2=[]; main=present}
; --# notpresent
<Pres,Anter> => {aux1=[]; aux2=auxPres; main=perfect} ; --# notpresent
<Past,Simul> => {aux1=[]; aux2=[]; main=aorist} ; --# notpresent
<Past,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent
<Fut, Simul> => {aux1="ще"; aux2=[]; main=present} ; --# notpresent
<Fut, Anter> => {aux1="ще"++auxPres; aux2=[]; main=perfect} ; --# notpresent
<Cond,_> => {aux1=auxCondS; aux2=[]; main=perfect} --# notpresent
<VPresent,Anter> => {aux1=[]; aux2=auxPres; main=perfect} ; --# notpresent
<VPastSimple,Simul> => {aux1=[]; aux2=[]; main=aorist} ; --# notpresent
<VPastSimple,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent
<VPastImperfect,Simul> => {aux1=[]; aux2=[]; main=imperfect} ; --# notpresent
<VPastImperfect,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent
<VFut, Simul> => {aux1="ще"; aux2=[]; main=present} ; --# notpresent
<VFut, Anter> => {aux1="ще"++auxPres; aux2=[]; main=perfect} ; --# notpresent
<VCond,_> => {aux1=auxCondS; aux2=[]; main=perfect} --# notpresent
} ;
in case o of {

View File

@@ -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 ;
@@ -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 <t,a> of {
<Pres,Simul> => {aux=vf2 clitic.s; main=presentImperf}
<VPresent,Simul> => {aux=vf2 clitic.s; main=presentImperf}
; --# notpresent
<Pres,Anter> => {aux=vf1 clitic.s; main=perfect} ; --# notpresent
<Past,Simul> => {aux=vf2 clitic.s; main=aorist} ; --# notpresent
<Past,Anter> => {aux=vf4 auxAorist; main=perfect} ; --# notpresent
<Fut, Simul> => {aux=vf3 clitic.s; main=present} ; --# notpresent
<Fut, Anter> => {aux=vf3 (apc []); main=perfect} ; --# notpresent
<Cond,_ > => {aux=vf4 auxCondS; main=perfect} --# notpresent
<VPresent,Anter> => {aux=vf1 clitic.s; main=perfect} ; --# notpresent
<VPastSimple,Simul> => {aux=vf2 clitic.s; main=aorist} ; --# notpresent
<VPastSimple,Anter> => {aux=vf4 auxAorist; main=perfect} ; --# notpresent
<VPastImperfect,Simul> => {aux=vf2 clitic.s; main=imperfect} ; --# notpresent
<VPastImperfect,Anter> => {aux=vf4 auxImperf; main=perfect} ; --# notpresent
<VFut, Simul> => {aux=vf3 clitic.s; main=present} ; --# notpresent
<VFut, Anter> => {aux=vf3 (apc []); main=perfect} ; --# notpresent
<VCond,_ > => {aux=vf4 auxCondS; main=perfect} --# notpresent
}
in verb.ad.s ++ li0 ++ verbs.aux.s1 ++ verbs.main ++ verbs.aux.s2 ;

View File

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