diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index fd96806607c8e5da458f60ca4f747b544b4d964e..7e8878d6eaf31cc2769eceb9870f37b62c60bbed 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -173,15 +173,16 @@ public class Parser implements IParser
         push(0, null);
         while(true)
         {
-            while(index(this.lexer.peek()) == -1)
+            Token lastToken = this.lexer.peek();
+            int index = index(lastToken);
+            while(index == -1)
             {
                 // this is an ignored token
                 this.lexer.next();
+                lastToken = this.lexer.peek();
+                index = index(lastToken);
             }
 
-            Token lastToken = this.lexer.peek();
-
-            int index = index(this.lexer.peek());
             int state = state();
             int action = Parser.actionTable[state][0][1];
             int destination = Parser.actionTable[state][0][2];
diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt
index cd56e7b115fd386477648cdce010d92923097901..0632711d7ecfebd8eecabe76a3fa6b91a3bd32d9 100644
--- a/src/main/resources/org/sablecc/sablecc/parser.txt
+++ b/src/main/resources/org/sablecc/sablecc/parser.txt
@@ -207,15 +207,16 @@ Macro:ParserCommon
         push(0, null$0$);
         while(true)
         {
-            while(index(this.lexer.peek()) == -1)
+            Token lastToken = this.lexer.peek();
+            int index = index(lastToken);
+            while(index == -1)
             {
                 // this is an ignored token
                 this.lexer.next();
+                lastToken = this.lexer.peek();
+                index = index(lastToken);
             }
 
-            Token lastToken = this.lexer.peek();
-
-            int index = index(this.lexer.peek());
             int state = state();
             int action = Parser.actionTable[state][0][1];
             int destination = Parser.actionTable[state][0][2];