From 22f5611340e2043b2745f9595943065da1339db8 Mon Sep 17 00:00:00 2001 From: dgelessus <dgelessus@users.noreply.github.com> Date: Thu, 16 May 2024 15:27:45 +0200 Subject: [PATCH] Detect unhandled cases in generated Parser switch blocks --- src/main/java/org/sablecc/sablecc/parser/Parser.java | 5 +++++ src/main/resources/org/sablecc/sablecc/parser.txt | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java index 307f9d1..1f17b9a 100644 --- a/src/main/java/org/sablecc/sablecc/parser/Parser.java +++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java @@ -1800,6 +1800,8 @@ public class Parser implements IParser push(goTo(64), list); } break; + default: + throw new ParserException(lastToken, "[" + lastToken.getLine() + "," + lastToken.getPos() + "] Internal parser error: invalid action table REDUCE destination " + destination + ", current state " + state()); } break; case ACCEPT: @@ -1813,6 +1815,9 @@ public class Parser implements IParser throw new ParserException(lastToken, "[" + lastToken.getLine() + "," + lastToken.getPos() + "] " , 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()); } } } diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt index 74b289f..3d28b80 100644 --- a/src/main/resources/org/sablecc/sablecc/parser.txt +++ b/src/main/resources/org/sablecc/sablecc/parser.txt @@ -208,6 +208,8 @@ Macro:ParserParseReduce $ Macro:ParserParseTail + default: + throw new ParserException(lastToken, "[" + lastToken.getLine() + "," + lastToken.getPos() + "] Internal parser error: invalid action table REDUCE destination " + destination + ", current state " + state()); } break; case ACCEPT: @@ -221,6 +223,9 @@ Macro:ParserParseTail throw new ParserException(lastToken, "[" + lastToken.getLine() + "," + lastToken.getPos() + "] " , 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()); } } } -- GitLab