Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/util/ExtractorUtils.java +27 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import org.antlr.v4.runtime.tree.ParseTree; import java.util.Collection; import java.util.LinkedList; import java.util.Queue; /** * Extractor utility. Loading Loading @@ -71,6 +72,32 @@ public final class ExtractorUtils { return Optional.absent(); } /** * Find first child node breadth first. * * @param node start node * @param ruleName rule name * @return matched node */ public static Optional<ParserRuleContext> findFirstChildNodeBreadthFirst(final ParserRuleContext node, final RuleName ruleName) { Queue<ParserRuleContext> parserRuleContexts = new LinkedList<>(); parserRuleContexts.add(node); ParserRuleContext parserRuleContext; while (null != (parserRuleContext = parserRuleContexts.poll())) { if (parserRuleContext instanceof ParserRuleContext) { if (isMatchedNode((ParserRuleContext) parserRuleContext, ruleName)) { return Optional.of((ParserRuleContext) parserRuleContext); } for (int i = 0; i < parserRuleContext.getChildCount(); i++) { if (parserRuleContext.getChild(i) instanceof ParserRuleContext) { parserRuleContexts.add((ParserRuleContext) parserRuleContext.getChild(i)); } } } } return Optional.absent(); } /** * Find first child node none recursive. * Loading Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/util/ExtractorUtils.java +27 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import org.antlr.v4.runtime.tree.ParseTree; import java.util.Collection; import java.util.LinkedList; import java.util.Queue; /** * Extractor utility. Loading Loading @@ -71,6 +72,32 @@ public final class ExtractorUtils { return Optional.absent(); } /** * Find first child node breadth first. * * @param node start node * @param ruleName rule name * @return matched node */ public static Optional<ParserRuleContext> findFirstChildNodeBreadthFirst(final ParserRuleContext node, final RuleName ruleName) { Queue<ParserRuleContext> parserRuleContexts = new LinkedList<>(); parserRuleContexts.add(node); ParserRuleContext parserRuleContext; while (null != (parserRuleContext = parserRuleContexts.poll())) { if (parserRuleContext instanceof ParserRuleContext) { if (isMatchedNode((ParserRuleContext) parserRuleContext, ruleName)) { return Optional.of((ParserRuleContext) parserRuleContext); } for (int i = 0; i < parserRuleContext.getChildCount(); i++) { if (parserRuleContext.getChild(i) instanceof ParserRuleContext) { parserRuleContexts.add((ParserRuleContext) parserRuleContext.getChild(i)); } } } } return Optional.absent(); } /** * Find first child node none recursive. * Loading