pos(x) x
addpos(x) x
attribute_value addpos(STRING)
expression
attribute ATTR_START addpos(LIDENT+DOT) EQUAL attribute_value RBRACKET
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 INTEGER
BOOLEAN
MONEY
DURATION
TEXT
DECIMAL
DATE
uident+DOT
typ_data primitive_typ
LIST 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)
CARDINAL
INTEGER
DECIMAL
MONEY
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) OF 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 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