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

Structs

Enums