VeLa.g4

sequence

binding whileLoop namedFundef expression

binding

symbol BACK_ARROW IS expression

namedFundef

HELP_COMMENT symbol LPAREN formalParameter formalParameter RPAREN COLON type block

expression

selectionExpression booleanExpression

selectionExpression

whenExpression ifExpression

whenExpression

WHEN booleanExpression ARROW consequent

ifExpression

IF booleanExpression THEN consequent ELSE consequent

consequent

expression block

whileLoop

WHILE booleanExpression block

booleanExpression

exclusiveOrExpression OR exclusiveOrExpression

exclusiveOrExpression

conjunctiveExpression XOR conjunctiveExpression

conjunctiveExpression

logicalNegationExpression AND logicalNegationExpression

logicalNegationExpression

NOT relationalExpression

relationalExpression

shiftExpression EQUAL NOT_EQUAL GREATER_THAN LESS_THAN GREATER_THAN_OR_EQUAL LESS_THAN_OR_EQUAL APPROXIMATELY_EQUAL IN shiftExpression

shiftExpression

additiveExpression SHIFT_LEFT SHIFT_RIGHT additiveExpression

additiveExpression

multiplicativeExpression PLUS MINUS multiplicativeExpression

multiplicativeExpression

unaryExpression MULT DIV unaryExpression

unaryExpression

MINUS exponentiationExpression

exponentiationExpression

funcall POW funcall

funcall

factor LPAREN expression RPAREN

factor

LPAREN expression RPAREN integer real bool string list symbol anonFundef

integer

INTEGER

real

REAL

bool

BOOLEAN

string

STRING

list

LBRACKET expression expression RBRACKET

symbol

IDENT

anonFundef

FUN LAMBDA LPAREN formalParameter formalParameter RPAREN COLON type block

formalParameter

symbol COLON type

type

INT_T REAL_T BOOL_T STR_T LIST_T FUN LAMBDA

block

LBRACE sequence RBRACE

BACK_ARROW

'<-'

IS

[Ii] [Ss]

COLON

':'

ARROW

'->'

IF

[Ii] [Ff]

THEN

[Tt] [Hh] [Ee] [Nn]

ELSE

[Ee] [Ll] [Ss] [Ee]

WHEN

[Ww] [Hh] [Ee] [Nn]

WHILE

[Ww] [Hh] [Ii] [Ll] [Ee]

FUN

[Ff] [Uu] [Nn] [Cc] [Tt] [Ii] [Oo] [Nn] [Ff] [Uu] [Nn]

LAMBDA

'\u03BB' '\u039B'

INT_T

[Ii] [Nn] [Tt] [Ee] [Gg] [Ee] [Rr] [Ii] [Nn] [Tt] 'ℤ'

REAL_T

[Rr] [Ee] [Aa] [Ll] 'ℝ'

BOOL_T

[Bb] [Oo] [Oo] [Ll] [Ee] [Aa] [Nn] [Bb] [Oo] [Oo] [Ll] '𝔹'

STR_T

[Ss] [Tt] [Rr] [Ii] [Nn] [Gg] [Ss] [Tt] [Rr]

LIST_T

[Ll] [Ii] [Ss] [Tt]

MINUS

'-'

PLUS

'+'

MULT

'*'

DIV

'/'

POW

'^'

EQUAL

'='

NOT_EQUAL

'<>'

GREATER_THAN

'>'

LESS_THAN

'<'

GREATER_THAN_OR_EQUAL

'>='

LESS_THAN_OR_EQUAL

'<='

APPROXIMATELY_EQUAL

'=~'

SHIFT_LEFT

'<<'

SHIFT_RIGHT

'>>'

IN

[Ii] [Nn]

LPAREN

'('

RPAREN

')'

LBRACKET

'['

RBRACKET

']'

LBRACE

'{'

RBRACE

'}'

PERIOD

'.'

COMMA

','

AND

[Aa] [Nn] [Dd]

XOR

[Xx] [Oo] [Rr]

OR

[Oo] [Rr]

NOT

[Nn] [Oo] [Tt]

INTEGER

DEC_DIGIT [0] [Xx] HEX_DIGIT [0] [Bb] BIN_DIGIT

REAL

DEC_DIGIT POINT DEC_DIGIT EXPONENT_INDICATOR MINUS DEC_DIGIT POINT DEC_DIGIT EXPONENT_INDICATOR MINUS DEC_DIGIT

BOOLEAN

TRUE FALSE

TRUE

[Tt] [Rr] [Uu] [Ee]

FALSE

[Ff] [Aa] [Ll] [Ss] [Ee]

DEC_DIGIT

[0-9]

HEX_DIGIT

DEC_DIGIT [a-z] [A-Z]

BIN_DIGIT

[0-1]

POINT

PERIOD COMMA

EXPONENT_INDICATOR

'E' 'e'

IDENT

LETTER UNDERSCORE LETTER DEC_DIGIT SYMBOL

LETTER

[A-Z] [a-z] [\u0080-\uFFFF]

UNDERSCORE

'_'

SYMBOL

UNDERSCORE '?' '!' '&' '%' '#' '$'

STRING

'"' not '"' '"'

WS

[ \r\t\n]

HELP_COMMENT

LESS_THAN LESS_THAN [ \r\t\n] not [\r\n] [ \r\t\n] GREATER_THAN GREATER_THAN

COMMENT

'#' not [\r\n]