From 4aa1448ebc6a76a35bb089397cc8541a324682fa Mon Sep 17 00:00:00 2001 From: dgelessus <dgelessus@users.noreply.github.com> Date: Wed, 6 Apr 2022 17:28:25 +0200 Subject: [PATCH] Use generics in LR0Item and related classes --- .../java/org/sablecc/sablecc/LR0Item.java | 6 +-- .../java/org/sablecc/sablecc/LR0ItemSet.java | 46 ++++------------- .../java/org/sablecc/sablecc/LR1Item.java | 6 +-- .../java/org/sablecc/sablecc/LR1ItemSet.java | 51 +++++-------------- 4 files changed, 27 insertions(+), 82 deletions(-) diff --git a/src/main/java/org/sablecc/sablecc/LR0Item.java b/src/main/java/org/sablecc/sablecc/LR0Item.java index 16d87c9..104702e 100644 --- a/src/main/java/org/sablecc/sablecc/LR0Item.java +++ b/src/main/java/org/sablecc/sablecc/LR0Item.java @@ -9,7 +9,7 @@ package org.sablecc.sablecc; import java.util.*; -final class LR0Item implements Cloneable, Comparable +final class LR0Item implements Cloneable, Comparable<LR0Item> { final int production; final int position; @@ -21,10 +21,8 @@ final class LR0Item implements Cloneable, Comparable } @Override - public int compareTo(Object object) + public int compareTo(LR0Item item) { - LR0Item item = (LR0Item) object; - int result = production - item.production; if(result == 0) diff --git a/src/main/java/org/sablecc/sablecc/LR0ItemSet.java b/src/main/java/org/sablecc/sablecc/LR0ItemSet.java index 56fc438..a58b1a9 100644 --- a/src/main/java/org/sablecc/sablecc/LR0ItemSet.java +++ b/src/main/java/org/sablecc/sablecc/LR0ItemSet.java @@ -9,22 +9,20 @@ package org.sablecc.sablecc; import java.util.*; -import java.util.Vector; - -final class LR0ItemSet implements Cloneable, Comparable +final class LR0ItemSet implements Cloneable, Comparable<LR0ItemSet> { - private final TreeMap items; + private final TreeMap<LR0Item, LR0Item> items; private int hashCode; LR0ItemSet() { - items = new TreeMap(); + items = new TreeMap<>(); } private LR0ItemSet(LR0ItemSet set ) { - items = (TreeMap) set.items.clone(); + items = new TreeMap<>(set.items); } void set @@ -48,15 +46,7 @@ final class LR0ItemSet implements Cloneable, Comparable private void computeArray() { - Vector itemVector = new Vector(0); - - for(Iterator e = items.keySet().iterator(); e.hasNext();) - { - itemVector.addElement(e.next()); - } - - items_ = new LR0Item[itemVector.size()]; - itemVector.copyInto(items_); + items_ = items.keySet().toArray(new LR0Item[0]); modified_ = false; } @@ -125,20 +115,7 @@ final class LR0ItemSet implements Cloneable, Comparable LR0ItemSet set = (LR0ItemSet) obj; - if(set.items.size() != items.size()) - { - return false; - } - - for(Iterator e = items.keySet().iterator(); e.hasNext();) - { - if(!set.get((LR0Item) e.next())) - { - return false; - } - } - - return true; + return items.keySet().equals(set.items.keySet()); } @Override @@ -148,21 +125,18 @@ final class LR0ItemSet implements Cloneable, Comparable } @Override - public int compareTo(Object object) + public int compareTo(LR0ItemSet set) { - LR0ItemSet set - = (LR0ItemSet) object; - int result = items.size() - set.items.size(); if(result == 0) { - Iterator e = items.keySet().iterator(); - Iterator f = set.items.keySet().iterator(); + Iterator<LR0Item> e = items.keySet().iterator(); + Iterator<LR0Item> f = set.items.keySet().iterator(); while(e.hasNext() && f.hasNext() && (result == 0)) { - result = ((LR0Item) e.next()).compareTo(f.next()); + result = e.next().compareTo(f.next()); } if(result == 0) diff --git a/src/main/java/org/sablecc/sablecc/LR1Item.java b/src/main/java/org/sablecc/sablecc/LR1Item.java index a3471f0..0936d08 100644 --- a/src/main/java/org/sablecc/sablecc/LR1Item.java +++ b/src/main/java/org/sablecc/sablecc/LR1Item.java @@ -9,7 +9,7 @@ package org.sablecc.sablecc; import java.util.*; -final class LR1Item implements Cloneable, Comparable +final class LR1Item implements Cloneable, Comparable<LR1Item> { final LR0Item lr0Item; final int terminal; @@ -88,10 +88,8 @@ final class LR1Item implements Cloneable, Comparable } @Override - public int compareTo(Object object) + public int compareTo(LR1Item item) { - LR1Item item = (LR1Item) object; - int result = lr0Item.compareTo(item.lr0Item); if(result == 0) diff --git a/src/main/java/org/sablecc/sablecc/LR1ItemSet.java b/src/main/java/org/sablecc/sablecc/LR1ItemSet.java index 983c7cb..ca95963 100644 --- a/src/main/java/org/sablecc/sablecc/LR1ItemSet.java +++ b/src/main/java/org/sablecc/sablecc/LR1ItemSet.java @@ -8,22 +8,21 @@ package org.sablecc.sablecc; import java.util.*; -import java.util.Vector; -final class LR1ItemSet implements Cloneable, Comparable +final class LR1ItemSet implements Cloneable, Comparable<LR1ItemSet> { - private final TreeMap items; + private final TreeMap<LR1Item, LR1Item> items; private int hashCode = 0; LR1ItemSet() { - this.items = new TreeMap(); + this.items = new TreeMap<>(); } private LR1ItemSet(LR1ItemSet set ) { - this.items = (TreeMap) set.items.clone(); + this.items = new TreeMap<>(set.items); this.hashCode = set.hashCode; } @@ -48,15 +47,7 @@ final class LR1ItemSet implements Cloneable, Comparable private void computeArray() { - Vector itemVector = new Vector(0); - - for(Iterator e = items.keySet().iterator(); e.hasNext();) - { - itemVector.addElement(e.next()); - } - - items_ = new LR1Item[itemVector.size()]; - itemVector.copyInto(items_); + items_ = items.keySet().toArray(new LR1Item[0]); modified_ = false; } @@ -121,7 +112,7 @@ final class LR1ItemSet implements Cloneable, Comparable LR1Item[] items = items(); int length = items.length; - TreeSet strings = new TreeSet(); + Set<String> strings = new TreeSet<>(); for(int i = 0; i < length; i++) { @@ -138,7 +129,7 @@ final class LR1ItemSet implements Cloneable, Comparable result.append("{"); boolean colon = false; - for(Iterator i = strings.iterator(); i.hasNext(); ) + for(String s : strings) { if(colon) { @@ -152,7 +143,7 @@ final class LR1ItemSet implements Cloneable, Comparable } result.append("\t"); - result.append(i.next()); + result.append(s); } result.append(nl); @@ -179,20 +170,7 @@ final class LR1ItemSet implements Cloneable, Comparable LR1ItemSet set = (LR1ItemSet) obj; - if(set.items.size() != items.size()) - { - return false; - } - - for(Iterator e = items.keySet().iterator(); e.hasNext();) - { - if(!set.get((LR1Item) e.next())) - { - return false; - } - } - - return true; + return items.keySet().equals(set.items.keySet()); } @Override @@ -202,21 +180,18 @@ final class LR1ItemSet implements Cloneable, Comparable } @Override - public int compareTo(Object object) + public int compareTo(LR1ItemSet set) { - LR1ItemSet set - = (LR1ItemSet) object; - int result = items.size() - set.items.size(); if(result == 0) { - Iterator e = items.keySet().iterator(); - Iterator f = set.items.keySet().iterator(); + Iterator<LR1Item> e = items.keySet().iterator(); + Iterator<LR1Item> f = set.items.keySet().iterator(); while(e.hasNext() && f.hasNext() && (result == 0)) { - result = ((LR1Item) e.next()).compareTo(f.next()); + result = e.next().compareTo(f.next()); } if(result == 0) -- GitLab