Removed optional condition on meta assertions

This commit is contained in:
Denis Merigoux 2020-04-25 14:21:26 +02:00
parent 6fd013d0d5
commit c270c5fbab
10 changed files with 42 additions and 31 deletions

View File

@ -40,9 +40,11 @@ ALLOCATIONS_FAMILIALES_DIR=$(EXAMPLES_DIR)/allocations_familiales
ENGLISH_DUMMY_DIR=$(EXAMPLES_DIR)/dummy_english
allocations_familiales: $(PYGMENTIZE) build
$(MAKE) -C $(ALLOCATIONS_FAMILIALES_DIR) allocations_familiales.expired
$(MAKE) -C $(ALLOCATIONS_FAMILIALES_DIR) allocations_familiales.pdf
allocations_familiales_expired: build
$(MAKE) -C $(ALLOCATIONS_FAMILIALES_DIR) allocations_familiales.expired
english: $(PYGMENTIZE) build
$(MAKE) -C $(ENGLISH_DUMMY_DIR) english.pdf

View File

@ -102,7 +102,7 @@ champ d'application CalculAllocationsFamiliales :
Une allocation forfaitaire par enfant d'un montant fixé par décret est versée pendant un an à la personne ou au ménage qui assume la charge d'un nombre minimum d'enfants également fixé par décret lorsque l'un ou plusieurs des enfants qui ouvraient droit aux allocations familiales atteignent l'âge limite mentionné au 2° de l'article L. 512-3 . Cette allocation est versée à la condition que le ou les enfants répondent aux conditions autres que celles de l'âge pour l'ouverture du droit aux allocations familiales.
/*
champ d'application CalculAllocationsFamiliales :
assertion allocation_forfaitaire.montant_versé fixé par décret
assertion fixé allocation_forfaitaire.montant_versé par décret
# Ici, l'ouverture du droit aux allocations familiales est conditionné
# au fait d'avoir deux enfants à charges qui répondent aux conditions
@ -124,18 +124,18 @@ champ d'application CalculAllocationsFamiliales :
Le montant des allocations mentionnées aux deux premiers alinéas du présent article, ainsi que celui des majorations mentionnées à l'article L. 521-3 varient en fonction des ressources du ménage ou de la personne qui a la charge des enfants, selon un barème défini par décret.
/*
champ d'application CalculAllocationsFamiliales :
assertion allocations_familiales.montant_versé fixé par décret
assertion allocations_familiales.montant_versé varie avec
assertion fixé allocations_familiales.montant_versé par décret
assertion varie allocations_familiales.montant_versé avec
l521_1.ressources_ménage
assertion majorations_allocations_familiales.montant_versé fixé par décret
assertion majorations_allocations_familiales.montant_versé varie avec
assertion fixé majorations_allocations_familiales.montant_versé par décret
assertion varie majorations_allocations_familiales.montant_versé avec
l521_1.ressources_ménage
*/
Le montant des allocations familiales varie en fonction du nombre d'enfants à charge.
/*
champ d'application CalculAllocationsFamiliales :
assertion allocations_familiales.montant_versé varie avec
assertion varie allocations_familiales.montant_versé avec
nombre de ménage.enfants
*/
@ -154,7 +154,7 @@ Un complément dégressif est versé lorsque les ressources du bénéficiaire d
# document.
champ d'application CalculAllocationsFamiliales :
assertion complément_dégressif.montant_versé fixé par décret
assertion fixé complément_dégressif.montant_versé par décret
*/
@Article L521-2|LEGIARTI000006743210@
@ -294,7 +294,7 @@ Le montant des prestations familiales est déterminé d'après des bases mensuel
/*
# Idem que L521-1, on ne formalise pas ici l'évolution de la BMPA
champ d'application PrestationsFamiliales :
assertion prestations_familiales.base_mensuelle fixé par décret
assertion fixé prestations_familiales.base_mensuelle par décret
*/
@@Livre 7 : Régimes divers - Dispositions diverses@@++

View File

