fix error handling to just match <expr> as token under expr RuleNode

This commit is contained in:
Terence Parr 2013-09-08 19:10:04 -07:00
parent cfac804b57
commit 7ead36fb4b
1 changed files with 1 additions and 7 deletions

View File

@ -33,7 +33,6 @@ package org.antlr.v4.runtime.tree.pattern;
import org.antlr.v4.runtime.DefaultErrorStrategy; import org.antlr.v4.runtime.DefaultErrorStrategy;
import org.antlr.v4.runtime.InputMismatchException; import org.antlr.v4.runtime.InputMismatchException;
import org.antlr.v4.runtime.Parser; import org.antlr.v4.runtime.Parser;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.RecognitionException; import org.antlr.v4.runtime.RecognitionException;
import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.Token;
@ -71,12 +70,7 @@ public class ParseTreePatternErrorStrategy extends DefaultErrorStrategy {
@Override @Override
public void recover(Parser recognizer, RecognitionException e) { public void recover(Parser recognizer, RecognitionException e) {
if (e.getOffendingToken() instanceof RuleTagToken) { if (e.getOffendingToken() instanceof RuleTagToken) {
ParserRuleContext ctx = recognizer.getContext(); recognizer.consume(); // match <tag> as if it matches rule, continue
RuleSubtreeNode sub = new RuleSubtreeNode(ctx);
ParserRuleContext parent = ctx.getParent();
int i = parent.children.indexOf(ctx);
parent.children.set(i, sub); // replace
recognizer.consume(); // skip over the <tag>
} }
else { else {
super.recover(recognizer, e); super.recover(recognizer, e);