diff --git a/runtime/Java/src/org/antlr/v4/runtime/tree/pattern/ParseTreePatternMatcher.java b/runtime/Java/src/org/antlr/v4/runtime/tree/pattern/ParseTreePatternMatcher.java index f38db1d85..f8b0c6a93 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/tree/pattern/ParseTreePatternMatcher.java +++ b/runtime/Java/src/org/antlr/v4/runtime/tree/pattern/ParseTreePatternMatcher.java @@ -31,6 +31,7 @@ package org.antlr.v4.runtime.tree.pattern; import org.antlr.v4.runtime.ANTLRInputStream; +import org.antlr.v4.runtime.BailErrorStrategy; import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.Lexer; import org.antlr.v4.runtime.ListTokenSource; @@ -43,6 +44,7 @@ import org.antlr.v4.runtime.atn.ATN; import org.antlr.v4.runtime.misc.MultiMap; import org.antlr.v4.runtime.misc.NotNull; import org.antlr.v4.runtime.misc.Nullable; +import org.antlr.v4.runtime.misc.ParseCancellationException; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.RuleNode; import org.antlr.v4.runtime.tree.TerminalNode; @@ -225,9 +227,13 @@ public class ParseTreePatternMatcher { ParseTree tree = null; try { + parserInterp.setErrorHandler(new BailErrorStrategy()); tree = parserInterp.parse(patternRuleIndex); // System.out.println("pattern tree = "+tree.toStringTree(parserInterp)); } + catch (ParseCancellationException e) { + throw (RecognitionException)e.getCause(); + } catch (RecognitionException re) { throw re; }