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 --# -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 lincat
-- Tensed/Untensed -- Tensed/Untensed
@@ -11,6 +11,9 @@ concrete CatBul of Cat = CommonX - [IAdv,AdV] ** open ResBul, Prelude, Predef, (
-- Sentence -- Sentence
Temp = {s : Str ; t : ResBul.Tense ; a : R.Anteriority} ;
Tense = {s : Str ; t : ResBul.Tense} ;
Cl = {s : ResBul.Tense => Anteriority => Polarity => Order => Str} ; Cl = {s : ResBul.Tense => Anteriority => Polarity => Order => Str} ;
ClSlash = { ClSlash = {
s : Agr => ResBul.Tense => Anteriority => Polarity => Order => Str ; s : Agr => ResBul.Tense => Anteriority => Polarity => Order => Str ;
@@ -115,7 +118,7 @@ concrete CatBul of Cat = CommonX - [IAdv,AdV] ** open ResBul, Prelude, Predef, (
linref linref
SSlash = \ss -> ss.s ! agrP3 (GSg Masc) ++ ss.c2.s; 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; VP = \vp -> linrefVP vp;
VPSlash = \vps -> let vp : ResBul.VP VPSlash = \vps -> let vp : ResBul.VP

View File

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

View File

@@ -15,7 +15,7 @@ concrete GrammarBul of Grammar =
TextBul, TextBul,
StructuralBul, StructuralBul,
IdiomBul, IdiomBul,
TenseX - [CAdv,IAdv,AdV,SC], TenseBul,
NamesBul NamesBul
** { ** {
flags coding=utf8 ; 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) ; present = verb ! (VPres (numGenNum agr.gn) agr.p) ;
aorist = verb ! (VAorist (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))) ; perfect = verb ! (VPerfect (aform agr.gn Indef (RObj Acc))) ;
auxPres = auxBe ! VPres (numGenNum agr.gn) agr.p ; 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} v : {aux1:Str; aux2:Str; main:Str}
= case <t,a> of { = case <t,a> of {
<Pres,Simul> => {aux1=[]; aux2=[]; main=present} <VPresent,Simul> => {aux1=[]; aux2=[]; main=present}
; --# notpresent ; --# notpresent
<Pres,Anter> => {aux1=[]; aux2=auxPres; main=perfect} ; --# notpresent <VPresent,Anter> => {aux1=[]; aux2=auxPres; main=perfect} ; --# notpresent
<Past,Simul> => {aux1=[]; aux2=[]; main=aorist} ; --# notpresent <VPastSimple,Simul> => {aux1=[]; aux2=[]; main=aorist} ; --# notpresent
<Past,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent <VPastSimple,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent
<Fut, Simul> => {aux1="ще"; aux2=[]; main=present} ; --# notpresent <VPastImperfect,Simul> => {aux1=[]; aux2=[]; main=imperfect} ; --# notpresent
<Fut, Anter> => {aux1="ще"++auxPres; aux2=[]; main=perfect} ; --# notpresent <VPastImperfect,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent
<Cond,_> => {aux1=auxCondS; aux2=[]; 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 { in case o of {

View File

@@ -8,7 +8,7 @@
-- implement $Test$, it moreover contains regular lexical -- implement $Test$, it moreover contains regular lexical
-- patterns needed for $Lex$. -- patterns needed for $Lex$.
resource ResBul = ParamX ** open Prelude, Predef in { resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in {
flags flags
coding=utf8 ; optimize=all ; coding=utf8 ; optimize=all ;
@@ -68,7 +68,7 @@ resource ResBul = ParamX ** open Prelude, Predef in {
| VNoun NForm | VNoun NForm
| VGerund | VGerund
; ;
VType = VType =
VNormal VNormal
| VMedial Case | VMedial Case
@@ -77,6 +77,14 @@ resource ResBul = ParamX ** open Prelude, Predef in {
VVType = VVInf Aspect | VVGerund ; VVType = VVInf Aspect | VVGerund ;
Tense =
VPresent
| VPastSimple --# notpresent
| VPastImperfect --# notpresent
| VFut --# notpresent
| VCond --# notpresent
;
-- The order of sentence is needed already in $VP$. -- The order of sentence is needed already in $VP$.
Order = Main | Inv | Quest ; 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) ; present = verb.s ! asp ! (VPres (numGenNum clitic.agr.gn) clitic.agr.p) ;
presentImperf = verb.s ! Imperf ! (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) ; 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))) ; perfect = verb.s ! asp ! (VPerfect (aform clitic.agr.gn Indef (RObj Acc))) ;
auxPres = auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ; auxPres = auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ;
auxAorist = auxBe ! VAorist (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 ; auxCondS = auxCond ! numGenNum clitic.agr.gn ! clitic.agr.p ;
apc : Str -> Str = \s -> apc : Str -> Str = \s ->
@@ -580,14 +590,16 @@ resource ResBul = ParamX ** open Prelude, Predef in {
verbs : {aux:{s1:Str; s2:Str}; main:Str} = verbs : {aux:{s1:Str; s2:Str}; main:Str} =
case <t,a> of { case <t,a> of {
<Pres,Simul> => {aux=vf2 clitic.s; main=presentImperf} <VPresent,Simul> => {aux=vf2 clitic.s; main=presentImperf}
; --# notpresent ; --# notpresent
<Pres,Anter> => {aux=vf1 clitic.s; main=perfect} ; --# notpresent <VPresent,Anter> => {aux=vf1 clitic.s; main=perfect} ; --# notpresent
<Past,Simul> => {aux=vf2 clitic.s; main=aorist} ; --# notpresent <VPastSimple,Simul> => {aux=vf2 clitic.s; main=aorist} ; --# notpresent
<Past,Anter> => {aux=vf4 auxAorist; main=perfect} ; --# notpresent <VPastSimple,Anter> => {aux=vf4 auxAorist; main=perfect} ; --# notpresent
<Fut, Simul> => {aux=vf3 clitic.s; main=present} ; --# notpresent <VPastImperfect,Simul> => {aux=vf2 clitic.s; main=imperfect} ; --# notpresent
<Fut, Anter> => {aux=vf3 (apc []); main=perfect} ; --# notpresent <VPastImperfect,Anter> => {aux=vf4 auxImperf; main=perfect} ; --# notpresent
<Cond,_ > => {aux=vf4 auxCondS; 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 ; 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
}