Skip to content

Instantly share code, notes, and snippets.

@pfmiles
Created December 27, 2011 05:18
Show Gist options
  • Save pfmiles/1522776 to your computer and use it in GitHub Desktop.
Save pfmiles/1522776 to your computer and use it in GitHub Desktop.
Flexible visitor interface for AST walking...
public class ComparingNode implements DataFilterNode {
public <P, R> R accept(DataFilterVisitor<P, R> visitor, P param) {
return visitor.visitComparingNode(this, param);
}
}
public interface DataFilterNode {
public <P, R> R accept(DataFilterVisitor<P, R> visitor, P param);
}
public interface DataFilterVisitor<P, R> {
R visitUnionNode(UnionNode node, P param);
R visitIntersectionNode(IntersectionNode node, P param);
R visitComparingNode(ComparingNode comparingNode, P param);
......
}
@pfmiles
Copy link
Author

pfmiles commented Dec 24, 2012

Or pass a newly created 'param' every time you start a new child node's visit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment