@Override public BaseNode visitExpressionTextual(FEEL_1_1Parser.ExpressionTextualContext ctx) { BaseNode expr = visit( ctx.expr ); return expr; }
@Override public BaseNode visitPrimaryName(FEEL_1_1Parser.PrimaryNameContext ctx) { BaseNode name = visit( ctx.qualifiedName() ); if( ctx.parameters() != null ) { ListNode params = (ListNode) visit( ctx.parameters() ); return buildFunctionCall( ctx, name, params ); } else { return name; } }
private BaseNode buildFunctionCall(ParserRuleContext ctx, BaseNode name, ListNode params) { String functionName = getFunctionName( name ); return ASTBuilderFactory.newFunctionInvocationNode( ctx, name, params ); }
private BaseNode parse(String input, Map<String, Type> inputTypes) { FEEL_1_1Parser parser = FEELParser.parse(null, input, inputTypes, Collections.emptyMap(), Collections.emptyList(), Collections.emptyList()); ParseTree tree = parser.expression(); ASTBuilderVisitor v = new ASTBuilderVisitor(inputTypes); BaseNode expr = v.visit( tree ); return expr; }
public ProcessedExpression( String expression, CompilerContext ctx, ProcessedFEELUnit.DefaultMode defaultBackend, List<FEELProfile> profiles) { super(expression, ctx, profiles); this.defaultBackend = defaultBackend; ParseTree tree = parser.compilation_unit(); ast = tree.accept(new ASTBuilderVisitor(ctx.getInputVariableTypes())); }
private CompiledFEELExpression parse(String input, Map<String, Type> inputTypes) { FEEL_1_1Parser parser = FEELParser.parse(null, input, inputTypes, Collections.emptyMap(), Collections.emptyList(), Collections.emptyList()); ParseTree tree = parser.compilation_unit(); ASTBuilderVisitor v = new ASTBuilderVisitor(inputTypes); BaseNode node = v.visit(tree); DirectCompilerResult directResult = node.accept(new ASTCompilerVisitor()); Expression expr = directResult.getExpression(); CompiledFEELExpression cu = new CompilerBytecodeLoader().makeFromJPExpression(input, expr, directResult.getFieldDeclarations()); return cu; }
public ProcessedUnaryTest( String expressions, CompilerContext ctx) { super(expressions, ctx, Collections.emptyList()); ParseTree tree = parser.unaryTestsRoot(); BaseNode initialAst = tree.accept(new ASTBuilderVisitor(ctx.getInputVariableTypes())); ast = initialAst.accept(new ASTUnaryTestTransform()).node(); }
private DirectCompilerResult declareExternalFunction(FEEL_1_1Parser.FunctionDefinitionContext ctx) { ASTBuilderVisitor evaluatingVisitor = new ASTBuilderVisitor(Collections.emptyMap()); EvaluationContextImpl emptyEvalCtx = new EvaluationContextImpl(this.getClass().getClassLoader(), new FEELEventListenersManager()); if ( ctx.formalParameters() != null ) { ListNode listNode = (ListNode) evaluatingVisitor.visit(ctx.formalParameters()); params = listNode.getElements().stream().map(n -> n.getText()).collect(Collectors.toList()); BaseNode evaluatedBody = evaluatingVisitor.visit( ctx.body ); Map<String, Object> conf = (Map<String, Object>) evaluatedBody.evaluate(emptyEvalCtx); Map<String, String> java = (Map<String, String>) conf.get( "java" );
@Override public BaseNode visitUenpmPrimary(FEEL_1_1Parser.UenpmPrimaryContext ctx) { BaseNode expr = visit( ctx.primary() ); if( ctx.qualifiedName() != null ) { BaseNode path = visit( ctx.qualifiedName() ); expr = ASTBuilderFactory.newPathExpressionNode( ctx, expr, path ); } if (ctx.parameters() != null) { ListNode params = (ListNode) visit(ctx.parameters()); return buildFunctionCall(ctx, expr, params); } return expr; }
private CompiledFEELUnaryTests parse(String input, Map<String, Type> inputTypes, FEELEventListenersManager mgr, CompiledFEELSupport.SyntaxErrorListener listener) { FEEL_1_1Parser parser = FEELParser.parse(mgr, input, inputTypes, Collections.emptyMap(), Collections.emptyList(), Collections.emptyList()); ParseTree tree = parser.unaryTestsRoot(); DirectCompilerResult directResult; if (listener.isError()) { directResult = CompiledFEELSupport.compiledErrorUnaryTest(listener.event().getMessage()); } else { ASTBuilderVisitor v = new ASTBuilderVisitor(inputTypes); BaseNode node = v.visit(tree); BaseNode transformed = node.accept(new ASTUnaryTestTransform()).node(); directResult = transformed.accept(new ASTCompilerVisitor()); } Expression expr = directResult.getExpression(); CompiledFEELUnaryTests cu = new CompilerBytecodeLoader().makeFromJPUnaryTestsExpression(input, expr, directResult.getFieldDeclarations()); return cu; }
@Override public BaseNode visitInterval(FEEL_1_1Parser.IntervalContext ctx) { BaseNode start = visit( ctx.start ); BaseNode end = visit( ctx.end ); RangeNode.IntervalBoundary low = ctx.low.getText().equals( "[" ) ? RangeNode.IntervalBoundary.CLOSED : RangeNode.IntervalBoundary.OPEN; RangeNode.IntervalBoundary up = ctx.up.getText().equals( "]" ) ? RangeNode.IntervalBoundary.CLOSED : RangeNode.IntervalBoundary.OPEN; return ASTBuilderFactory.newIntervalNode( ctx, low, start, end, up ); }