[orx-expression-evaluator-typed] Add range operators
This commit is contained in:
@@ -7,6 +7,14 @@ NEWLINE : '\r\n' | '\r' | '\n' ;
|
||||
WS : [\t ]+ -> channel(WHITESPACE) ;
|
||||
|
||||
|
||||
RANGE_INCLUSIVE : '..' ;
|
||||
RANGE_EXCLUSIVE_UNTIL : 'until' ;
|
||||
RANGE_EXCLUSIVE : '..<' ;
|
||||
RANGE_DOWNTO : 'downTo' ;
|
||||
|
||||
STEP : 'step' ;
|
||||
|
||||
|
||||
// Identifiers
|
||||
ID : [$_]*[a-zA-Z][A-Za-z0-9_]* | '`'[$_]*[A-Za-z0-9_-]*'`';
|
||||
FUNCTION_ID : [$_]*[a-z][A-Za-z0-9_]* ;
|
||||
|
||||
@@ -8,13 +8,19 @@ keyLangFile : lines=line+ ;
|
||||
line : statement (NEWLINE | EOF) ;
|
||||
|
||||
statement :
|
||||
expression # expressionStatement ;
|
||||
expressionRoot # expressionStatement ;
|
||||
|
||||
rangeExpression: expression operator=(RANGE_INCLUSIVE|RANGE_EXCLUSIVE|RANGE_EXCLUSIVE_UNTIL|RANGE_DOWNTO) expression (step=STEP expression)?;
|
||||
|
||||
expressionRoot: rangeExpression
|
||||
| expression
|
||||
;
|
||||
|
||||
lambda: LCURLY (ID ( COMMA ID )* ARROW )? expression RCURLY # functionLiteral;
|
||||
|
||||
expression : INTLIT # intLiteral
|
||||
| DECLIT # decimalLiteral
|
||||
| LBRACKET (expression ( COMMA expression )*)? RBRACKET # listLiteral
|
||||
| LBRACKET (expressionRoot ( COMMA expressionRoot )*)? RBRACKET # listLiteral
|
||||
| expression DOT ID lambda # memberFunctionCall0LambdaExpression
|
||||
| lambda # lambdaExpression
|
||||
| expression DOT ID LPAREN RPAREN # memberFunctionCall0Expression
|
||||
@@ -32,7 +38,7 @@ expression : INTLIT # int
|
||||
| ID # valueReference
|
||||
| STRING_OPEN (parts+=stringLiteralContent)* STRING_CLOSE # stringLiteral
|
||||
| expression DOT ID # propReference
|
||||
| LPAREN expression RPAREN # parenExpression
|
||||
| LPAREN expressionRoot RPAREN # parenExpression
|
||||
| MINUS expression # minusExpression
|
||||
| NOT expression # negateExpression
|
||||
| expression operator=(DIVISION|ASTERISK|PERCENTAGE) expression # binaryOperation1
|
||||
|
||||
Reference in New Issue
Block a user