@Override public UnaryTestSubexpr visit(UnaryTestListNode n) { List<BaseNode> collect = new ArrayList<>(); for (BaseNode e : n.getElements()) { UnaryTestSubexpr accept = e.accept(this); if (accept.isWildcard()) { collect.add(rewriteToUnaryTestExpr(accept.node)); } else if (!accept.isUnaryTest()) { collect.add(rewriteToUnaryEqInExpr(accept.node)); } else { collect.add(accept.node); } } return new TopLevel( ASTBuilderFactory.newUnaryTestListNode(n.getParserRuleContext(), collect, n.getState())); }
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 UnaryTestSubexpr visit(QualifiedNameNode n) { // wildcard is allowed only as the first part UnaryTestSubexpr leading = n.getParts().get(0).accept(this); if (leading.isWildcard()) { return new WildCardUnaryExpression(n); } else { return new SimpleUnaryExpression(n); } }
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(); }