From c0911fb8daff268e99baf10282cde7b6311cf6e6 Mon Sep 17 00:00:00 2001
From: dgelessus <dgelessus@users.noreply.github.com>
Date: Thu, 20 Jul 2023 18:56:30 +0200
Subject: [PATCH] Eliminate a double call to index in Parser.parser

---
 src/main/java/org/sablecc/sablecc/parser/Parser.java | 9 +++++----
 src/main/resources/org/sablecc/sablecc/parser.txt    | 9 +++++----
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index fd96806..7e8878d 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 cd56e7b..0632711 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];
-- 
GitLab