summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/DiceLangEngine.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/DiceLangEngine.java
parent767ca1b248da19b754d42a814b71b43ef16090be (diff)
General cleanup and fixes
Diffstat (limited to 'dice-lang/src/bjc/dicelang/DiceLangEngine.java')
-rw-r--r--dice-lang/src/bjc/dicelang/DiceLangEngine.java48
1 files changed, 26 insertions, 22 deletions
diff --git a/dice-lang/src/bjc/dicelang/DiceLangEngine.java b/dice-lang/src/bjc/dicelang/DiceLangEngine.java
index dfd14d5..d37332d 100644
--- a/dice-lang/src/bjc/dicelang/DiceLangEngine.java
+++ b/dice-lang/src/bjc/dicelang/DiceLangEngine.java
@@ -9,7 +9,7 @@ import bjc.utils.funcdata.IList;
import bjc.utils.funcdata.IMap;
import bjc.utils.funcutils.ListUtils;
import bjc.utils.parserutils.TokenUtils;
-import bjc.utils.parserutils.splitter.SimpleTokenSplitter;
+import bjc.utils.parserutils.splitter.ConfigurableTokenSplitter;
import java.util.Deque;
import java.util.Iterator;
@@ -37,7 +37,7 @@ public class DiceLangEngine {
/*
* Split tokens around operators with regex
*/
- SimpleTokenSplitter opExpander;
+ ConfigurableTokenSplitter opExpander;
/*
* ID for generation.
@@ -81,6 +81,9 @@ public class DiceLangEngine {
/*
* Tables for various things.
*/
+ /**
+ * The symbol table.
+ */
public final IMap<Integer, String> symTable;
private IMap<Integer, String> stringLits;
@@ -102,6 +105,9 @@ public class DiceLangEngine {
*/
StreamEngine streamEng;
+ /**
+ * Create a new DiceLang engine.
+ */
public DiceLangEngine() {
/*
* Initialize defns.
@@ -111,7 +117,7 @@ public class DiceLangEngine {
defnsSorted = true;
/*
- * Init tables.
+ * Initialize tables.
*/
symTable = new FunctionalMap<>();
stringLits = new FunctionalMap<>();
@@ -120,22 +126,21 @@ public class DiceLangEngine {
/*
* Initialize operator expansion list.
*/
- opExpander = new SimpleTokenSplitter();
- opExpander.addMultiDelimiter("\\(");
- opExpander.addMultiDelimiter("\\)");
- opExpander.addMultiDelimiter("\\[");
- opExpander.addMultiDelimiter("\\]");
- opExpander.addMultiDelimiter("\\{");
- opExpander.addMultiDelimiter("\\}");
- opExpander.addDelimiter(":=");
- opExpander.addDelimiter("=>");
- opExpander.addDelimiter("//");
- opExpander.addDelimiter(".+.");
- opExpander.addDelimiter(".*.");
- opExpander.addDelimiter("+");
- opExpander.addDelimiter("-");
- opExpander.addDelimiter("*");
- opExpander.addDelimiter("/");
+ opExpander = new ConfigurableTokenSplitter(true);
+
+ opExpander.addMultiDelimiters("(", ")");
+ opExpander.addMultiDelimiters("[", "]");
+ opExpander.addMultiDelimiters("{", "}");
+
+ opExpander.addSimpleDelimiters(":=");
+ opExpander.addSimpleDelimiters("=>");
+ opExpander.addSimpleDelimiters("//");
+ opExpander.addSimpleDelimiters(".+.");
+ opExpander.addSimpleDelimiters(".*.");
+ opExpander.addSimpleDelimiters("+");
+ opExpander.addSimpleDelimiters("-");
+ opExpander.addSimpleDelimiters("*");
+ opExpander.addSimpleDelimiters("/");
opExpander.compile();
/*
@@ -513,8 +518,7 @@ public class DiceLangEngine {
/*
* Expand tokens
*/
- IList<String> fullyExpandedTokens = tokens
- .flatMap((token) -> new FunctionalList<>(opExpander.split(token)));
+ IList<String> fullyExpandedTokens = tokens.flatMap(opExpander::split);
System.out.println("\tCommand after token expansion: " + fullyExpandedTokens.toString());
/*
@@ -627,7 +631,7 @@ public class DiceLangEngine {
* Data storage.
*/
Deque<IList<Token>> bracedTokens = new LinkedList<>();
- IList<Token> curBracedTokens = null;
+ IList<Token> curBracedTokens = new FunctionalList<>();
for(Token tk : lexedTokens) {
if(tk.type == Token.Type.OBRACE && tk.intValue == 2) {