diff --git a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
index 15d28ff28f2f99ee186b119e74eda4a48b41908d..e169187479cb715c6891f48223921f46efc02895 100644
--- a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
+++ b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
@@ -262,13 +262,9 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     try
     {
       boolean openingBraceGenerated = false;
-      for(Node term : node.getListTerms())
-      {
-        openingBraceGenerated |= generateVariableDeclaration(term, !openingBraceGenerated);
-      }
-
       for(PListTerm listTerm : node.getListTerms())
       {
+        openingBraceGenerated |= generateVariableDeclaration(listTerm, !openingBraceGenerated);
         listTerm.apply(this);
       }
 
diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index 2b34a7db99cba9bc03912478c12e6ed29ea5fee2..0ecb89060d737041412870dcd8b6df23cbb371c0 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -5554,8 +5554,8 @@ public class Parser implements IParser
         List<TPkgId> listNode3;
         {
         TPkgId tpkgidNode1;
-        List<TPkgId> listNode2;
         tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
+        List<TPkgId> listNode2;
         listNode2 = (List<TPkgId>)nodeArrayList2.get(0);
         listNode3 = new LinkedList<>();
         if(tpkgidNode1 != null)
@@ -5694,8 +5694,8 @@ public class Parser implements IParser
         List<TId> listNode3;
         {
         TId tidNode1;
-        List<TId> listNode2;
         tidNode1 = (TId)nodeArrayList1.get(0);
+        List<TId> listNode2;
         listNode2 = (List<TId>)nodeArrayList2.get(0);
         listNode3 = new LinkedList<>();
         if(tidNode1 != null)
@@ -6132,8 +6132,8 @@ public class Parser implements IParser
         List<PConcat> listNode4;
         {
         PConcat pconcatNode2;
-        List<PConcat> listNode3;
         pconcatNode2 = (PConcat)nodeArrayList1.get(0);
+        List<PConcat> listNode3;
         listNode3 = (List<PConcat>)nodeArrayList2.get(0);
         listNode4 = new LinkedList<>();
         if(pconcatNode2 != null)
@@ -6702,8 +6702,8 @@ public class Parser implements IParser
         List<PAlt> listNode3;
         {
         PAlt paltNode1;
-        List<PAlt> listNode2;
         paltNode1 = (PAlt)nodeArrayList1.get(0);
+        List<PAlt> listNode2;
         listNode2 = (List<PAlt>)nodeArrayList2.get(0);
         listNode3 = new LinkedList<>();
         if(paltNode1 != null)
@@ -7204,8 +7204,8 @@ public class Parser implements IParser
         List<PListTerm> listNode3;
         {
         PListTerm plisttermNode1;
-        List<PListTerm> listNode2;
         plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
+        List<PListTerm> listNode2;
         listNode2 = (List<PListTerm>)nodeArrayList2.get(0);
         listNode3 = new LinkedList<>();
         if(plisttermNode1 != null)
@@ -7485,8 +7485,8 @@ public class Parser implements IParser
         List<PTerm> listNode3;
         {
         PTerm ptermNode1;
-        List<PTerm> listNode2;
         ptermNode1 = (PTerm)nodeArrayList1.get(0);
+        List<PTerm> listNode2;
         listNode2 = (List<PTerm>)nodeArrayList2.get(0);
         listNode3 = new LinkedList<>();
         if(ptermNode1 != null)
@@ -7859,8 +7859,8 @@ public class Parser implements IParser
         List<PAstAlt> listNode3;
         {
         PAstAlt pastaltNode1;
-        List<PAstAlt> listNode2;
         pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
+        List<PAstAlt> listNode2;
         listNode2 = (List<PAstAlt>)nodeArrayList2.get(0);
         listNode3 = new LinkedList<>();
         if(pastaltNode1 != null)
@@ -8007,8 +8007,8 @@ public class Parser implements IParser
         List<TPkgId> listNode3;
         {
         List<TPkgId> listNode1;
-        TPkgId tpkgidNode2;
         listNode1 = (List<TPkgId>)nodeArrayList1.get(0);
+        TPkgId tpkgidNode2;
         tpkgidNode2 = (TPkgId)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8058,8 +8058,8 @@ public class Parser implements IParser
         List<PHelperDef> listNode3;
         {
         List<PHelperDef> listNode1;
-        PHelperDef phelperdefNode2;
         listNode1 = (List<PHelperDef>)nodeArrayList1.get(0);
+        PHelperDef phelperdefNode2;
         phelperdefNode2 = (PHelperDef)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8109,8 +8109,8 @@ public class Parser implements IParser
         List<TId> listNode3;
         {
         List<TId> listNode1;
-        TId tidNode2;
         listNode1 = (List<TId>)nodeArrayList1.get(0);
+        TId tidNode2;
         tidNode2 = (TId)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8160,8 +8160,8 @@ public class Parser implements IParser
         List<PTokenDef> listNode3;
         {
         List<PTokenDef> listNode1;
-        PTokenDef ptokendefNode2;
         listNode1 = (List<PTokenDef>)nodeArrayList1.get(0);
+        PTokenDef ptokendefNode2;
         ptokendefNode2 = (PTokenDef)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8211,8 +8211,8 @@ public class Parser implements IParser
         List<PStateListTail> listNode3;
         {
         List<PStateListTail> listNode1;
-        PStateListTail pstatelisttailNode2;
         listNode1 = (List<PStateListTail>)nodeArrayList1.get(0);
+        PStateListTail pstatelisttailNode2;
         pstatelisttailNode2 = (PStateListTail)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8262,8 +8262,8 @@ public class Parser implements IParser
         List<PConcat> listNode3;
         {
         List<PConcat> listNode1;
-        PConcat pconcatNode2;
         listNode1 = (List<PConcat>)nodeArrayList1.get(0);
+        PConcat pconcatNode2;
         pconcatNode2 = (PConcat)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8313,8 +8313,8 @@ public class Parser implements IParser
         List<PUnExp> listNode3;
         {
         List<PUnExp> listNode1;
-        PUnExp punexpNode2;
         listNode1 = (List<PUnExp>)nodeArrayList1.get(0);
+        PUnExp punexpNode2;
         punexpNode2 = (PUnExp)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8364,8 +8364,8 @@ public class Parser implements IParser
         List<PProd> listNode3;
         {
         List<PProd> listNode1;
-        PProd pprodNode2;
         listNode1 = (List<PProd>)nodeArrayList1.get(0);
+        PProd pprodNode2;
         pprodNode2 = (PProd)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8415,8 +8415,8 @@ public class Parser implements IParser
         List<PElem> listNode3;
         {
         List<PElem> listNode1;
-        PElem pelemNode2;
         listNode1 = (List<PElem>)nodeArrayList1.get(0);
+        PElem pelemNode2;
         pelemNode2 = (PElem)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8466,8 +8466,8 @@ public class Parser implements IParser
         List<PAlt> listNode3;
         {
         List<PAlt> listNode1;
-        PAlt paltNode2;
         listNode1 = (List<PAlt>)nodeArrayList1.get(0);
+        PAlt paltNode2;
         paltNode2 = (PAlt)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8517,8 +8517,8 @@ public class Parser implements IParser
         List<PTerm> listNode3;
         {
         List<PTerm> listNode1;
-        PTerm ptermNode2;
         listNode1 = (List<PTerm>)nodeArrayList1.get(0);
+        PTerm ptermNode2;
         ptermNode2 = (PTerm)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8568,8 +8568,8 @@ public class Parser implements IParser
         List<PListTerm> listNode3;
         {
         List<PListTerm> listNode1;
-        PListTerm plisttermNode2;
         listNode1 = (List<PListTerm>)nodeArrayList1.get(0);
+        PListTerm plisttermNode2;
         plisttermNode2 = (PListTerm)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8619,8 +8619,8 @@ public class Parser implements IParser
         List<PTerm> listNode3;
         {
         List<PTerm> listNode1;
-        PTerm ptermNode2;
         listNode1 = (List<PTerm>)nodeArrayList1.get(0);
+        PTerm ptermNode2;
         ptermNode2 = (PTerm)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8670,8 +8670,8 @@ public class Parser implements IParser
         List<PAstProd> listNode3;
         {
         List<PAstProd> listNode1;
-        PAstProd pastprodNode2;
         listNode1 = (List<PAstProd>)nodeArrayList1.get(0);
+        PAstProd pastprodNode2;
         pastprodNode2 = (PAstProd)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
@@ -8721,8 +8721,8 @@ public class Parser implements IParser
         List<PAstAlt> listNode3;
         {
         List<PAstAlt> listNode1;
-        PAstAlt pastaltNode2;
         listNode1 = (List<PAstAlt>)nodeArrayList1.get(0);
+        PAstAlt pastaltNode2;
         pastaltNode2 = (PAstAlt)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;