@ -142,17 +142,20 @@ type definition = {
type variation_typ = Increasing | Decreasing
type assertion_content =
| Assert of expression
type meta_assertion =
| FixedBy of qident Pos.marked * ident Pos.marked
| VariesWith of qident Pos.marked * expression Pos.marked * variation_typ Pos.marked option
type assertion = {
assertion_condition : expression Pos.marked option;
assertion_content : assertion_content Pos.marked;
assertion_content : expression Pos.marked;
}
type field_use_item = Rule of rule | Definition of definition | Assertion of assertion
type field_use_item =
| Rule of rule
| Definition of definition
| Assertion of assertion
| MetaAssertion of meta_assertion
type field_use = {
field_use_name : constructor Pos.marked;

View File

@ -155,9 +155,12 @@ let rec lex_code_en lexbuf =
| "assertion" ->
update_and_acc lexbuf;
ASSERTION
| "varies with" ->
| "varies" ->
update_and_acc lexbuf;
VARIES_WITH
VARIES
| "with" ->
update_and_acc lexbuf;
WITH_V
| "for" ->
update_and_acc lexbuf;
FOR

View File

@ -160,9 +160,12 @@ let rec lex_code_fr lexbuf =
| "assertion" ->
update_and_acc lexbuf;
ASSERTION
| "varie avec" ->
| "varie" ->
update_and_acc lexbuf;
VARIES_WITH
VARIES
| "avec" ->
update_and_acc lexbuf;
WITH_V
| "pour" ->
update_and_acc lexbuf;
FOR

View File

@ -38,7 +38,7 @@
%token DOT AND OR LPAREN RPAREN OPTIONAL EQUAL
%token CARDINAL LESSER_EQUAL GREATER_EQUAL
%token ASSERTION FIXED BY YEAR
%token PLUS MINUS MULT DIV MATCH WITH VARIES_WITH
%token PLUS MINUS MULT DIV MATCH WITH VARIES WITH_V
%token FOR ALL WE_HAVE INCREASING DECREASING
%token NOT BOOLEAN PERCENT ARROW
%token FIELD FILLED EURO NOT_EQUAL DEFINITION
@ -322,15 +322,18 @@ variation_type:
| DECREASING { (Decreasing, mk_position $sloc) }
assertion_base:
| e = expression { let (e, _) = e in (Assert e, mk_position $sloc) }
| q = qident FIXED BY i = ident { (FixedBy (q, i), mk_position $sloc) }
| q = qident VARIES_WITH e = base_expression t = option(variation_type) {
(VariesWith (q, e, t), mk_position $sloc)
}
| e = expression { let (e, _) = e in (e, mk_position $sloc) }
assertion:
| cond = option(condition_consequence) base = assertion_base {
(cond, base)
(Assertion {
assertion_condition = cond;
assertion_content = base;
})
}
| FIXED q = qident BY i = ident { MetaAssertion (FixedBy (q, i)) }
| VARIES q = qident WITH_V e = base_expression t = option(variation_type) {
MetaAssertion (VariesWith (q, e, t))
}
application_field_item:
@ -341,10 +344,7 @@ application_field_item:
let (d, _) = d in (Definition d, mk_position $sloc)
}
| ASSERTION contents = assertion {
(let (cond, cont) = contents in Assertion {
assertion_condition = cond;
assertion_content = cont;
}, mk_position $sloc)
(contents, mk_position $sloc)
}
ident:

View File

@ -112,7 +112,7 @@
}
}
{
'match' : '\\b(selon|sous\\s+forme|fixé\\s+par|décroissante|croissante|varie\\s+avec|on\\s+a|dans|tel\\s+que|existe|pour|tout|de|si|alors|sinon)\\b'
'match' : '\\b(selon|sous\\s+forme|fixé|par|décroissante|croissante|varie|avec|on\\s+a|dans|tel\\s+que|existe|pour|tout|de|si|alors|sinon)\\b'
'name' : 'keyword.control.catala'
}
{

View File

@ -213,7 +213,7 @@ code : context {
}
: pattern {
regex \= \b(selon|sous\s+forme|fixé\s+par|décroissante|croissante|varie\s+avec|on\s+a|dans|tel\s+que|existe|pour|tout|de|si|alors|sinon)\b
regex \= \b(selon|sous\s+forme|fixé|par|décroissante|croissante|varie|avec|on\s+a|dans|tel\s+que|existe|pour|tout|de|si|alors|sinon)\b
styles [] = .keyword_expression ;
}

View File

@ -24,7 +24,7 @@ class CatalaLexer(RegexLexer):
(u'(\\s*\\#.*$)', bygroups(Comment.Single)),
(u'(contexte)(\\s+)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)', bygroups(Keyword.Declaration, Text, Name.Variable)),
(u'(donn\xe9e|condition)(\\s+)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)', bygroups(Keyword.Declaration, Text, Text)),
(u'\\b(selon|sous\\s+forme|fix\xe9\\s+par|d\xe9croissante|croissante|varie\\s+avec|on\\s+a|dans|tel\\s+que|existe|pour|tout|de|si|alors|sinon)\\b', bygroups(Keyword.Reserved)),
(u'\\b(selon|sous\\s+forme|fix\xe9|par|d\xe9croissante|croissante|varie|avec|on\\s+a|dans|tel\\s+que|existe|pour|tout|de|si|alors|sinon)\\b', bygroups(Keyword.Reserved)),
(u'\\b(champ\\s+d\'application|si\\s+et\\s+seulement\\s+si|d\xe9pend\\s+de|d\xe9claration|inclus|collection|contenu|optionnel|structure|\xe9num\xe9ration|contexte|r\xe8gle|sous condition|cons\xe9quence|rempli|\xe9gal\\s+\xe0|assertion|d\xe9finition)\\b', bygroups(Keyword.Declaration)),
(u'(\\|[0-9]+/[0-9]+/[0-9]+\\|)', bygroups(Number.Integer)),
(u'\\b(vrai|faux)\\b', bygroups(Keyword.Constant)),