diff --git a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
index a2613bdb60eb04deb8716ac8fb1bddb2cabf6541..1c5390db620a1ba544f752e075d0a0bed0a7f09d 100644
--- a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
+++ b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
@@ -63,40 +63,41 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
   public void caseAElem(final AElem node) {
     popCount++;
   }
+  
+  private void generateVariableDeclaration(Node term) throws IOException {
+    String typeName;
+    if(simpleTermTransformMap.get(term) != null)
+    {
+      typeName = simpleTermTransformMap.get(term);
+    }
+    else
+    {
+      typeName = CG.getAltTransformElemTypes().get(term);
+    }
+    int position = CG.getTermNumbers().get(term);
+    
+    if(typeName.startsWith("L"))
+    {
+      macros.apply(file, "ParserListVariableDeclaration", new String[] {"" + position});
+    }
+    else if(typeName.equals("null"))
+    {
+      // No intermediate variable needed for null arguments
+    }
+    else
+    {
+      macros.apply(file, "ParserSimpleVariableDeclaration", new String[] {typeName, typeName.toLowerCase(), "" + position});
+    }
+  }
 
   @Override
   public void inAAltTransform(AAltTransform node)
   {
-    String type_name;
-    int position;
-
     for(PTerm term : node.getTerms())
     {
-      if(simpleTermTransformMap.get(term) != null)
-      {
-        type_name = simpleTermTransformMap.get(term);
-      }
-      else
-      {
-        type_name = CG.getAltTransformElemTypes().get(term);
-      }
-
-      position = CG.getTermNumbers().get(term);
-
       try
       {
-        if(type_name.startsWith("L"))
-        {
-          macros.apply(file, "ParserListVariableDeclaration", new String[] {"" + position});
-        }
-        else if(type_name.equals("null"))
-        {
-          // No intermediate variable needed for null arguments
-        }
-        else
-        {
-          macros.apply(file, "ParserSimpleVariableDeclaration", new String[] {type_name, type_name.toLowerCase(), "" + position});
-        }
+        generateVariableDeclaration(term);
       }
       catch(IOException e)
       {
@@ -157,35 +158,11 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
 
   public void inAParams(List<PTerm> list_param)
   {
-    String type_name;
-    int position;
-
     for(PTerm term : list_param)
     {
-      if(simpleTermTransformMap.get(term) != null)
-      {
-        type_name = simpleTermTransformMap.get(term);
-      }
-      else
-      {
-        type_name = CG.getAltTransformElemTypes().get(term);
-      }
-      position = CG.getTermNumbers().get(term);
-
       try
       {
-        if(type_name.startsWith("L"))
-        {
-          macros.apply(file, "ParserListVariableDeclaration", new String[] {"" + position});
-        }
-        else if(type_name.equals("null"))
-        {
-          // No intermediate variable needed for null arguments
-        }
-        else
-        {
-          macros.apply(file, "ParserSimpleVariableDeclaration", new String[] {type_name, type_name.toLowerCase(), "" + position});
-        }
+        generateVariableDeclaration(term);
       }
       catch(IOException e)
       {
@@ -380,31 +357,9 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     try
     {
       macros.apply(file, "ParserBraceOpening");
-      for(PListTerm listTerm : node.getListTerms())
+      for(Node term : node.getListTerms())
       {
-        String type_name;
-        if(simpleTermTransformMap.get(listTerm) != null)
-        {
-          type_name = simpleTermTransformMap.get(listTerm);
-        }
-        else
-        {
-          type_name = CG.getAltTransformElemTypes().get(listTerm);
-        }
-        int position = CG.getTermNumbers().get(listTerm);
-
-        if(type_name.startsWith("L"))
-        {
-          macros.apply(file, "ParserListVariableDeclaration", new String[] {"" + position});
-        }
-        else if(type_name.equals("null"))
-        {
-          // No intermediate variable needed for null arguments
-        }
-        else
-        {
-          macros.apply(file, "ParserSimpleVariableDeclaration", new String[] {type_name, type_name.toLowerCase(), "" + position});
-        }
+        generateVariableDeclaration(term);
       }
     }
     catch(IOException e)