diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java index 6f04f9d70c21b0cf4e7c0004b3f8fefd6ad4b23d..a56e5676957a6146cd592a81237cc4fbbb9d34ad 100644 --- a/src/main/java/org/sablecc/sablecc/parser/Parser.java +++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java @@ -1799,7 +1799,7 @@ public class Parser implements IParser } break; default: - throw new ParserException(lastToken, "[" + lastToken.getLine() + "," + lastToken.getPos() + "] Internal parser error: invalid action table REDUCE destination " + destination + ", current state " + state()); + throw new ParserException(lastToken, "Internal parser error: invalid action table REDUCE destination " + destination + ", current state " + state()); } break; @@ -1809,12 +1809,10 @@ public class Parser implements IParser return new Start(top, eof); case ERROR: - throw new ParserException(lastToken, - "[" + lastToken.getLine() + "," + lastToken.getPos() + "] " , - Parser.errorMessages[Parser.errors[destination]]); + throw new ParserException(lastToken, Parser.errorMessages[Parser.errors[destination]]); default: - throw new ParserException(lastToken, "[" + lastToken.getLine() + "," + lastToken.getPos() + "] Internal parser error: invalid action table entry " + action + ", destination " + destination + ", current state " + state()); + throw new ParserException(lastToken, "Internal parser error: invalid action table entry " + action + ", destination " + destination + ", current state " + state()); } } } diff --git a/src/main/java/org/sablecc/sablecc/parser/ParserException.java b/src/main/java/org/sablecc/sablecc/parser/ParserException.java index 518b8ecd4692c662aa3427323fd33837131eacec..e7436781a095cf728369273102df7e6e71d78548 100644 --- a/src/main/java/org/sablecc/sablecc/parser/ParserException.java +++ b/src/main/java/org/sablecc/sablecc/parser/ParserException.java @@ -7,15 +7,21 @@ import org.sablecc.sablecc.node.*; @SuppressWarnings("serial") public class ParserException extends Exception { - Token token; - String realMsg; + private final Token token; + private final String realMsg; public ParserException(Token token, String message) { - super(message); + super("[" + token.getLine() + "," + token.getPos() + "] " + message); this.token = token; + this.realMsg = message; } + /** + * @deprecated Use {@link #ParserException(Token, String)} instead. + * The token position info is now added automatically to the message. + */ + @Deprecated public ParserException(Token token, String prefix, String message) { super(prefix+message); diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt index 72b1419148fb67793cc751dfde29c5b5ddd8053f..9d595ef5c7771442178b31310466a25dfe284d0d 100644 --- a/src/main/resources/org/sablecc/sablecc/parser.txt +++ b/src/main/resources/org/sablecc/sablecc/parser.txt @@ -207,7 +207,7 @@ $ Macro:ParserParseTail default: - throw new ParserException(lastToken, "[" + lastToken.getLine() + "," + lastToken.getPos() + "] Internal parser error: invalid action table REDUCE destination " + destination + ", current state " + state()); + throw new ParserException(lastToken, "Internal parser error: invalid action table REDUCE destination " + destination + ", current state " + state()); } break; @@ -217,12 +217,10 @@ Macro:ParserParseTail return new Start(top, eof); case ERROR: - throw new ParserException(lastToken, - "[" + lastToken.getLine() + "," + lastToken.getPos() + "] " , - Parser.errorMessages[Parser.errors[destination]]); + throw new ParserException(lastToken, Parser.errorMessages[Parser.errors[destination]]); default: - throw new ParserException(lastToken, "[" + lastToken.getLine() + "," + lastToken.getPos() + "] Internal parser error: invalid action table entry " + action + ", destination " + destination + ", current state " + state()); + throw new ParserException(lastToken, "Internal parser error: invalid action table entry " + action + ", destination " + destination + ", current state " + state()); } } } @@ -511,15 +509,21 @@ import $0$node.*; @SuppressWarnings("serial") public class ParserException extends Exception { - Token token; - String realMsg; + private final Token token; + private final String realMsg; public ParserException(Token token, String message) { - super(message); + super("[" + token.getLine() + "," + token.getPos() + "] " + message); this.token = token; + this.realMsg = message; } + /** + * @deprecated Use {@link #ParserException(Token, String)} instead. + * The token position info is now added automatically to the message. + */ + @Deprecated public ParserException(Token token, String prefix, String message) { super(prefix+message);