pos(x) x
addpos(x) x
primitive_typ INTEGER
BOOLEAN
MONEY
DURATION
TEXT
DECIMAL
DATE
uident+DOT
typ_data primitive_typ
LIST addpos(typ_data)
LPAREN addpos(typ_data)+COMMA RPAREN
typ typ_data
uident addpos(UIDENT)
lident LIDENT
scope_var addpos(LIDENT)+DOT
qlident uident DOT qlident
lident
mbinder lident
LPAREN lident+COMMA RPAREN
expression addpos(naked_expression)
state_qualifier STATE addpos(LIDENT)
naked_expression addpos(LIDENT) state_qualifier
uident DOT qlident
literal
LPAREN expression+COMMA RPAREN
expression DOT addpos(qlident)
expression DOT addpos(INT_LITERAL)
CARDINAL
DECIMAL
MONEY
LBRACKET expression*SEMICOLON RBRACKET
struct_or_enum_inject
expression OF expression+COMMA
OUTPUT OF addpos(uident+DOT) scope_call_args
expression WITH constructor_binding
expression BUT_REPLACE LBRACE (ALT struct_content_field) RBRACE
expression pos(CONTAINS) expression
pos(SUM) addpos(primitive_typ) OF expression
expression pos(FOR) mbinder AMONG expression
addpos(minmax) OF expression OR IF LIST_EMPTY THEN expression
addpos(unop) expression
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
expression pos(FOR) mbinder AMONG expression pos(SUCH) THAT 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
scope_call_args WITH_V LBRACE (ALT struct_content_field) RBRACE
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 addpos(scope_var) addpos(definition_parameters)
rule_consequence NOT FILLED
rule label addpos(exception_to) pos(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 pos(DEFINITION) addpos(scope_var) addpos(definition_parameters) state condition_consequence DEFINED_AS expression
variation_type INCREASING
DECREASING
assertion condition_consequence expression
FIXED addpos(scope_var) BY lident
VARIES addpos(scope_var) WITH_V expression addpos(variation_type)
scope_item rule
definition
ASSERTION addpos(assertion)
DATE LIDENT addpos(variation_type)
struct_scope_base DATA lident CONTENT addpos(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 addpos(typ)
var_content lident CONTENT addpos(typ)
depends_stance DEPENDS var_content+COMMA
DEPENDS LPAREN var_content+COMMA RPAREN
ε
code_item SCOPE uident UNDER_CONDITION expression COLON scope_item
DECLARATION STRUCT uident COLON addpos(struct_scope)
DECLARATION SCOPE uident COLON addpos(scope_decl_item)
DECLARATION ENUM uident COLON addpos(enum_decl_line)
DECLARATION lident CONTENT addpos(typ) depends_stance opt_def
opt_def DEFINED_AS expression
code addpos(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