public void accept(IASTVisitor visitor) { boolean visitChildren = visitor.visit(this); if (visitChildren) { expr.accept(visitor); } visitor.endVisit(this); }
public static void treeApply(IParseNode node, IASTVisitor function, boolean recursive) { if (node == null || function == null) { return; } List<QueueEntry> queue = new LinkedList<QueueEntry>(); // prime queue queue.add(new QueueEntry(node, true)); while (!queue.isEmpty()) { QueueEntry current = queue.remove(0); // TODO: wrap function call in try/block? // Entering a node if (current.enter) { // apply function if (!function.enterNode(current.node)) { // stop processing if the function indicates to do so break; } if (recursive) { int i = 0; if (current.node instanceof ParseRootNode) { // Insert the children to front of the list, in-order for (IParseNode commentNode : ((ParseRootNode) node).getCommentNodes()) { queue.add(i++, new QueueEntry(commentNode, true)); } } // Insert the children to front of the list, in-order for (IParseNode child : current.node) { queue.add(i++, new QueueEntry(child, true)); } // This sticks the exit of the node at the end? queue.add(i++, new QueueEntry(current.node, false)); } } // Exiting a node else { // apply function if (!function.exitNode(current.node)) { // stop processing if the function indicates to do so break; } } } }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitStringLiteralInterpolated(this); }
public <T> T accept(IASTVisitor<T> v) { return v.visitIntegerLiteralAmbiguity(this); }
public <T> T accept(IASTVisitor<T> v) { return v.visitStringTailAmbiguity(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitImportDefault(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitImportExternal(this); }
public <T> T accept(IASTVisitor<T> v) { return v.visitTypeVarAmbiguity(this); }
public <T> T accept(IASTVisitor<T> v) { return v.visitJustTimeLexical(this); }
public <T> T accept(IASTVisitor<T> v) { return v.visitJustTimeAmbiguity(this); }
public <T> T accept(IASTVisitor<T> v) { return v.visitPathCharsAmbiguity(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitCommandDeclaration(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitCommandStatement(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitCommandImport(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitCommandExpression(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitStrategyBottomUpBreak(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitTypeVarFree(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitCatchBinding(this); }
public <T> T accept(IASTVisitor<T> v) { return v.visitBackslashLexical(this); }
public <T> T accept(IASTVisitor<T> v) { return v.visitCatchAmbiguity(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitImportSyntax(this); }
public <T> T accept(IASTVisitor<T> v) { return v.visitURLCharsLexical(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitStringTailPost(this); }
public <T> T accept(IASTVisitor<T> v) { return v.visitQualifiedNameAmbiguity(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitIntegerLiteralOctalIntegerLiteral(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitQualifiedNameDefault(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitStringLiteralTemplate(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitStrategyOutermost(this); }
public <T> T accept(IASTVisitor<T> v) { return v.visitLAYOUTLexical(this); }
@Override public <T> T accept(IASTVisitor<T> visitor) { return visitor.visitStrategyTopDownBreak(this); }