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)