public static List<String> findRequiredBindings(Expr expr) { final Set<String> found = new LinkedHashSet<>(); expr.visit( new Expr.Visitor() { @Override public void visit(Expr expr) { if (expr instanceof IdentifierExpr) { found.add(expr.toString()); } } } ); return Lists.newArrayList(found); }
@Override public void visit(final Visitor visitor) { for (Expr arg : args) { arg.visit(visitor); } visitor.visit(this); } }
@Override public void visit(Visitor visitor) { expr.visit(visitor); visitor.visit(this); } }
@Override public void visit(final Visitor visitor) { arg.visit(visitor); visitor.visit(this); } }
@Override public void visit(final Visitor visitor) { stringExpr.visit(visitor); visitor.visit(this); } }
@Override public void visit(Visitor visitor) { for (Expr child : args) { child.visit(visitor); } visitor.visit(this); } }
@Override public void visit(final Visitor visitor) { for (Expr arg : args) { arg.visit(visitor); } visitor.visit(this); } }
@Override public void visit(Visitor visitor) { expr.visit(visitor); visitor.visit(this); }
@Override public void visit(final Visitor visitor) { arg.visit(visitor); visitor.visit(this); } }
@Override public void visit(final Visitor visitor) { arg.visit(visitor); visitor.visit(this); } }
@Override public void visit(final Visitor visitor) { for (Expr arg : args) { arg.visit(visitor); } visitor.visit(this); } }
@Override public void visit(final Visitor visitor) { for (Expr arg : args) { arg.visit(visitor); } visitor.visit(this); } }
@Override public void visit(final Visitor visitor) { arg.visit(visitor); visitor.visit(this); } }
@Override public void visit(Visitor visitor) { for (Expr child : args) { child.visit(visitor); } visitor.visit(this); } }
@Override public void visit(Visitor visitor) { expr.visit(visitor); visitor.visit(this); }
@Override public void visit(final Visitor visitor) { arg.visit(visitor); visitor.visit(this); } }