Added scope inclusion to tutorial

This commit is contained in:
Denis Merigoux 2020-05-17 23:01:07 +02:00
parent 9fa20a160f
commit 982e4f5748
8 changed files with 187 additions and 113 deletions

View File

@ -191,7 +191,7 @@ déclaration champ d'application CalculPrestationsFamiliales :
contexte l512_3 contenu L512_3
champ d'application CalculPrestationsFamiliales:
inclus champ d'application MénageBienFormé contexte
inclus ménage_bien_formé champ d'application MénageBienFormé contexte
ménage = ménage
déclaration champ d'application CalculAllocationsFamiliales :
@ -212,9 +212,11 @@ déclaration champ d'application CalculAllocationsFamiliales :
contexte d521_3 contenu D521_3
champ d'application CalculAllocationsFamiliales:
inclus champ d'application CalculPrestationsFamiliales contexte
ménage = ménage
date_calcul = date_calcul
inclus calcul_prestations_familiales
champ d'application CalculPrestationsFamiliales
contexte
ménage = ménage
date_calcul = date_calcul
# AllocationsFamiliales est un cas particulier de PrestationsFamiliales,
# le dernier est donc inclus dans l'autre. Il est nécessaire de préciser
# que les deux contextes parlent du même ménage pour caractériser

View File

@ -55,11 +55,11 @@ champ d'application CalculAllocationFamilialesAvril2008:
définition l521_3.minimum_alinéa_2 de enfant égal à 16 an
champ d'application CalculAllocationsFamiliales :
inclus champ d'application AllocationFamilialesAvril2008
inclus calcul_avril_2008 champ d'application AllocationFamilialesAvril2008
définition l521_3.minimum_alinéa_2 de enfant
sous condition (enfant.date_naissance + 11 an <= |30/04/2008|)
conséquence égal à
CalculAllocationFamilialesAvril2008.l521_3.minimum_alinéa_2 de enfant
calcul_avril_2008.l521_3.minimum_alinéa_2 de enfant
*/
@Article R521-2|LEGIARTI000006750608@
Dans les situations visées au deuxième alinéa de l'article L. 521-2 , l'allocataire est celui des deux parents qu'ils désignent d'un commun accord. A défaut d'accord sur la désignation d'un allocataire unique, chacun des deux parents peut se voir reconnaître la qualité d'allocataire :

View File

@ -97,3 +97,73 @@ scope IncomeTaxComputation:
*/
When the Catala program will execute, the right definition will be dynamically chosen by looking at which condition is true. A correctly drafted legislative source should always ensure that at most one condition is true at all times. However, if it is not the case, Catala will let you define a precedence on the conditions, which has to be justified by the law.
@@Functions@@
Catala lets you define functions anywhere in your data. Here's what it looks like in the metadata definition when we want to define a two-breackets tax computation:
@@Begin metadata@@
/*
declaration structure TwoBrackets:
data breakpoint content amount
data rate1 content decimal
data rate2 content decimal
declaration scope TwoBracketsTaxComputation :
context brackets content TwoBrackets
context tax_formula content amount depends on amount
*/
@@End metadata@@
And in the code:
@Article4@ The tax amount for a two-brackets computation is equal to the amount of income in each bracket multiplied by the rate of each bracket.
/*
scope TwoBracketsTaxComputation :
definition tax of income equals
if income <= breakpoint then
income * rate1
else (
breakpoint * rate1 + (income - breakpoint) * rate2
)
*/
@@Scope inclusion@@
Now that we've defined our helper scope for computing a two-brackets tax, we want to use it in our main tax computation scope.
@Article 5@ For individuals whose income is greater than \$100,000, the income tax of article 1 is computed with a two-brackets system.
/*
scope IncomeTaxComputation :
includes two_brackets_for_rich scope TwoBracketsTaxComputation
definition article1.income_tax under condition
individual.income >= $100,000
consequence equals
two_brackets_for_rich.tax of individual.income
*/
Scope inclusion also comes with a syntactic sugar for quickly and conditionnaly
connecting context quantities :
@@Begin metadata@@
/*
declaration scope ExemptedOfTax:
context article1 content Article1
*/
@@End metadata@@
@Article 6@
Individuals earning less than \$10,000 are exempted of the income tax mentionned at article 1.
/*
scope ExemptedOfTax :
definition article1.income_tax equals $0
scope IncomeTaxComputation:
includes tax_exempt scope ExemptedOfTax context
article1 = article1
under condition
individual.income <= $10,000
*/
This snippet of code actually brings the definition of article1.income_tax of ExemptedOfTax into the IncomeTaxComputation scope, prefixing it with the "income under \$10,000" condition.

