From 54a80d031c95ada10c7fdc272ef106fb68b5d883 Mon Sep 17 00:00:00 2001 From: dgelessus <dgelessus@users.noreply.github.com> Date: Wed, 18 Sep 2024 12:52:33 +0200 Subject: [PATCH] Set realMsg consistently for all ParserExceptions --- .../org/sablecc/sablecc/parser/Parser.java | 8 +++----- .../sablecc/parser/ParserException.java | 12 ++++++++--- .../resources/org/sablecc/sablecc/parser.txt | 20 +++++++++++-------- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java index 6f04f9d..a56e567 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 518b8ec..e743678 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 72b1419..9d595ef 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); -- GitLab