diff --git a/src/main/java/org/sablecc/sablecc/ComputeInlining.java b/src/main/java/org/sablecc/sablecc/ComputeInlining.java index 6b1c880b10d2767d71e1e9c6d9bf42c1f225f6f2..8a2e01e52e08cd1f2a0c4618e8f4b4326d6de883 100644 --- a/src/main/java/org/sablecc/sablecc/ComputeInlining.java +++ b/src/main/java/org/sablecc/sablecc/ComputeInlining.java @@ -28,14 +28,13 @@ import org.sablecc.sablecc.node.*; public class ComputeInlining { //Productions implied in a conflict - private Set setOfProdToBeInline; + private Set<String> setOfProdToBeInline; //Map of all productions in the grammar private Map<String, AProd> productionsMap; private Start tree; - public ComputeInlining(Set set - , + public ComputeInlining(Set<String> set, Map<String, AProd> productionsMap, Start tree) { @@ -55,11 +54,9 @@ public class ComputeInlining public boolean computeInlining() { final BooleanEx atLeastOneProductionInlined = new BooleanEx(false); - String []nameOfProds = (String[])setOfProdToBeInline.toArray(new String[0]); - - for(int i=0; i<nameOfProds.length; i++) + for(String nameOfProd : setOfProdToBeInline) { - final AProd prod = productionsMap.get(nameOfProds[i]); + final AProd prod = productionsMap.get(nameOfProd); //We proceed inlining only if the production to inline is not recursive //and if it doesn't have more than SableCC.inliningMaxAlts alternatives. @@ -92,13 +89,12 @@ public class ComputeInlining } } - LinkedList listOfGrammarProds = ((AProductions)((AGrammar)tree.getPGrammar()).getProductions()).getProds(); + List<PProd> listOfGrammarProds = ((AProductions)((AGrammar)tree.getPGrammar()).getProductions()).getProds(); //Once the production is inlined, we do not need it anymore, so we remove it from the grammar. - String[] inlinedProductionsToRemove = (String[])Inlining.productionsToBeRemoved.toArray(new String[0]); - for(int i=0; i<inlinedProductionsToRemove.length; i++) + for(String nameOfProd : Inlining.productionsToBeRemoved) { - listOfGrammarProds.remove(productionsMap.get(inlinedProductionsToRemove[i]) ); + listOfGrammarProds.remove(productionsMap.get(nameOfProd) ); } Inlining.productionsToBeRemoved.clear(); diff --git a/src/main/java/org/sablecc/sablecc/ConflictException.java b/src/main/java/org/sablecc/sablecc/ConflictException.java index ab0e29263294c55a3888eb112a1e93a1efdb29ba..8120a9aac34f4f9b5e6f61fec19b0676f0abefb1 100644 --- a/src/main/java/org/sablecc/sablecc/ConflictException.java +++ b/src/main/java/org/sablecc/sablecc/ConflictException.java @@ -13,15 +13,15 @@ import java.util.Set; @SuppressWarnings("serial") public class ConflictException extends Exception { - private Set conflictualProductions; + private Set<String> conflictualProductions; - public ConflictException(Set conflictualProductions, String message) + public ConflictException(Set<String> conflictualProductions, String message) { super(message); this.conflictualProductions = conflictualProductions; } - public Set getConflictualProductions() + public Set<String> getConflictualProductions() { return conflictualProductions; } diff --git a/src/main/java/org/sablecc/sablecc/Grammar.java b/src/main/java/org/sablecc/sablecc/Grammar.java index 720185603091c27d111acc1ba334048f1d6a829f..625014142d553dcd45e2843e06e64962a2ed9963 100644 --- a/src/main/java/org/sablecc/sablecc/Grammar.java +++ b/src/main/java/org/sablecc/sablecc/Grammar.java @@ -12,8 +12,8 @@ import java.util.*; public final class Grammar { - private static TreeMap fastLr0Closure = new TreeMap(); - private static TreeMap fastLr1Closure = new TreeMap(); + private static Map<LR0Item, LR0ItemSet> fastLr0Closure = new TreeMap<>(); + private static Map<LR1Item, LR1ItemSet> fastLr1Closure = new TreeMap<>(); static int startSymbol; static int startProduction; @@ -61,8 +61,8 @@ public final class Grammar public static void reinit() { - fastLr0Closure = new TreeMap(); - fastLr1Closure = new TreeMap(); + fastLr0Closure = new TreeMap<>(); + fastLr1Closure = new TreeMap<>(); startSymbol = 0; startProduction = -1; eof = -1; @@ -99,7 +99,7 @@ public final class Grammar action_ = new int[sets.length][terminals.length - 1][]; goto_ = new int[sets.length][nonterminals.length - 1]; - Set listOfConflictualProds = new HashSet(); + Set<String> listOfConflictualProds = new HashSet<>(); StringBuffer conflictMessage = new StringBuffer(); for(int i = 0; i < sets.length; i++) @@ -452,7 +452,7 @@ public final class Grammar static LR0ItemSet CLOSURE(LR0Item item) { - LR0ItemSet result = (LR0ItemSet) fastLr0Closure.get(item); + LR0ItemSet result = fastLr0Closure.get(item); if(result != null) { @@ -541,7 +541,7 @@ public final class Grammar static LR1ItemSet CLOSURE(LR1Item item) { - LR1ItemSet result = (LR1ItemSet) fastLr1Closure.get(item); + LR1ItemSet result = fastLr1Closure.get(item); if(result != null) { @@ -569,7 +569,7 @@ public final class Grammar if(!symbol.terminal) { - Vector tailVector = new Vector(0); + Vector<Symbol> tailVector = new Vector<>(0); for(int k = items[i].lr0Item.position + 1; k < rightside.length; k++) { diff --git a/src/main/java/org/sablecc/sablecc/Inlining.java b/src/main/java/org/sablecc/sablecc/Inlining.java index 906808e0d92746585d585c1b868a5bcedbbcd2eb..a1686f6d4c63d9118318e2716944215f8071b2aa 100644 --- a/src/main/java/org/sablecc/sablecc/Inlining.java +++ b/src/main/java/org/sablecc/sablecc/Inlining.java @@ -22,8 +22,7 @@ import org.sablecc.sablecc.node.*; public class Inlining { - public static HashSet productionsToBeRemoved = - new HashSet(); + public static Set<String> productionsToBeRemoved = new HashSet<>(); private AProd current_production;