move getChildren() from Tree into Trees
This commit is contained in:
parent
9cd32f36b4
commit
b26926570d
|
@ -193,11 +193,6 @@ public class ParserRuleContext extends RuleContext {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ParseTree> getChildren() {
|
|
||||||
return children;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TerminalNode getToken(int ttype, int i) {
|
public TerminalNode getToken(int ttype, int i) {
|
||||||
if ( children==null || i < 0 || i >= children.size() ) {
|
if ( children==null || i < 0 || i >= children.size() ) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -150,11 +150,6 @@ public class RuleContext implements RuleNode {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ParseTree> getChildren() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T accept(ParseTreeVisitor<? extends T> visitor) { return visitor.visitChildren(this); }
|
public <T> T accept(ParseTreeVisitor<? extends T> visitor) { return visitor.visitChildren(this); }
|
||||||
|
|
||||||
|
|
|
@ -65,11 +65,6 @@ public class TerminalNodeImpl implements TerminalNode {
|
||||||
@Override
|
@Override
|
||||||
public int getChildCount() { return 0; }
|
public int getChildCount() { return 0; }
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ParseTree> getChildren() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
|
public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
|
||||||
return visitor.visitTerminal(this);
|
return visitor.visitTerminal(this);
|
||||||
|
|
|
@ -62,9 +62,6 @@ public interface Tree {
|
||||||
*/
|
*/
|
||||||
int getChildCount();
|
int getChildCount();
|
||||||
|
|
||||||
/** Return ordered list of all children of this node */
|
|
||||||
List<? extends Tree> getChildren();
|
|
||||||
|
|
||||||
/** Print out a whole tree, not just a node, in LISP format
|
/** 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.
|
* {@code (root child1 .. childN)}. Print just a node if this is a leaf.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -154,6 +154,16 @@ public class Trees {
|
||||||
return t.getPayload().toString();
|
return t.getPayload().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Return ordered list of all children of this node */
|
||||||
|
public static List<Tree> getChildren(Tree t) {
|
||||||
|
List<Tree> kids = new ArrayList<Tree>();
|
||||||
|
for (int i=0; i<t.getChildCount(); i++) {
|
||||||
|
kids.add(t.getChild(i));
|
||||||
|
}
|
||||||
|
return kids;
|
||||||
|
}
|
||||||
|
|
||||||
/** Return a list of all ancestors of this node. The first node of
|
/** Return a list of all ancestors of this node. The first node of
|
||||||
* list is the root and the last is the parent of this node.
|
* list is the root and the last is the parent of this node.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -3,6 +3,7 @@ package org.antlr.v4.runtime.tree.xpath;
|
||||||
import org.antlr.v4.runtime.ParserRuleContext;
|
import org.antlr.v4.runtime.ParserRuleContext;
|
||||||
import org.antlr.v4.runtime.tree.ParseTree;
|
import org.antlr.v4.runtime.tree.ParseTree;
|
||||||
import org.antlr.v4.runtime.tree.Tree;
|
import org.antlr.v4.runtime.tree.Tree;
|
||||||
|
import org.antlr.v4.runtime.tree.Trees;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
@ -19,7 +20,7 @@ public class XPathRuleElement extends XPathElement {
|
||||||
public Collection<ParseTree> evaluate(ParseTree t) {
|
public Collection<ParseTree> evaluate(ParseTree t) {
|
||||||
// return all children of t that match nodeName
|
// return all children of t that match nodeName
|
||||||
List<ParseTree> nodes = new ArrayList<ParseTree>();
|
List<ParseTree> nodes = new ArrayList<ParseTree>();
|
||||||
for (Tree c : t.getChildren()) {
|
for (Tree c : Trees.getChildren(t)) {
|
||||||
if ( c instanceof ParserRuleContext ) {
|
if ( c instanceof ParserRuleContext ) {
|
||||||
ParserRuleContext ctx = (ParserRuleContext)c;
|
ParserRuleContext ctx = (ParserRuleContext)c;
|
||||||
if ( (ctx.getRuleIndex() == ruleIndex && !invert) ||
|
if ( (ctx.getRuleIndex() == ruleIndex && !invert) ||
|
||||||
|
|
|
@ -3,6 +3,7 @@ package org.antlr.v4.runtime.tree.xpath;
|
||||||
import org.antlr.v4.runtime.tree.ParseTree;
|
import org.antlr.v4.runtime.tree.ParseTree;
|
||||||
import org.antlr.v4.runtime.tree.TerminalNode;
|
import org.antlr.v4.runtime.tree.TerminalNode;
|
||||||
import org.antlr.v4.runtime.tree.Tree;
|
import org.antlr.v4.runtime.tree.Tree;
|
||||||
|
import org.antlr.v4.runtime.tree.Trees;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
@ -19,7 +20,7 @@ public class XPathTokenElement extends XPathElement {
|
||||||
public Collection<ParseTree> evaluate(ParseTree t) {
|
public Collection<ParseTree> evaluate(ParseTree t) {
|
||||||
// return all children of t that match nodeName
|
// return all children of t that match nodeName
|
||||||
List<ParseTree> nodes = new ArrayList<ParseTree>();
|
List<ParseTree> nodes = new ArrayList<ParseTree>();
|
||||||
for (Tree c : t.getChildren()) {
|
for (Tree c : Trees.getChildren(t)) {
|
||||||
if ( c instanceof TerminalNode ) {
|
if ( c instanceof TerminalNode ) {
|
||||||
TerminalNode tnode = (TerminalNode)c;
|
TerminalNode tnode = (TerminalNode)c;
|
||||||
if ( (tnode.getSymbol().getType() == tokenType && !invert) ||
|
if ( (tnode.getSymbol().getType() == tokenType && !invert) ||
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
package org.antlr.v4.runtime.tree.xpath;
|
package org.antlr.v4.runtime.tree.xpath;
|
||||||
|
|
||||||
import org.antlr.v4.runtime.tree.ParseTree;
|
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.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class XPathWildcardElement extends XPathElement {
|
public class XPathWildcardElement extends XPathElement {
|
||||||
|
@ -14,6 +17,10 @@ public class XPathWildcardElement extends XPathElement {
|
||||||
@Override
|
@Override
|
||||||
public Collection<ParseTree> evaluate(final ParseTree t) {
|
public Collection<ParseTree> evaluate(final ParseTree t) {
|
||||||
if ( invert ) return new ArrayList<ParseTree>(); // !* is weird but valid (empty)
|
if ( invert ) return new ArrayList<ParseTree>(); // !* is weird but valid (empty)
|
||||||
return new ArrayList<ParseTree>() {{addAll((List<ParseTree>)t.getChildren());}};
|
List<ParseTree> kids = new ArrayList<ParseTree>();
|
||||||
|
for (Tree c : Trees.getChildren(t)) {
|
||||||
|
kids.add((ParseTree)c);
|
||||||
|
}
|
||||||
|
return kids;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue