diff --git a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java index 190c343a82cc3fbc5b015c1df1fbb070b1b91b51..eb6de911ccf217873f06d349b749e3a83db9a667 100644 --- a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java +++ b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java @@ -181,23 +181,6 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter } } - private void generateNewTermDeclarations(List<PTerm> params) - { - try - { - macros.apply(file, "ParserBraceOpening"); - for(PTerm term : params) - { - generateVariableDeclaration(term); - } - } - catch(IOException e) - { - throw new RuntimeException("An error occured while writing to " + - new File(pkgDir, "Parser.java").getAbsolutePath(), e); - } - } - private void generateSimpleTerm(Node node, TId id, TId simpleTermTail) { try @@ -267,19 +250,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter } @Override - public void inANewTerm(ANewTerm node) - { - generateNewTermDeclarations(node.getParams()); - } - - @Override - public void inANewListTerm(ANewListTerm node) - { - generateNewTermDeclarations(node.getParams()); - } - - @Override - public void inAListTerm(AListTerm node) + public void caseAListTerm(AListTerm node) { try { @@ -288,19 +259,12 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter { generateVariableDeclaration(term); } - } - catch(IOException e) - { - throw new RuntimeException("An error occured while writing to " + - new File(pkgDir, "Parser.java").getAbsolutePath(), e); - } - } - @Override - public void outAListTerm(AListTerm node) - { - try - { + for(PListTerm listTerm : node.getListTerms()) + { + listTerm.apply(this); + } + for(PListTerm listTerm : node.getListTerms()) { String type_name = lookupInternalTypeName(listTerm); @@ -332,6 +296,17 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter try { + macros.apply(file, "ParserBraceOpening"); + for(PTerm term : params) + { + generateVariableDeclaration(term); + } + + for(PTerm param : params) + { + param.apply(this); + } + macros.apply(file, "ParserNewBodyNew", new String[] {getVariableName(node), newAltName}); if(!params.isEmpty()) @@ -356,13 +331,13 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter } @Override - public void outANewTerm(ANewTerm node) + public void caseANewTerm(ANewTerm node) { generateNewTerm(node, (AProdName)node.getProdName(), node.getParams()); } @Override - public void outANewListTerm(ANewListTerm node) + public void caseANewListTerm(ANewListTerm node) { generateNewTerm(node, (AProdName)node.getProdName(), node.getParams()); }