/** * The discovery of a rule node, involves sending two events: the generic * {@link ParseTreeListener#enterEveryRule} and a * {@link RuleContext}-specific event. First we trigger the generic and then * the rule specific. We to them in reverse order upon finishing the node. */ protected void enterRule(ParseTreeListener listener, RuleNode r) { ParserRuleContext ctx = (ParserRuleContext)r.getRuleContext(); listener.enterEveryRule(ctx); ctx.enterRule(listener); }
protected void exitRule(ParseTreeListener listener, RuleNode r) { ParserRuleContext ctx = (ParserRuleContext)r.getRuleContext(); ctx.exitRule(listener); listener.exitEveryRule(ctx); } }
private static boolean isRuleOfType(Tree child, int ruleNum) { if (!(child instanceof RuleNode)) { return false; } RuleNode ruleNode = (RuleNode) child; return ruleNode.getRuleContext().getRuleIndex() == ruleNum; }
public static int getRuleIndexIfProvided(ParseTree tree) { if (!(tree instanceof RuleNode)) { return -1; } RuleNode ruleNode = (RuleNode) tree; return ruleNode.getRuleContext().getRuleIndex(); }
private static boolean isRuleOfType(Tree child, int ruleNum) { if (!(child instanceof RuleNode)) { return false; } RuleNode ruleNode = (RuleNode) child; return ruleNode.getRuleContext().getRuleIndex() == ruleNum; }
public static int getRuleIndexIfProvided(ParseTree tree) { if (!(tree instanceof RuleNode)) { return -1; } RuleNode ruleNode = (RuleNode) tree; return ruleNode.getRuleContext().getRuleIndex(); }
/** * The discovery of a rule node, involves sending two events: the generic * {@link ParseTreeListener#enterEveryRule} and a * {@link RuleContext}-specific event. First we trigger the generic and then * the rule specific. We to them in reverse order upon finishing the node. */ protected void enterRule(ParseTreeListener listener, RuleNode r) { ParserRuleContext ctx = (ParserRuleContext)r.getRuleContext(); listener.enterEveryRule(ctx); ctx.enterRule(listener); }
protected void exitRule(ParseTreeListener listener, RuleNode r) { ParserRuleContext ctx = (ParserRuleContext)r.getRuleContext(); ctx.exitRule(listener); listener.exitEveryRule(ctx); } }
protected void exitRule(ParseTreeListener listener, RuleNode r) { ParserRuleContext ctx = (ParserRuleContext)r.getRuleContext(); ctx.exitRule(listener); listener.exitEveryRule(ctx); } }
protected void exitRule(ParseTreeListener listener, RuleNode r) { ParserRuleContext ctx = (ParserRuleContext)r.getRuleContext(); ctx.exitRule(listener); listener.exitEveryRule(ctx); } }
/** * The discovery of a rule node, involves sending two events: the generic * {@link ParseTreeListener#enterEveryRule} and a * {@link RuleContext}-specific event. First we trigger the generic and then * the rule specific. We to them in reverse order upon finishing the node. */ protected void enterRule(ParseTreeListener listener, RuleNode r) { ParserRuleContext ctx = (ParserRuleContext)r.getRuleContext(); listener.enterEveryRule(ctx); ctx.enterRule(listener); }
/** * The discovery of a rule node, involves sending two events: the generic * {@link ParseTreeListener#enterEveryRule} and a * {@link RuleContext}-specific event. First we trigger the generic and then * the rule specific. We to them in reverse order upon finishing the node. */ protected void enterRule(ParseTreeListener listener, RuleNode r) { ParserRuleContext ctx = (ParserRuleContext)r.getRuleContext(); listener.enterEveryRule(ctx); ctx.enterRule(listener); }
/** * The discovery of a rule node, involves sending two events: the generic * {@link ParseTreeListener#enterEveryRule} and a * {@link RuleContext}-specific event. First we trigger the generic and then * the rule specific. We to them in reverse order upon finishing the node. */ protected void enterRule(ParseTreeListener listener, RuleNode r) { ParserRuleContext ctx = (ParserRuleContext)r.getRuleContext(); listener.enterEveryRule(ctx); ctx.enterRule(listener); }
protected void exitRule(ParseTreeListener listener, RuleNode r) { ParserRuleContext ctx = (ParserRuleContext)r.getRuleContext(); ctx.exitRule(listener); listener.exitEveryRule(ctx); } }
public static String getNodeText(Tree t, List<String> ruleNames) { if ( ruleNames!=null ) { if ( t instanceof RuleNode ) { int ruleIndex = ((RuleNode)t).getRuleContext().getRuleIndex(); String ruleName = ruleNames.get(ruleIndex); return ruleName; } else if ( t instanceof ErrorNode) { return t.toString(); } else if ( t instanceof TerminalNode) { Token symbol = ((TerminalNode)t).getSymbol(); if (symbol != null) { String s = symbol.getText(); return s; } } } // no recog for rule names Object payload = t.getPayload(); if ( payload instanceof Token ) { return ((Token)payload).getText(); } return t.getPayload().toString(); }
private static <T> T assignRuleContext(ParseTree root, T ruleContainer) { InstanceTypeAssigner instanceTypeAssigner = new InstanceTypeAssigner(ruleContainer, RuleContext.class); parseTreeWalker(root, rule -> { instanceTypeAssigner.tryAssign(rule.getRuleContext()); }); return ruleContainer; }
@Override public void visitTerminal(TerminalNode node) { ParserRuleContext parent = (ParserRuleContext)node.getParent().getRuleContext(); Token token = node.getSymbol(); System.out.println("consume "+token+" rule "+ getRuleNames()[parent.getRuleIndex()]); } }
public static int getParseTreeIndex(ParseTree parseTree) { if (parseTree instanceof TerminalNode) { return ((TerminalNode)parseTree).getSymbol().getType(); } else { return ((RuleNode)parseTree).getRuleContext().getRuleIndex(); } }
private String getNodeText(@NotNull final Tree t, @Nullable final List<String> ruleNames) { if (ruleNames != null) { if (t instanceof RuleNode) { int ruleIndex = ((RuleNode) t).getRuleContext().getRuleIndex(); String ruleName = ruleNames.get(ruleIndex); return ruleName; } else if (t instanceof ErrorNode) { return "<" + t.toString() + ">"; } else if (t instanceof TerminalNode) { Token symbol = ((TerminalNode) t).getSymbol(); if (symbol != null) { String s = symbol.getText(); return "'" + s + "'"; } } } // no recog for rule names Object payload = t.getPayload(); if (payload instanceof Token) { return ((Token) payload).getText(); } return t.getPayload().toString(); } }
public static String getNodeText(@NotNull Tree t, @Nullable List<String> ruleNames) { if ( ruleNames!=null ) { if ( t instanceof RuleNode ) { RuleContext ruleContext = ((RuleNode)t).getRuleContext(); int ruleIndex = ruleContext.getRuleIndex(); String ruleName = ruleNames.get(ruleIndex); int altNumber = ruleContext.getAltNumber(); if ( altNumber!=ATN.INVALID_ALT_NUMBER ) { return ruleName+":"+altNumber; } return ruleName; } else if ( t instanceof ErrorNode ) { return t.toString(); } else if ( t instanceof TerminalNode) { Token symbol = ((TerminalNode)t).getSymbol(); if (symbol != null) { String s = symbol.getText(); return s; } } } // no recog for rule names Object payload = t.getPayload(); if ( payload instanceof Token ) { return ((Token)payload).getText(); } return t.getPayload().toString(); }