diff --git a/src/main/java/org/sablecc/sablecc/lexer/LexerException.java b/src/main/java/org/sablecc/sablecc/lexer/LexerException.java
index ff4967e996b54a6bdc34a5de61e6d91ae1846522..dc2e2541e7792ec4ef40f79dbdd7ae5ce45e0cbb 100644
--- a/src/main/java/org/sablecc/sablecc/lexer/LexerException.java
+++ b/src/main/java/org/sablecc/sablecc/lexer/LexerException.java
@@ -9,14 +9,19 @@ public class LexerException extends Exception
     private final int pos;
     private final String realMsg;
 
-    public LexerException(int line, int pos, String message)
+    public LexerException(int line, int pos, String message, Throwable cause)
     {
-        super("[" + line + "," + pos + "] " + message);
+        super("[" + line + "," + pos + "] " + message, cause);
         this.line = line;
         this.pos = pos;
         this.realMsg = message;
     }
 
+    public LexerException(int line, int pos, String message)
+    {
+        this(line, pos, message, null);
+    }
+
     public LexerException(String message)
     {
         this(0, 0, message);
diff --git a/src/main/java/org/sablecc/sablecc/parser/ParserException.java b/src/main/java/org/sablecc/sablecc/parser/ParserException.java
index 6ba7aa8d86260bee4341e2ad559fe4a6bcc112b8..af942d5f627bbdf9d6295f3259875bc659afe4c0 100644
--- a/src/main/java/org/sablecc/sablecc/parser/ParserException.java
+++ b/src/main/java/org/sablecc/sablecc/parser/ParserException.java
@@ -10,13 +10,18 @@ public class ParserException extends Exception
     private final Token token;
     private final String realMsg;
 
-    public ParserException(Token token, String message)
+    public ParserException(Token token, String message, Throwable cause)
     {
-        super("[" + token.getLine() + "," + token.getPos() + "] " + message);
+        super("[" + token.getLine() + "," + token.getPos() + "] " + message, cause);
         this.token = token;
         this.realMsg = message;
     }
 
+    public ParserException(Token token, String message)
+    {
+        this(token, message, (Throwable)null);
+    }
+
     /**
      * @deprecated Use {@link #ParserException(Token, String)} instead.
      *     The token position info is now added automatically to the message.
diff --git a/src/main/resources/org/sablecc/sablecc/lexer.txt b/src/main/resources/org/sablecc/sablecc/lexer.txt
index aa9b584888e26addfee5c861eb2096fd167b09fa..eede12a0c731ccae2c72126b558aaae6bf11060f 100644
--- a/src/main/resources/org/sablecc/sablecc/lexer.txt
+++ b/src/main/resources/org/sablecc/sablecc/lexer.txt
@@ -17,14 +17,19 @@ public class LexerException extends Exception
     private final int pos;
     private final String realMsg;
 
-    public LexerException(int line, int pos, String message)
+    public LexerException(int line, int pos, String message, Throwable cause)
     {
-        super("[" + line + "," + pos + "] " + message);
+        super("[" + line + "," + pos + "] " + message, cause);
         this.line = line;
         this.pos = pos;
         this.realMsg = message;
     }
 
+    public LexerException(int line, int pos, String message)
+    {
+        this(line, pos, message, null);
+    }
+
     public LexerException(String message)
     {
         this(0, 0, message);
diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt
index 0613a91c619b8ff2a8315c9b79607fb55a97a6ba..b591f3e1abd8c9154dab0142655d4944ce554088 100644
--- a/src/main/resources/org/sablecc/sablecc/parser.txt
+++ b/src/main/resources/org/sablecc/sablecc/parser.txt
@@ -512,13 +512,18 @@ public class ParserException extends Exception
     private final Token token;
     private final String realMsg;
 
-    public ParserException(Token token, String message)
+    public ParserException(Token token, String message, Throwable cause)
     {
-        super("[" + token.getLine() + "," + token.getPos() + "] " + message);
+        super("[" + token.getLine() + "," + token.getPos() + "] " + message, cause);
         this.token = token;
         this.realMsg = message;
     }
 
+    public ParserException(Token token, String message)
+    {
+        this(token, message, (Throwable)null);
+    }
+
     /**
      * @deprecated Use {@link #ParserException(Token, String)} instead.
      *     The token position info is now added automatically to the message.