summaryrefslogtreecommitdiff
path: root/Homework/cs5300/project-three/parser/util/SymbolComparator.java
diff options
context:
space:
mode:
Diffstat (limited to 'Homework/cs5300/project-three/parser/util/SymbolComparator.java')
-rw-r--r--Homework/cs5300/project-three/parser/util/SymbolComparator.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/Homework/cs5300/project-three/parser/util/SymbolComparator.java b/Homework/cs5300/project-three/parser/util/SymbolComparator.java
new file mode 100644
index 0000000..e131c79
--- /dev/null
+++ b/Homework/cs5300/project-three/parser/util/SymbolComparator.java
@@ -0,0 +1,38 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package parser.util;
+
+import java.util.Comparator;
+import java.util.HashSet;
+
+/**
+ *
+ * @author edwajohn
+ */
+public class SymbolComparator implements Comparator<String> {
+
+ private final HashSet<String> terminals;
+
+ public SymbolComparator(HashSet<String> terminals) {
+ this.terminals = terminals;
+ }
+
+ @Override
+ public int compare(String o1, String o2) {
+ // Slightly less efficient code for clarity.
+ if (terminals.contains(o1) && terminals.contains(o2)) {
+ return o1.compareTo(o2);
+ }
+ if (terminals.contains(o1)) {
+ return 1;
+ }
+ if (terminals.contains(o2)) {
+ return -1;
+ }
+ return o1.compareTo(o2);
+ }
+
+}