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