Class ExprInstrGenerator
java.lang.Object
org.ek9lang.compiler.phase7.ExprInstrGenerator
Creates IR instructions for expressions.
This is the real backbone of processing and is very big! It is also recursive calling upon
expression (sometimes directly and sometimes directly.
The ANTLR grammar follows:
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 ;
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
ExprInstrGenerator
ExprInstrGenerator(IRContext context)
-
-
Method Details
-
apply
Generate IR instructions for expression.
-