View File

@ -144,6 +144,7 @@ type scope_inclusion_join = {
}
type scope_inclusion = {
scope_inclusion_name : ident Pos.marked;
scope_inclusion_sub_scope : constructor Pos.marked;
scope_inclusion_joins : scope_inclusion_join Pos.marked list;
scope_inclusion_condition : expression Pos.marked option;

View File

@ -96,7 +96,7 @@ let rec lex_code_en (lexbuf : lexbuf) : token =
| "data" ->
update_acc lexbuf;
DATA
| "depends" ->
| "depends on" ->
update_acc lexbuf;
DEPENDS
| "declaration" ->

View File

@ -1,6 +1,6 @@
source_file_or_master: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR COLON ALT CONSTRUCTOR CONTENT BOOLEAN INCLUDES
##
## Ends in an error in state: 262.
## Ends in an error in state: 263.
##
## nonempty_list(enum_decl_line) -> enum_decl_line . [ SCOPE END_CODE DECLARATION ]
## nonempty_list(enum_decl_line) -> enum_decl_line . nonempty_list(enum_decl_line) [ SCOPE END_CODE DECLARATION ]
@ -13,7 +13,7 @@ Inclusion does not concern content of enumeration cases
source_file_or_master: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR COLON ALT CONSTRUCTOR CONTENT YEAR
##
## Ends in an error in state: 257.
## Ends in an error in state: 258.
##
## enum_decl_line_payload -> CONTENT . typ [ SCOPE END_CODE DECLARATION ALT ]
##
@ -26,7 +26,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR COLON ALT CONSTRUCTOR YEAR
##
## Ends in an error in state: 256.
## Ends in an error in state: 257.
##
## enum_decl_line -> ALT constructor . option(enum_decl_line_payload) [ SCOPE END_CODE DECLARATION ALT ]
##
@ -39,7 +39,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR COLON ALT YEAR
##
## Ends in an error in state: 255.
## Ends in an error in state: 256.
##
## enum_decl_line -> ALT . constructor option(enum_decl_line_payload) [ SCOPE END_CODE DECLARATION ALT ]
##
@ -52,7 +52,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR COLON YEAR
##
## Ends in an error in state: 254.
## Ends in an error in state: 255.
##
## code_item -> DECLARATION ENUM constructor COLON . nonempty_list(enum_decl_line) [ SCOPE END_CODE DECLARATION ]
##
@ -65,7 +65,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR YEAR
##
## Ends in an error in state: 253.
## Ends in an error in state: 254.
##
## code_item -> DECLARATION ENUM constructor . COLON nonempty_list(enum_decl_line) [ SCOPE END_CODE DECLARATION ]
##
@ -78,7 +78,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION ENUM YEAR
##
## Ends in an error in state: 252.
## Ends in an error in state: 253.
##
## code_item -> DECLARATION ENUM . constructor COLON nonempty_list(enum_decl_line) [ SCOPE END_CODE DECLARATION ]
##
@ -91,7 +91,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT IDENT CONTENT BOOLEAN DEPENDS BOOLEAN DEPENDS
##
## Ends in an error in state: 249.
## Ends in an error in state: 250.
##
## nonempty_list(scope_decl_item) -> scope_decl_item . [ SCOPE END_CODE DECLARATION ]
## nonempty_list(scope_decl_item) -> scope_decl_item . nonempty_list(scope_decl_item) [ SCOPE END_CODE DECLARATION ]
@ -105,7 +105,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT IDENT CONTENT TEXT DATA
##
## Ends in an error in state: 247.
## Ends in an error in state: 248.
##
## scope_decl_item -> CONTEXT ident CONTENT typ . option(struct_scope_func) [ SCOPE END_CODE DECLARATION CONTEXT ]
##
@ -118,7 +118,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT IDENT CONTENT YEAR
##
## Ends in an error in state: 246.
## Ends in an error in state: 247.
##
## scope_decl_item -> CONTEXT ident CONTENT . typ option(struct_scope_func) [ SCOPE END_CODE DECLARATION CONTEXT ]
##
@ -131,7 +131,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT IDENT YEAR
##
## Ends in an error in state: 245.
## Ends in an error in state: 246.
##
## scope_decl_item -> CONTEXT ident . CONTENT typ option(struct_scope_func) [ SCOPE END_CODE DECLARATION CONTEXT ]
##
@ -144,7 +144,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT YEAR
##
## Ends in an error in state: 244.
## Ends in an error in state: 245.
##
## scope_decl_item -> CONTEXT . ident CONTENT typ option(struct_scope_func) [ SCOPE END_CODE DECLARATION CONTEXT ]
##
@ -157,7 +157,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON YEAR
##
## Ends in an error in state: 243.
## Ends in an error in state: 244.
##
## code_item -> DECLARATION SCOPE constructor COLON . nonempty_list(scope_decl_item) [ SCOPE END_CODE DECLARATION ]
##
@ -170,7 +170,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR YEAR
##
## Ends in an error in state: 242.
## Ends in an error in state: 243.
##
## code_item -> DECLARATION SCOPE constructor . COLON nonempty_list(scope_decl_item) [ SCOPE END_CODE DECLARATION ]
##
@ -183,7 +183,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION SCOPE YEAR
##
## Ends in an error in state: 241.
## Ends in an error in state: 242.
##
## code_item -> DECLARATION SCOPE . constructor COLON nonempty_list(scope_decl_item) [ SCOPE END_CODE DECLARATION ]
##
@ -196,7 +196,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON CONDITION IDENT DEPENDS BOOLEAN INCLUDES
##
## Ends in an error in state: 236.
## Ends in an error in state: 237.
##
## list(struct_scope) -> struct_scope . list(struct_scope) [ SCOPE END_CODE DECLARATION ]
##
@ -209,7 +209,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON CONDITION IDENT DEPENDS COLLECTION BEGIN_METADATA
##
## Ends in an error in state: 228.
## Ends in an error in state: 229.
##
## typ -> collection_marked . typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONTEXT CONDITION ALT ]
##
@ -222,7 +222,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON CONDITION IDENT DEPENDS YEAR
##
## Ends in an error in state: 232.
## Ends in an error in state: 233.
##
## struct_scope_func -> DEPENDS . typ [ SCOPE END_CODE DECLARATION DATA CONTEXT CONDITION ]
##
@ -235,7 +235,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON CONDITION IDENT YEAR
##
## Ends in an error in state: 231.
## Ends in an error in state: 232.
##
## struct_scope -> struct_scope_base . option(struct_scope_func) [ SCOPE END_CODE DECLARATION DATA CONDITION ]
##
@ -247,7 +247,7 @@ Unexpected token, struct scope declaration is over at this point
source_file_or_master: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON CONDITION YEAR
##
## Ends in an error in state: 238.
## Ends in an error in state: 239.
##
## struct_scope_base -> condition_pos . ident [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ]
##
@ -260,7 +260,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON DATA IDENT CONTENT YEAR
##
## Ends in an error in state: 214.
## Ends in an error in state: 215.
##
## struct_scope_base -> DATA ident CONTENT . typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ]
##
@ -273,7 +273,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON DATA IDENT YEAR
##
## Ends in an error in state: 213.
## Ends in an error in state: 214.
##
## struct_scope_base -> DATA ident . CONTENT typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ]
##
@ -286,7 +286,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON DATA YEAR
##
## Ends in an error in state: 212.
## Ends in an error in state: 213.
##
## struct_scope_base -> DATA . ident CONTENT typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ]
##
@ -299,7 +299,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON YEAR
##
## Ends in an error in state: 211.
## Ends in an error in state: 212.
##
## code_item -> DECLARATION STRUCT constructor COLON . list(struct_scope) [ SCOPE END_CODE DECLARATION ]
##
@ -312,7 +312,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR YEAR
##
## Ends in an error in state: 210.
## Ends in an error in state: 211.
##
## code_item -> DECLARATION STRUCT constructor . COLON list(struct_scope) [ SCOPE END_CODE DECLARATION ]
##
@ -325,7 +325,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION STRUCT YEAR
##
## Ends in an error in state: 209.
## Ends in an error in state: 210.
##
## code_item -> DECLARATION STRUCT . constructor COLON list(struct_scope) [ SCOPE END_CODE DECLARATION ]
##
@ -338,7 +338,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE DECLARATION YEAR
##
## Ends in an error in state: 208.
## Ends in an error in state: 209.
##
## code_item -> DECLARATION . STRUCT constructor COLON list(struct_scope) [ SCOPE END_CODE DECLARATION ]
## code_item -> DECLARATION . SCOPE constructor COLON nonempty_list(scope_decl_item) [ SCOPE END_CODE DECLARATION ]
@ -353,7 +353,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION CARDINAL THEN
##
## Ends in an error in state: 205.
## Ends in an error in state: 206.
##
## nonempty_list(scope_item) -> scope_item . [ SCOPE END_CODE DECLARATION ]
## nonempty_list(scope_item) -> scope_item . nonempty_list(scope_item) [ SCOPE END_CODE DECLARATION ]
@ -372,9 +372,9 @@ source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION CARDINAL THE
## In state 96, spurious reduction of production compare_expression -> sum_expression
## In state 123, spurious reduction of production logical_expression -> compare_expression
## In state 107, spurious reduction of production expression -> logical_expression
## In state 202, spurious reduction of production assertion_base -> expression
## In state 203, spurious reduction of production assertion -> option(condition_consequence) assertion_base
## In state 204, spurious reduction of production scope_item -> ASSERTION assertion
## In state 203, spurious reduction of production assertion_base -> expression
## In state 204, spurious reduction of production assertion -> option(condition_consequence) assertion_base
## In state 205, spurious reduction of production scope_item -> ASSERTION assertion
##
Unexpected token after a scope item
@ -514,7 +514,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION FIXED IDENT BY YEAR
##
## Ends in an error in state: 199.
## Ends in an error in state: 200.
##
## assertion -> FIXED qident BY . ident [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -527,7 +527,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION FIXED IDENT WITH_V
##
## Ends in an error in state: 198.
## Ends in an error in state: 199.
##
## assertion -> FIXED qident . BY ident [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -547,7 +547,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION FIXED YEAR
##
## Ends in an error in state: 197.
## Ends in an error in state: 198.
##
## assertion -> FIXED . qident BY ident [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1166,7 +1166,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION UNDER_CONDITION CARDINAL CONSEQUENCE BY
##
## Ends in an error in state: 201.
## Ends in an error in state: 202.
##
## assertion -> option(condition_consequence) . assertion_base [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1217,7 +1217,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION VARIES IDENT WITH
##
## Ends in an error in state: 190.
## Ends in an error in state: 191.
##
## assertion -> VARIES qident . WITH_V base_expression option(variation_type) [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1237,7 +1237,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION VARIES IDENT WITH_V NOW THEN
##
## Ends in an error in state: 192.
## Ends in an error in state: 193.
##
## assertion -> VARIES qident WITH_V base_expression . option(variation_type) [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1256,7 +1256,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION VARIES IDENT WITH_V YEAR
##
## Ends in an error in state: 191.
## Ends in an error in state: 192.
##
## assertion -> VARIES qident WITH_V . base_expression option(variation_type) [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1269,7 +1269,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION VARIES YEAR
##
## Ends in an error in state: 189.
## Ends in an error in state: 190.
##
## assertion -> VARIES . qident WITH_V base_expression option(variation_type) [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1357,7 +1357,7 @@ Expected date inside "|...|"
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION YEAR
##
## Ends in an error in state: 188.
## Ends in an error in state: 189.
##
## scope_item -> ASSERTION . assertion [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1370,7 +1370,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION IDENT DEFINED_AS YEAR
##
## Ends in an error in state: 185.
## Ends in an error in state: 186.
##
## definition -> qident option(definition_parameters) option(condition_consequence) DEFINED_AS . expression [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1383,7 +1383,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION IDENT OF IDENT DECREASING
##
## Ends in an error in state: 183.
## Ends in an error in state: 184.
##
## definition -> qident option(definition_parameters) . option(condition_consequence) DEFINED_AS expression [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1395,7 +1395,7 @@ Wrong token following function parameter
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION IDENT UNDER_CONDITION CARDINAL CONSEQUENCE DECREASING
##
## Ends in an error in state: 184.
## Ends in an error in state: 185.
##
## definition -> qident option(definition_parameters) option(condition_consequence) . DEFINED_AS expression [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1408,7 +1408,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION IDENT WITH_V
##
## Ends in an error in state: 182.
## Ends in an error in state: 183.
##
## definition -> qident . option(definition_parameters) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1427,7 +1427,7 @@ Only the identifier you wish to define should follow the definition introducing
source_file_or_master: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION YEAR
##
## Ends in an error in state: 181.
## Ends in an error in state: 182.
##
## scope_item -> DEFINITION . definition [ SCOPE RULE INCLUDES END_CODE DEFINITION DECLARATION ASSERTION ]
##
@ -1613,7 +1613,7 @@ Expecting the constructor for the scope
source_file_or_master: BEGIN_CODE YEAR
##
## Ends in an error in state: 271.
## Ends in an error in state: 272.
##
## source_file_item -> BEGIN_CODE . code END_CODE [ LAW_TEXT LAW_INCLUDE LAW_HEADING LAW_ARTICLE EOF BEGIN_METADATA BEGIN_CODE ]
##
@ -1625,7 +1625,7 @@ Wrong way to begin a code section
source_file_or_master: BEGIN_METADATA BEGIN_CODE END_CODE YEAR
##
## Ends in an error in state: 268.
## Ends in an error in state: 269.
##
## metadata_block -> BEGIN_CODE code END_CODE . END_METADATA [ LAW_TEXT LAW_INCLUDE LAW_HEADING LAW_ARTICLE EOF BEGIN_METADATA BEGIN_CODE ]
##
@ -1664,7 +1664,7 @@ To get a better error messsage, file an issue at https://github.com/CatalaLang/c
source_file_or_master: LAW_TEXT YEAR
##
## Ends in an error in state: 275.
## Ends in an error in state: 276.
##
## source_file -> source_file_item . source_file [ # ]
##

View File

@ -418,10 +418,11 @@ scope_inclusion_condition:
| UNDER_CONDITION e = expression { e }
scope_inclusion:
| SCOPE c = constructor context = option(scope_inclusion_context)
| name = ident SCOPE c = constructor context = option(scope_inclusion_context)
condition = option(scope_inclusion_condition)
{
({
scope_inclusion_name = name;
scope_inclusion_sub_scope = c;
scope_inclusion_joins = begin match context with
| None -> []

View File

@ -16,7 +16,7 @@ let message s =
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#5\n"
| 275 ->
| 276 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#275\n"
@ -28,11 +28,11 @@ let message s =
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#13\n"
| 268 ->
| 269 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#268\n"
| 271 -> "Wrong way to begin a code section\n"
| 272 -> "Wrong way to begin a code section\n"
| 14 -> "Expecting the constructor for the scope\n"
| 16 -> "Expected a colon after scope constructor\n"
| 17 -> "Expected a rule, a definition or an assertion\n"
@ -73,21 +73,21 @@ let message s =
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#64\n"
| 181 ->
| 182 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#162\n"
| 182 -> "Only the identifier you wish to define should follow the definition introducing token\n"
| 184 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#165\n"
| 183 -> "Wrong token following function parameter\n"
| 183 -> "Only the identifier you wish to define should follow the definition introducing token\n"
| 185 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#165\n"
| 184 -> "Wrong token following function parameter\n"
| 186 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#166\n"
| 188 ->
| 189 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#169\n"
@ -106,19 +106,19 @@ let message s =
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#28\n"
| 189 ->
| 190 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#170\n"
| 191 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#172\n"
| 192 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#172\n"
| 193 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#173\n"
| 190 ->
| 191 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#171\n"
@ -127,7 +127,7 @@ let message s =
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#21\n"
| 156 -> "Unexpected token after a condition\n"
| 201 ->
| 202 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#182\n"
@ -278,15 +278,15 @@ let message s =
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#106\n"
| 197 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#178\n"
| 198 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#179\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#178\n"
| 199 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#179\n"
| 200 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#180\n"
@ -330,107 +330,107 @@ let message s =
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#43\n"
| 205 -> "Unexpected token after a scope item\n"
| 208 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#189\n"
| 206 -> "Unexpected token after a scope item\n"
| 209 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#190\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#189\n"
| 210 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#191\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#190\n"
| 211 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#192\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#191\n"
| 212 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#193\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#192\n"
| 213 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#194\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#193\n"
| 214 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#194\n"
| 215 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#195\n"
| 238 ->
| 239 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#219\n"
| 231 -> "Unexpected token, struct scope declaration is over at this point\n"
| 232 ->
| 232 -> "Unexpected token, struct scope declaration is over at this point\n"
| 233 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#213\n"
| 228 ->
| 229 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#198\n"
| 236 ->
| 237 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#217\n"
| 241 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#222\n"
| 242 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#223\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#222\n"
| 243 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#224\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#223\n"
| 244 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#225\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#224\n"
| 245 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#226\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#225\n"
| 246 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#227\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#226\n"
| 247 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#227\n"
| 248 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#228\n"
| 249 ->
| 250 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#250\n"
| 252 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#252\n"
| 253 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#253\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#252\n"
| 254 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#254\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#253\n"
| 255 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#255\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#254\n"
| 256 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#256\n"
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#255\n"
| 257 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#256\n"
| 258 ->
"Unexpected token\n\
To get a better error messsage, file an issue at \
https://github.com/CatalaLang/catala/issues with this parser error token: ERROR#257\n"
| 262 -> "Inclusion does not concern content of enumeration cases\n"
| 263 -> "Inclusion does not concern content of enumeration cases\n"
| _ -> raise Not_found