Class ExpressionCreator

java.lang.Object
org.ek9lang.compiler.phase7.ExpressionCreator
All Implemented Interfaces:
Function<EK9Parser.ExpressionContext,INode>

public final class ExpressionCreator extends Object implements Function<EK9Parser.ExpressionContext,INode>
Creates an Expression node from the AST passed in.

This is the backbone of the language really.

   expression
     : expression op=(INC | DEC | BANG)
     | op=SUB expression
     | expression op=QUESTION
     | op=TOJSON expression
     | op=DOLLAR expression
     | op=PROMOTE expression
     | op=LENGTH OF? expression
     | op=PREFIX expression
     | op=SUFFIX expression
     | op=HASHCODE expression
     | op=ABS OF? expression
     | op=SQRT OF? expression
     | <assoc=right> left=expression coalescing=(CHECK | ELVIS) right=expression
     | primary
     | call
     | objectAccessExpression
     | list
     | dict
     | expression IS? neg=NOT? op=EMPTY
     | op=(NOT | TILDE) expression
     | left=expression op=CARET right=expression
     | left=expression op=(DIV | MUL | MOD | REM ) NL? right=expression
     | left=expression op=(ADD | SUB) NL? right=expression
     | left=expression op=(SHFTL | SHFTR) right=expression
     | left=expression op=(CMP | FUZ) NL? right=expression
     | left=expression op=(LE | GE | GT | LT) NL? right=expression
     | left=expression op=(EQUAL | NOTEQUAL | NOTEQUAL2) NL? right=expression
     | <assoc=right> left=expression coalescing_equality=(COALESCE_LE | COALESCE_GE | COALESCE_GT | COALESCE_LT) right=expression
     | left=expression neg=NOT? op=MATCHES right=expression
     | left=expression neg=NOT? op=CONTAINS right=expression
     | left=expression IS? neg=NOT? IN right=expression
     | left=expression op=(AND | XOR | OR) NL? right=expression
     | expression IS? neg=NOT? IN range
     | <assoc=right> control=expression LEFT_ARROW ternaryPart ternary=(COLON|ELSE) ternaryPart
     ;