Module pr47::syntax::expr [−][src]
Expand description
Concrete syntax tree of expressions
Expression syntax:
expression ::= binary-expression assign-op expression
| binary-expression
binary-expression ::= binary-expression logic-op comparison-expression
| comparison-expression
comparison-expression ::= comparison-expression compare-op bit-or-expression
| bit-or-expression
bit-or-expression ::= bit-or-expression '|' bit-xor-expression
| bit-xor-expression
bit-xor-expression ::= bit-xor-expression '^' bit-and-expression
| bit-and-expression
bit-and-expression ::= bit-and-expression '&' bit-shift-expression
| bit-shift-expression
bit-shift-expression ::= bit-shift-expression bit-shift-op additive-expression
| additive-expression
additive-expression ::= additive-expression add-op multiplicative-expression
| multiplicative-expression
multiplicative-expression ::= multiplicative-expression mul-op unary-expression
| unary-expression
unary-expression ::= unary-op unary-expression
| postfix-expression
postfix-expression ::= postfix-expression '[' binary-expression ']'
| postfix-expression '(' expression-list ')'
| postfix-expression '.' ID
| postfix-expression '.' 'await'
| postfix-expression 'as' type
| atomic-expression
atomic-expression ::= identifier
| literal
| '(' binary-expression ')'
| intrinsic-op '(' expression-list ')'
expression-list ::= expression-list ',' binary-expression
| binary-expression
| NIL
assign-op ::= '=' | '+=' | '-=' | '*=' | '/=' | '%='
logic-op ::= '&&' | '||' | '^^'
compare-op ::= '==' | '!=' | '<' | '>' | '<=' | '>='
bit-shift-op ::= '<<' | '>>'
add-op ::= '+' | '-'
mul-op ::= '*' | '/' | '%'
unary-op ::= '+' | '-' | '!' | '~'
intrinsic-op ::= TODO define intrinsics