| pos(x) | x |
|---|---|
| addpos(x) | x |
| attribute_value | addpos(STRING) |
| expression | |
| attribute | ATTR_START addpos(LIDENT+DOT) EQUAL attribute_value RBRACKET |
| DOCSTRING | |
| attr(x) | attribute x |
| posattr(x) | attr(addpos(x)) |
| rev_list_with_attr(x) | rev_list_with_attr(x) attribute |
| rev_list_with_attr(x) addpos(x) | |
| ε | |
| list_with_attr(x) | rev_list_with_attr(x) |
| primitive_typ | DATE |
| LIDENT | |
| uident+DOT | |
| WILDCARD | |
| WILDCARD OF TYPE lident | |
| typ_data | primitive_typ |
| LIST posattr(typ_data) | |
| OPTION posattr(typ_data) | |
| LPAREN posattr(typ_data)+COMMA RPAREN | |
| typ | typ_data |
| uident | addpos(UIDENT) |
| lident | LIDENT |
| scope_var | addpos(LIDENT)+DOT |
| qlident | uident DOT qlident |
| lident | |
| mbinder | attr(lident) |
| LPAREN attr(lident)+COMMA RPAREN | |
| state_qualifier | STATE posattr(LIDENT) |
| expression | attr(noattr_expression) |
| noattr_expression | addpos(naked_expression) |
| naked_expression | addpos(LIDENT) state_qualifier |
| uident DOT qlident | |
| literal | |
| LPAREN expression+COMMA RPAREN | |
| noattr_expression DOT addpos(qlident) | |
| noattr_expression DOT addpos(INT_LITERAL) | |
| LBRACKET expression*SEMICOLON RBRACKET | |
| struct_or_enum_inject | |
| noattr_expression OF expression+COMMA | |
| OUTPUT OF addpos(uident+DOT) WITH_V LBRACE (ALT struct_content_field) RBRACE | |
| noattr_expression WITH constructor_binding | |
| noattr_expression BUT_REPLACE LBRACE (ALT struct_content_field) RBRACE | |
| noattr_expression pos(CONTAINS) expression | |
| pos(SUM) addpos(primitive_typ) OF expression | |
| pos(MAP_EACH) mbinder AMONG expression TO expression | |
| pos(COMBINE) ALL mbinder AMONG expression IN mbinder INITIALLY expression WITH_V expression | |
| addpos(minmax) OF expression OR_IF_LIST_EMPTY THEN expression | |
| addpos(unop) expression | |
| noattr_expression addpos(binop) expression | |
| pos(EXISTS) mbinder AMONG expression SUCH THAT expression | |
| pos(FOR) ALL mbinder AMONG expression WE_HAVE expression | |
| MATCH expression WITH addpos(addpos(ALT match_arm)) | |
| IF expression THEN expression ELSE expression | |
| LET mbinder DEFINED_AS expression IN expression | |
| pos(LIST) mbinder AMONG expression SUCH THAT expression | |
| pos(MAP_EACH) mbinder AMONG expression pos(SUCH) THAT expression TO expression | |
| pos(CONTENT) OF mbinder AMONG expression SUCH THAT expression IS minmax OR_IF_LIST_EMPTY THEN expression | |
| struct_content_field | lident COLON expression |
| struct_or_enum_inject | addpos(uident+DOT) CONTENT expression |
| addpos(uident+DOT) LBRACE (ALT struct_content_field) RBRACE | |
| num_literal | INT_LITERAL |
| DECIMAL_LITERAL | |
| unit_literal | PERCENT |
| YEAR | |
| MONTH | |
| DAY | |
| literal | addpos(num_literal) addpos(unit_literal) |
| MONEY_AMOUNT | |
| DATE_LITERAL | |
| TRUE | |
| FALSE | |
| minmax | MAXIMUM |
| MINIMUM | |
| unop | NOT |
| MINUS | |
| binop | MULT |
| DIV | |
| PLUS | |
| MINUS | |
| PLUSPLUS | |
| LESSER | |
| LESSER_EQUAL | |
| GREATER | |
| GREATER_EQUAL | |
| EQUAL | |
| NOT_EQUAL | |
| AND | |
| OR | |
| XOR | |
| constructor_binding | addpos(uident+DOT) CONTENT lident |
| addpos(uident+DOT) | |
| match_arm | WILDCARD COLON expression |
| addpos(constructor_binding) COLON expression | |
| condition_consequence | UNDER_CONDITION expression CONSEQUENCE |
| rule_expr | posattr(scope_var) posattr(definition_parameters) |
| rule_consequence | NOT FILLED |
| rule | label exception_to RULE rule_expr state condition_consequence addpos(rule_consequence) |
| definition_parameters | OF lident+COMMA |
| label | LABEL lident |
| state | STATE lident |
| exception_to | EXCEPTION lident |
| definition | label exception_to DEFINITION scope_var addpos(definition_parameters) state condition_consequence DEFINED_AS expression |
| assertion | ASSERTION condition_consequence expression |
| variation_type | INCREASING |
| DECREASING | |
| date_rounding | DATE LIDENT addpos(variation_type) |
| scope_item | rule |
| definition | |
| assertion | |
| date_rounding | |
| scope_item_list | list_with_attr(scope_item) |
| struct_scope_base | DATA lident CONTENT posattr(typ) |
| pos(CONDITION) lident | |
| struct_scope | struct_scope_base depends_stance |
| scope_decl_item_attribute_input | CONTEXT |
| INPUT | |
| INTERNAL | |
| ε | |
| scope_decl_item_attribute | addpos(scope_decl_item_attribute_input) addpos(OUTPUT) lident |
| scope_decl_item_attribute_mandatory | scope_decl_item_attribute |
| scope_decl_item | scope_decl_item_attribute_mandatory CONTENT addpos(typ) depends_stance state |
| scope_decl_item_attribute SCOPE addpos(uident+DOT) | |
| scope_decl_item_attribute_mandatory pos(CONDITION) depends_stance state | |
| enum_decl_line | ALT uident CONTENT posattr(typ) |
| var_content | attr(lident) CONTENT posattr(typ) |
| depends_stance | DEPENDS var_content+COMMA |
| DEPENDS LPAREN var_content+COMMA RPAREN | |
| ε | |
| code_item | SCOPE uident UNDER_CONDITION expression COLON scope_item_list |
| DECLARATION STRUCT attr(uident) COLON list_with_attr(struct_scope) | |
| DECLARATION SCOPE uident COLON list_with_attr(scope_decl_item) | |
| DECLARATION ENUM uident COLON list_with_attr(enum_decl_line) | |
| DECLARATION lident CONTENT addpos(typ) depends_stance opt_def | |
| opt_def | DEFINED_AS expression |
| code | list_with_attr(code_item) |
| metadata_block | BEGIN_METADATA law_text code END_CODE |
| law_heading | LAW_HEADING |
| law_text | LAW_TEXT |
| directive | LAW_INCLUDE COLON DIRECTIVE_ARG AT_PAGE |
| MODULE_DEF addpos(DIRECTIVE_ARG) MODULE_EXTERNAL | |
| MODULE_USE addpos(DIRECTIVE_ARG) MODULE_ALIAS addpos(DIRECTIVE_ARG) | |
| source_file_item | law_text |
| BEGIN_CODE code END_CODE | |
| law_heading | |
| metadata_block | |
| BEGIN_DIRECTIVE directive END_DIRECTIVE | |
| source_file | source_file_item source_file |
| EOF |