summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/parserutils/pratt/tokens/StringTokenStream.java
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2017-03-25 19:13:42 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2017-03-25 19:13:42 -0400
commit42990231fee502552b769b9af4c04ac0dcaeb195 (patch)
tree4dbe0ba0bc54fffafacc9ab12349efd76c52041c /BJC-Utils2/src/main/java/bjc/utils/parserutils/pratt/tokens/StringTokenStream.java
parent674d9769821775484fe6913b93c650189fbedfed (diff)
Update Pratt parser
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/parserutils/pratt/tokens/StringTokenStream.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/pratt/tokens/StringTokenStream.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/pratt/tokens/StringTokenStream.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/pratt/tokens/StringTokenStream.java
new file mode 100644
index 0000000..d7d4a66
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/pratt/tokens/StringTokenStream.java
@@ -0,0 +1,54 @@
+package bjc.utils.parserutils.pratt.tokens;
+
+import java.util.Iterator;
+
+import bjc.utils.parserutils.pratt.Token;
+import bjc.utils.parserutils.pratt.TokenStream;
+
+/**
+ * Simple implementation of token stream for strings.
+ *
+ * The terminal token here is represented by a token with type '(end)' and null
+ * value.
+ *
+ * @author EVE
+ *
+ */
+public class StringTokenStream extends TokenStream<String, String> {
+ private Iterator<Token<String, String>> iter;
+
+ private Token<String, String> curr;
+
+ /**
+ * Create a new token stream from a iterator.
+ *
+ * @param itr
+ * The iterator to use.
+ *
+ */
+ public StringTokenStream(Iterator<Token<String, String>> itr) {
+ iter = itr;
+
+ }
+
+ @Override
+ public Token<String, String> current() {
+ return curr;
+ }
+
+ @Override
+ public Token<String, String> next() {
+ if (iter.hasNext()) {
+ curr = iter.next();
+ } else {
+ curr = new StringToken("(end)", null);
+ }
+
+ return curr;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return iter.hasNext();
+ }
+}