summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/expr/Lexer.java
diff options
context:
space:
mode:
authorbjculkin <bjculkin@mix.wvu.edu>2017-04-11 17:51:13 -0400
committerbjculkin <bjculkin@mix.wvu.edu>2017-04-11 17:51:13 -0400
commit40858cee415643769ee5f6216b0cd4335996ff2f (patch)
tree86b1c334fa2e5b79cddc16984f5ad43c3c72e41f /dice-lang/src/bjc/dicelang/expr/Lexer.java
parent767ca1b248da19b754d42a814b71b43ef16090be (diff)
General cleanup and fixes
Diffstat (limited to 'dice-lang/src/bjc/dicelang/expr/Lexer.java')
-rw-r--r--dice-lang/src/bjc/dicelang/expr/Lexer.java23
1 files changed, 12 insertions, 11 deletions
diff --git a/dice-lang/src/bjc/dicelang/expr/Lexer.java b/dice-lang/src/bjc/dicelang/expr/Lexer.java
index 7c15884..3147463 100644
--- a/dice-lang/src/bjc/dicelang/expr/Lexer.java
+++ b/dice-lang/src/bjc/dicelang/expr/Lexer.java
@@ -3,7 +3,8 @@ package bjc.dicelang.expr;
import java.util.LinkedList;
import java.util.List;
-import bjc.utils.parserutils.splitter.SimpleTokenSplitter;
+import bjc.utils.funcdata.IList;
+import bjc.utils.parserutils.splitter.ConfigurableTokenSplitter;
/**
* Implements the lexer for simple expression operations.
@@ -12,18 +13,18 @@ import bjc.utils.parserutils.splitter.SimpleTokenSplitter;
*/
public class Lexer {
/*
- * Spliter we use
+ * Splitter we use.
*/
- private SimpleTokenSplitter split;
+ private ConfigurableTokenSplitter split;
/**
* Create a new expression lexer.
*/
public Lexer() {
- split = new SimpleTokenSplitter();
+ split = new ConfigurableTokenSplitter(true);
- split.addDelimiter("(", ")");
- split.addDelimiter("+", "-", "*", "/");
+ split.addSimpleDelimiters("(", ")");
+ split.addSimpleDelimiters("+", "-", "*", "/");
}
/**
@@ -31,8 +32,9 @@ public class Lexer {
*
* @param inp
* The input command.
+ *
* @param tks
- * The token state
+ * The token state.
*
* @return A series of infix tokens representing the command.
*/
@@ -42,11 +44,10 @@ public class Lexer {
List<Token> tokens = new LinkedList<>();
for(String spacedToken : spacedTokens) {
- String[] rawTokens = split.split(spacedToken);
+ IList<String> splitTokens = split.split(spacedToken);
+ IList<Token> rawTokens = splitTokens.map(tok -> tks.lexToken(tok, spacedToken));
- for(String tok : rawTokens) {
- tokens.add(tks.lexToken(tok, spacedToken));
- }
+ rawTokens.forEach(tokens::add);
}
return tokens.toArray(new Token[0]);