diff --git a/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java b/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java index 778421d712db550a73d025a71c10d2a447cde2bb..eb66ba56f3abf71031549293475e10cb5a489aa1 100644 --- a/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java +++ b/src/main/java/org/sablecc/sablecc/InternalTransformationsToGrammar.java @@ -110,6 +110,8 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter LinkedList listOfAlternativeElemsWHaveName; + private final Map<AElem, Integer> elemOperators = new HashMap<>(); + @Override public void caseAAlt(AAlt node) { @@ -125,27 +127,27 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter @Override public void inAElem(AElem node) { - InternalTransformationsToGrammar.this.setOut(node, NONE); + InternalTransformationsToGrammar.this.elemOperators.put(node, NONE); } @Override public void caseAStarUnOp(AStarUnOp node) { count *= 2; - InternalTransformationsToGrammar.this.setOut(node.parent(), STAR); + InternalTransformationsToGrammar.this.elemOperators.put((AElem)node.parent(), STAR); } @Override public void caseAQMarkUnOp(AQMarkUnOp node) { count *= 2; - InternalTransformationsToGrammar.this.setOut(node.parent(), QMARK); + InternalTransformationsToGrammar.this.elemOperators.put((AElem)node.parent(), QMARK); } @Override public void caseAPlusUnOp(APlusUnOp node) { - InternalTransformationsToGrammar.this.setOut(node.parent(), PLUS); + InternalTransformationsToGrammar.this.elemOperators.put((AElem)node.parent(), PLUS); } } ); @@ -275,7 +277,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter { if(!processingAst) { - int op = ((Integer) getOut(node)).intValue(); + int op = this.elemOperators.get(node); String name = ids.elemTypes.get(node); String numero = (countElementNecessary == true ? ""+(count+1) : "" ); String qMarkOrPlusElemType;