From b26926570df396245d1bd5f1cf622e4240604890 Mon Sep 17 00:00:00 2001 From: Terence Parr Date: Wed, 13 Nov 2013 16:18:50 -0800 Subject: [PATCH] move getChildren() from Tree into Trees --- .../src/org/antlr/v4/runtime/ParserRuleContext.java | 5 ----- runtime/Java/src/org/antlr/v4/runtime/RuleContext.java | 5 ----- .../org/antlr/v4/runtime/tree/TerminalNodeImpl.java | 5 ----- runtime/Java/src/org/antlr/v4/runtime/tree/Tree.java | 3 --- runtime/Java/src/org/antlr/v4/runtime/tree/Trees.java | 10 ++++++++++ .../antlr/v4/runtime/tree/xpath/XPathRuleElement.java | 3 ++- .../antlr/v4/runtime/tree/xpath/XPathTokenElement.java | 3 ++- .../v4/runtime/tree/xpath/XPathWildcardElement.java | 9 ++++++++- 8 files changed, 22 insertions(+), 21 deletions(-) diff --git a/runtime/Java/src/org/antlr/v4/runtime/ParserRuleContext.java b/runtime/Java/src/org/antlr/v4/runtime/ParserRuleContext.java index 0096aad85..1803b2be6 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/ParserRuleContext.java +++ b/runtime/Java/src/org/antlr/v4/runtime/ParserRuleContext.java @@ -193,11 +193,6 @@ public class ParserRuleContext extends RuleContext { return null; } - @Override - public List getChildren() { - return children; - } - public TerminalNode getToken(int ttype, int i) { if ( children==null || i < 0 || i >= children.size() ) { return null; diff --git a/runtime/Java/src/org/antlr/v4/runtime/RuleContext.java b/runtime/Java/src/org/antlr/v4/runtime/RuleContext.java index 7f664ae1c..4457b7d94 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/RuleContext.java +++ b/runtime/Java/src/org/antlr/v4/runtime/RuleContext.java @@ -150,11 +150,6 @@ public class RuleContext implements RuleNode { return 0; } - @Override - public List getChildren() { - return null; - } - @Override public T accept(ParseTreeVisitor visitor) { return visitor.visitChildren(this); } diff --git a/runtime/Java/src/org/antlr/v4/runtime/tree/TerminalNodeImpl.java b/runtime/Java/src/org/antlr/v4/runtime/tree/TerminalNodeImpl.java index a9e40e6e3..676375121 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/tree/TerminalNodeImpl.java +++ b/runtime/Java/src/org/antlr/v4/runtime/tree/TerminalNodeImpl.java @@ -65,11 +65,6 @@ public class TerminalNodeImpl implements TerminalNode { @Override public int getChildCount() { return 0; } - @Override - public List getChildren() { - return null; - } - @Override public T accept(ParseTreeVisitor visitor) { return visitor.visitTerminal(this); diff --git a/runtime/Java/src/org/antlr/v4/runtime/tree/Tree.java b/runtime/Java/src/org/antlr/v4/runtime/tree/Tree.java index 8f1ec38a2..b396962b3 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/tree/Tree.java +++ b/runtime/Java/src/org/antlr/v4/runtime/tree/Tree.java @@ -62,9 +62,6 @@ public interface Tree { */ int getChildCount(); - /** Return ordered list of all children of this node */ - List getChildren(); - /** Print out a whole tree, not just a node, in LISP format * {@code (root child1 .. childN)}. Print just a node if this is a leaf. */ diff --git a/runtime/Java/src/org/antlr/v4/runtime/tree/Trees.java b/runtime/Java/src/org/antlr/v4/runtime/tree/Trees.java index ce26ff12b..c2a3ddbfa 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/tree/Trees.java +++ b/runtime/Java/src/org/antlr/v4/runtime/tree/Trees.java @@ -154,6 +154,16 @@ public class Trees { return t.getPayload().toString(); } + + /** Return ordered list of all children of this node */ + public static List getChildren(Tree t) { + List kids = new ArrayList(); + for (int i=0; i evaluate(ParseTree t) { // return all children of t that match nodeName List nodes = new ArrayList(); - for (Tree c : t.getChildren()) { + for (Tree c : Trees.getChildren(t)) { if ( c instanceof ParserRuleContext ) { ParserRuleContext ctx = (ParserRuleContext)c; if ( (ctx.getRuleIndex() == ruleIndex && !invert) || diff --git a/runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathTokenElement.java b/runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathTokenElement.java index 38472789f..b6781ba35 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathTokenElement.java +++ b/runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathTokenElement.java @@ -3,6 +3,7 @@ package org.antlr.v4.runtime.tree.xpath; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNode; import org.antlr.v4.runtime.tree.Tree; +import org.antlr.v4.runtime.tree.Trees; import java.util.ArrayList; import java.util.Collection; @@ -19,7 +20,7 @@ public class XPathTokenElement extends XPathElement { public Collection evaluate(ParseTree t) { // return all children of t that match nodeName List nodes = new ArrayList(); - for (Tree c : t.getChildren()) { + for (Tree c : Trees.getChildren(t)) { if ( c instanceof TerminalNode ) { TerminalNode tnode = (TerminalNode)c; if ( (tnode.getSymbol().getType() == tokenType && !invert) || diff --git a/runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathWildcardElement.java b/runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathWildcardElement.java index f8c7eebab..8d9a2e247 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathWildcardElement.java +++ b/runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathWildcardElement.java @@ -1,9 +1,12 @@ package org.antlr.v4.runtime.tree.xpath; import org.antlr.v4.runtime.tree.ParseTree; +import org.antlr.v4.runtime.tree.Tree; +import org.antlr.v4.runtime.tree.Trees; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; public class XPathWildcardElement extends XPathElement { @@ -14,6 +17,10 @@ public class XPathWildcardElement extends XPathElement { @Override public Collection evaluate(final ParseTree t) { if ( invert ) return new ArrayList(); // !* is weird but valid (empty) - return new ArrayList() {{addAll((List)t.getChildren());}}; + List kids = new ArrayList(); + for (Tree c : Trees.getChildren(t)) { + kids.add((ParseTree)c); + } + return kids; } }