From 6ffadb8a454dbba4d2eee1f6f58d26ab82cddea2 Mon Sep 17 00:00:00 2001 From: dgelessus <dgelessus@users.noreply.github.com> Date: Thu, 20 Jul 2023 20:38:49 +0200 Subject: [PATCH] Refactor generating variable declarations in alternative codegen --- .../GenerateAlternativeCodeForParser.java | 105 +++++------------- 1 file changed, 30 insertions(+), 75 deletions(-) diff --git a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java index a2613bd..1c5390d 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) -- GitLab