call method
Implementation
Expr call() {
Expr expr = arrayOrMap();
while (true) {
if (match([TokenType.LEFT_PAREN])) {
expr = finishCall(expr);
} else if (match([TokenType.DOT])) {
Token name =
consume(TokenType.IDENTIFIER, "Expect property name after '.'.");
if (name.lexeme == 'map' ||
name.lexeme == 'forEach' ||
name.lexeme == 'where' ||
name.lexeme == 'sort') {
expr = mappingExpr(expr, name);
} else if (name.lexeme == 'then' || name.lexeme == 'catchError') {
expr = thenExpr(expr, name);
} else if (name.lexeme == 'listen') {
expr = listenCall(expr);
} else {
expr = Get(expr, name);
}
} else if (match([TokenType.LEFT_BRACKET])) {
expr = indexingExpr(expr);
} else {
break;
}
}
return expr;
}