[orx-expression-evaluator-typed] Add list and lambda support

This commit is contained in:
Edwin Jakobs
2024-06-11 10:23:53 +02:00
parent 382e155813
commit 8c2e8a2d73
8 changed files with 311 additions and 10 deletions

View File

@@ -25,18 +25,24 @@ DIVISION : '/' ;
ASSIGN : '=' ;
LPAREN : '(' ;
RPAREN : ')' ;
LBRACKET : '[' ;
RBRACKET : ']' ;
LCURLY : '{' ;
RCURLY : '}' ;
QUESTION_MARK : '?' ;
COLON : ':' ;
ARROW : '->' ;
COMMA : ',' ;
DOT : '.' ;
EQ : '==' ;
LT : '<' ;
LTEQ : '<=' ;
GT : '>=' ;
GTEQ : '>' ;
GT : '>' ;
GTEQ : '>=' ;
AND : '&&' ;
OR : '||' ;

View File

@@ -10,8 +10,13 @@ line : statement (NEWLINE | EOF) ;
statement :
expression # expressionStatement ;
lambda: LCURLY (ID ( COMMA ID )* ARROW )? expression RCURLY # functionLiteral;
expression : INTLIT # intLiteral
| DECLIT # decimalLiteral
| LBRACKET (expression ( COMMA expression )*)? RBRACKET # listLiteral
| expression DOT ID lambda # memberFunctionCall0LambdaExpression
| lambda # lambdaExpression
| expression DOT ID LPAREN RPAREN # memberFunctionCall0Expression
| expression DOT ID LPAREN expression RPAREN # memberFunctionCall1Expression
| expression DOT ID LPAREN expression COMMA expression RPAREN # memberFunctionCall2Expression