From a1a38173d5417da1728eed75e72d6e8f34b36654 Mon Sep 17 00:00:00 2001 From: dgelessus <dgelessus@users.noreply.github.com> Date: Fri, 21 Jul 2023 13:28:44 +0200 Subject: [PATCH] Combine two halves of New and list term code generation --- .../GenerateAlternativeCodeForParser.java | 63 ++++++------------- 1 file changed, 19 insertions(+), 44 deletions(-) diff --git a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java index 190c343..eb6de91 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()); } -- GitLab