diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index eb9f70dcc3aa6ec895c8d3df3e8d7ff4a6029a00..25f75335662a220534fa87cdf95ee96e381f0a48 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -187,28 +187,29 @@ public class Parser implements IParser
             this.last_token = this.lexer.peek();
 
             int index = index(this.lexer.peek());
-            int action = Parser.actionTable[state()][0][1];
-            int destination = Parser.actionTable[state()][0][2];
+            int state = state();
+            int action = Parser.actionTable[state][0][1];
+            int destination = Parser.actionTable[state][0][2];
 
             int low = 1;
-            int high = Parser.actionTable[state()].length - 1;
+            int high = Parser.actionTable[state].length - 1;
 
             while(low <= high)
             {
                 int middle = (low + high) >>> 1;
 
-                if(index < Parser.actionTable[state()][middle][0])
+                if(index < Parser.actionTable[state][middle][0])
                 {
                     high = middle - 1;
                 }
-                else if(index > Parser.actionTable[state()][middle][0])
+                else if(index > Parser.actionTable[state][middle][0])
                 {
                     low = middle + 1;
                 }
                 else
                 {
-                    action = Parser.actionTable[state()][middle][1];
-                    destination = Parser.actionTable[state()][middle][2];
+                    action = Parser.actionTable[state][middle][1];
+                    destination = Parser.actionTable[state][middle][2];
                     break;
                 }
             }
diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt
index 013a568a09ccdcb37f0c725cf05a71d0378643fd..b90e4a60759b854a2130b93a6ebbb17ccb2a4d2f 100644
--- a/src/main/resources/org/sablecc/sablecc/parser.txt
+++ b/src/main/resources/org/sablecc/sablecc/parser.txt
@@ -221,28 +221,29 @@ Macro:ParserCommon
             this.last_token = this.lexer.peek();
 
             int index = index(this.lexer.peek());
-            int action = Parser.actionTable[state()][0][1];
-            int destination = Parser.actionTable[state()][0][2];
+            int state = state();
+            int action = Parser.actionTable[state][0][1];
+            int destination = Parser.actionTable[state][0][2];
 
             int low = 1;
-            int high = Parser.actionTable[state()].length - 1;
+            int high = Parser.actionTable[state].length - 1;
 
             while(low <= high)
             {
                 int middle = (low + high) >>> 1;
 
-                if(index < Parser.actionTable[state()][middle][0])
+                if(index < Parser.actionTable[state][middle][0])
                 {
                     high = middle - 1;
                 }
-                else if(index > Parser.actionTable[state()][middle][0])
+                else if(index > Parser.actionTable[state][middle][0])
                 {
                     low = middle + 1;
                 }
                 else
                 {
-                    action = Parser.actionTable[state()][middle][1];
-                    destination = Parser.actionTable[state()][middle][2];
+                    action = Parser.actionTable[state][middle][1];
+                    destination = Parser.actionTable[state][middle][2];
                     break;
                 }
             }