public String getRuleName(int index) { if ( parser!=null && index>=0 ) return parser.getRuleNames()[index]; return "<rule "+index+">"; }
protected String getDecisionDescription(Parser recognizer, DFA dfa) { int decision = dfa.decision; int ruleIndex = dfa.atnStartState.ruleIndex; String[] ruleNames = recognizer.getRuleNames(); if (ruleIndex < 0 || ruleIndex >= ruleNames.length) { return String.valueOf(decision); } String ruleName = ruleNames[ruleIndex]; if (ruleName == null || ruleName.isEmpty()) { return String.valueOf(decision); } return String.format("%d (%s)", decision, ruleName); }
/** Print out a whole tree in LISP form. {@link #getNodeText} is used on the * node payloads to get the text for the nodes. Detect * parse trees and extract data appropriately. */ public static String toStringTree(Tree t, Parser recog) { String[] ruleNames = recog != null ? recog.getRuleNames() : null; List<String> ruleNamesList = ruleNames != null ? Arrays.asList(ruleNames) : null; return toStringTree(t, ruleNamesList); }
public static String getNodeText(Tree t, Parser recog) { String[] ruleNames = recog != null ? recog.getRuleNames() : null; List<String> ruleNamesList = ruleNames != null ? Arrays.asList(ruleNames) : null; return getNodeText(t, ruleNamesList); }
public List<String> getRuleInvocationStack(RuleContext p) { String[] ruleNames = getRuleNames(); List<String> stack = new ArrayList<String>(); while ( p!=null ) { // compute what follows who invoked us int ruleIndex = p.getRuleIndex(); if ( ruleIndex<0 ) stack.add("n/a"); else stack.add(ruleNames[ruleIndex]); p = p.parent; } return stack; }
@Override public void enterEveryRule(ParserRuleContext ctx) { System.out.println("enter " + getRuleNames()[ctx.getRuleIndex()] + ", LT(1)=" + _input.LT(1).getText()); }
@Override public void exitEveryRule(ParserRuleContext ctx) { System.out.println("exit "+getRuleNames()[ctx.getRuleIndex()]+ ", LT(1)="+_input.LT(1).getText()); } }
@Override public void visitTerminal(TerminalNode node) { System.out.println("consume "+node.getSymbol()+" rule "+ getRuleNames()[_ctx.getRuleIndex()]); }
/** * This is called by {@link #reportError} when the exception is a * {@link FailedPredicateException}. * * @see #reportError * * @param recognizer the parser instance * @param e the recognition exception */ protected void reportFailedPredicate(Parser recognizer, FailedPredicateException e) { String ruleName = recognizer.getRuleNames()[recognizer._ctx.getRuleIndex()]; String msg = "rule "+ruleName+" "+e.getMessage(); recognizer.notifyErrorListeners(e.getOffendingToken(), msg, e); }
Arrays.asList(parser.getRuleNames()), parser.getATNWithBypassAlts(), tokens);
/** Save this tree in a postscript file */ public static void save(Tree t, Parser parser, String fileName) throws IOException, PrintException { List<String> ruleNames = parser != null ? Arrays.asList(parser.getRuleNames()) : null; save(t, ruleNames, fileName); }
/** Save this tree in a postscript file using a particular font name and size */ public static void save(Tree t, Parser parser, String fileName, String fontName, int fontSize) throws IOException { List<String> ruleNames = parser != null ? Arrays.asList(parser.getRuleNames()) : null; save(t, ruleNames, fileName, fontName, fontSize); }
/** Call this method to view a parse tree in a dialog box visually. */ public static Future<JFrame> inspect(Tree t, Parser parser) { List<String> ruleNames = parser != null ? Arrays.asList(parser.getRuleNames()) : null; return inspect(t, ruleNames); }
public List<String> getRuleInvocationStack(RuleContext p) { String[] ruleNames = getRuleNames(); List<String> stack = new ArrayList<String>(); while ( p!=null ) { // compute what follows who invoked us int ruleIndex = p.getRuleIndex(); if ( ruleIndex<0 ) stack.add("n/a"); else stack.add(ruleNames[ruleIndex]); p = p.parent; } return stack; }
/** Call this method to view a parse tree in a dialog box visually. */ public static Future<JDialog> inspect(Tree t, Parser parser) { List<String> ruleNames = parser != null ? Arrays.asList(parser.getRuleNames()) : null; return inspect(t, ruleNames); }
@Override public void exitEveryRule(ParserRuleContext ctx) { System.out.println("exit "+getRuleNames()[ctx.getRuleIndex()]+ ", LT(1)="+_input.LT(1).getText()); }
/** For debugging and other purposes. */ public List<String> getDFAStrings() { List<String> s = new ArrayList<String>(); for (int d = 0; d < _interp.atn.decisionToDFA.length; d++) { DFA dfa = _interp.atn.decisionToDFA[d]; s.add( dfa.toString(getVocabulary(), getRuleNames()) ); } return s; }
@Override public void enterEveryRule(ParserRuleContext ctx) { System.out.println("enter " + getRuleNames()[ctx.getRuleIndex()] + ", LT(1)=" + _input.LT(1).getText()); }
/** Print out a whole tree in LISP form. {@link #getNodeText} is used on the * node payloads to get the text for the nodes. Detect * parse trees and extract data appropriately. */ public static String toStringTree(@NotNull Tree t, @Nullable Parser recog) { String[] ruleNames = recog != null ? recog.getRuleNames() : null; List<String> ruleNamesList = ruleNames != null ? Arrays.asList(ruleNames) : null; return toStringTree(t, ruleNamesList); }
protected void reportFailedPredicate(@NotNull Parser recognizer, @NotNull FailedPredicateException e) { String ruleName = recognizer.getRuleNames()[recognizer.getContext().getRuleIndex()]; BeetlException exception = new BeetlParserException(BeetlException.PARSER_PREDICATE_ERROR, ruleName, e); // exception.token = this.getGrammarToken(e.getOffendingToken()); exception.pushToken(this.getGrammarToken(e.getOffendingToken())); throw exception; }