summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/scl
diff options
context:
space:
mode:
authorEVE <EVE@EVE-PC>2017-03-14 12:08:11 -0400
committerEVE <EVE@EVE-PC>2017-03-14 12:08:11 -0400
commit635d3150e3e85c01b777ff165e21fa8965d58440 (patch)
tree3389128f83a5a79f8d0eec0a0e19f54b9d117b66 /dice-lang/src/bjc/dicelang/scl
parente59e2a97773f93bdd25bd4680809c10699f0feb3 (diff)
Cleanup
Diffstat (limited to 'dice-lang/src/bjc/dicelang/scl')
-rw-r--r--dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java118
-rw-r--r--dice-lang/src/bjc/dicelang/scl/StreamEngine.java64
2 files changed, 77 insertions, 105 deletions
diff --git a/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java b/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java
index 8d63be2..0da5364 100644
--- a/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java
+++ b/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java
@@ -1,11 +1,10 @@
package bjc.dicelang.scl;
import bjc.dicelang.Errors;
-
-import bjc.utils.esodata.Stack;
import bjc.utils.esodata.SimpleStack;
-import bjc.utils.funcdata.IList;
+import bjc.utils.esodata.Stack;
import bjc.utils.funcdata.FunctionalList;
+import bjc.utils.funcdata.IList;
import bjc.utils.funcutils.StringUtils;
import java.util.HashMap;
@@ -126,28 +125,28 @@ public class StreamControlEngine {
}
public static Token tokenizeString(String token) {
- if (litTokens.containsKey(token)) {
+ if(litTokens.containsKey(token))
return new Token(litTokens.get(token));
- } else if (token.startsWith("\\")) {
+ else if(token.startsWith("\\"))
return new Token(SYMBOL, token.substring(1));
- } else if (builtinWords.containsKey(token)) {
+ else if(builtinWords.containsKey(token))
return new Token(WORD, builtinWords.get(token));
- } else if (token.equals("true")) {
+ else if(token.equals("true"))
return new Token(BLIT, true);
- } else if (token.equals("false")) {
+ else if(token.equals("false"))
return new Token(BLIT, false);
- } else if (StringUtils.isInt(token)) {
+ else if(StringUtils.isInt(token))
return new Token(ILIT, Long.parseLong(token));
- } else if (StringUtils.isDouble(token)) {
+ else if(StringUtils.isDouble(token))
return new Token(FLIT, Double.parseDouble(token));
- } else {
+ else {
Errors.inst.printError(EK_SCL_INVTOKEN, token);
return null;
}
}
- private static final Map<String, Token.Type> litTokens;
- private static final Map<String, Token.Type> builtinWords;
+ private static final Map<String, Token.Type> litTokens;
+ private static final Map<String, Token.Type> builtinWords;
static {
litTokens = new HashMap<>();
@@ -198,29 +197,24 @@ public class StreamControlEngine {
* @return Whether the program executed succesfully
*/
public boolean runProgram(String[] tokens) {
- for (int i = 0; i < tokens.length; i++) {
+ for(int i = 0; i < tokens.length; i++) {
String token = tokens[i];
Token tok = Token.tokenizeString(token);
- if (tok == null) {
- return false;
- }
+ if(tok == null) return false;
- switch (tok.type) {
+ switch(tok.type) {
case SQUOTE:
i = handleSingleQuote(i, tokens);
- if (i == -1)
- return false;
+ if(i == -1) return false;
break;
case OBRACKET:
i = handleDelim(i, tokens, "]");
- if (i == -1)
- return false;
+ if(i == -1) return false;
break;
case OBRACE:
i = handleDelim(i, tokens, "}");
- if (i == -1)
- return false;
+ if(i == -1) return false;
Token brak = curStack.pop();
curStack.push(new Token(ARRAY, brak.tokenVals));
break;
@@ -239,44 +233,37 @@ public class StreamControlEngine {
private boolean handleWord(Token tk) {
boolean succ = true;
- switch (tk.tokenVal.type) {
+ switch(tk.tokenVal.type) {
case NEWSTREAM:
eng.newStream();
break;
case LEFTSTREAM:
succ = eng.leftStream();
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case RIGHTSTREAM:
succ = eng.rightStream();
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case DELETESTREAM:
succ = eng.deleteStream();
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case MERGESTREAM:
succ = eng.mergeStream();
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case MAKEARRAY:
succ = makeArray();
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case MAKEEXEC:
succ = toggleExec(true);
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case MAKEUNEXEC:
succ = toggleExec(false);
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case STACKCOUNT:
curStack.push(new Token(ILIT, curStack.size()));
@@ -285,7 +272,7 @@ public class StreamControlEngine {
curStack.push(new Token(BLIT, curStack.empty()));
break;
case DROP:
- if (curStack.size() == 0) {
+ if(curStack.size() == 0) {
Errors.inst.printError(EK_SCL_SUNDERFLOW, tk.tokenVal.type.toString());
return false;
}
@@ -293,11 +280,10 @@ public class StreamControlEngine {
break;
case NDROP:
succ = handleNDrop();
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case NIP:
- if (curStack.size() < 2) {
+ if(curStack.size() < 2) {
Errors.inst.printError(EK_SCL_SUNDERFLOW, tk.tokenVal.type.toString());
return false;
}
@@ -306,8 +292,7 @@ public class StreamControlEngine {
break;
case NNIP:
succ = handleNNip();
- if (!succ)
- return false;
+ if(!succ) return false;
break;
default:
Errors.inst.printError(EK_SCL_UNWORD, tk.tokenVal.type.toString());
@@ -320,14 +305,14 @@ public class StreamControlEngine {
private boolean handleNNip() {
Token num = curStack.pop();
- if (num.type != ILIT) {
+ if(num.type != ILIT) {
Errors.inst.printError(EK_SCL_INVARG, num.type.toString());
return false;
}
int n = (int) num.intVal;
- if (curStack.size() < n) {
+ if(curStack.size() < n) {
Errors.inst.printError(EK_SCL_SUNDERFLOW, NNIP.toString());
return false;
}
@@ -339,14 +324,14 @@ public class StreamControlEngine {
private boolean handleNDrop() {
Token num = curStack.pop();
- if (num.type != ILIT) {
+ if(num.type != ILIT) {
Errors.inst.printError(EK_SCL_INVARG, num.type.toString());
return false;
}
int n = (int) num.intVal;
- if (curStack.size() < n) {
+ if(curStack.size() < n) {
Errors.inst.printError(EK_SCL_SUNDERFLOW, NDROP.toString());
return false;
}
@@ -358,15 +343,15 @@ public class StreamControlEngine {
private boolean toggleExec(boolean exec) {
Token top = curStack.top();
- if (exec) {
- if (top.type != ARRAY) {
+ if(exec) {
+ if(top.type != ARRAY) {
Errors.inst.printError(EK_SCL_INVARG, top.toString());
return false;
}
top.type = WORDS;
} else {
- if (top.type != WORDS) {
+ if(top.type != WORDS) {
Errors.inst.printError(EK_SCL_INVARG, top.toString());
return false;
}
@@ -380,13 +365,13 @@ public class StreamControlEngine {
private boolean makeArray() {
Token num = curStack.pop();
- if (num.type != ILIT) {
+ if(num.type != ILIT) {
Errors.inst.printError(EK_SCL_INVARG, num.type.toString());
}
IList<Token> arr = new FunctionalList<>();
- for (int i = 0; i < num.intVal; i++) {
+ for(int i = 0; i < num.intVal; i++) {
arr.add(curStack.pop());
}
@@ -399,32 +384,29 @@ public class StreamControlEngine {
IList<Token> toks = new FunctionalList<>();
int n = i + 1;
- if (n >= tokens.length) {
+ if(n >= tokens.length) {
Errors.inst.printError(EK_SCL_MMQUOTE);
return -1;
}
String tok = tokens[n];
- while (!tok.equals(delim)) {
+ while(!tok.equals(delim)) {
Token ntok = Token.tokenizeString(tok);
- switch (ntok.type) {
+ switch(ntok.type) {
case SQUOTE:
n = handleSingleQuote(n, tokens);
- if (n == -1)
- return -1;
+ if(n == -1) return -1;
toks.add(curStack.pop());
break;
case OBRACKET:
n = handleDelim(n, tokens, "]");
- if (n == -1)
- return -1;
+ if(n == -1) return -1;
toks.add(curStack.pop());
break;
case OBRACE:
i = handleDelim(i, tokens, "}");
- if (i == -1)
- return -1;
+ if(i == -1) return -1;
Token brak = curStack.pop();
toks.add(new Token(ARRAY, brak.tokenVals));
break;
@@ -435,7 +417,7 @@ public class StreamControlEngine {
* Move to the next token
*/
n += 1;
- if (n >= tokens.length) {
+ if(n >= tokens.length) {
Errors.inst.printError(EK_SCL_MMQUOTE);
return -1;
}
@@ -456,14 +438,14 @@ public class StreamControlEngine {
StringBuilder sb = new StringBuilder();
int n = i + 1;
- if (n >= tokens.length) {
+ if(n >= tokens.length) {
Errors.inst.printError(EK_SCL_MMQUOTE);
return -1;
}
String tok = tokens[n];
- while (!tok.equals("'")) {
- if (tok.matches("\\\\+'")) {
+ while(!tok.equals("'")) {
+ if(tok.matches("\\\\+'")) {
/*
* Handle escaped quotes.
*/
@@ -476,7 +458,7 @@ public class StreamControlEngine {
* Move to the next token
*/
n += 1;
- if (n >= tokens.length) {
+ if(n >= tokens.length) {
Errors.inst.printError(EK_SCL_MMQUOTE);
return -1;
}
diff --git a/dice-lang/src/bjc/dicelang/scl/StreamEngine.java b/dice-lang/src/bjc/dicelang/scl/StreamEngine.java
index 9bcad9b..f8d6e09 100644
--- a/dice-lang/src/bjc/dicelang/scl/StreamEngine.java
+++ b/dice-lang/src/bjc/dicelang/scl/StreamEngine.java
@@ -2,16 +2,16 @@ package bjc.dicelang.scl;
import bjc.dicelang.DiceLangEngine;
import bjc.dicelang.Errors;
-
+import bjc.utils.esodata.SingleTape;
+import bjc.utils.esodata.Tape;
+import bjc.utils.esodata.TapeLibrary;
import bjc.utils.funcdata.FunctionalList;
import bjc.utils.funcdata.IList;
import bjc.utils.funcutils.ListUtils;
-import static bjc.dicelang.Errors.ErrorKey.*;
-
-import bjc.utils.esodata.SingleTape;
-import bjc.utils.esodata.Tape;
-import bjc.utils.esodata.TapeLibrary;
+import static bjc.dicelang.Errors.ErrorKey.EK_STRM_INVCOM;
+import static bjc.dicelang.Errors.ErrorKey.EK_STRM_LAST;
+import static bjc.dicelang.Errors.ErrorKey.EK_STRM_NONEX;
/**
* Implements multiple interleaved parse streams, as well as a command language
@@ -31,8 +31,8 @@ public class StreamEngine {
/*
* Our streams.
*/
- Tape<IList<String>> streams;
- IList<String> currStream;
+ Tape<IList<String>> streams;
+ IList<String> currStream;
/*
* Saved streams
@@ -94,23 +94,18 @@ public class StreamEngine {
/*
* Process each token.
*/
- for (String tk : toks) {
+ for(String tk : toks) {
/*
* Process stream commands.
*/
- if (tk.startsWith("{@S") && !quoteMode) {
- if (tk.equals("{@SQ}")) {
+ if(tk.startsWith("{@S") && !quoteMode) {
+ if(tk.equals("{@SQ}")) {
quoteMode = true;
- } else if (!processCommand(tk)) {
- return false;
- }
- /*
- * Command ran correctly, continue
- */
+ } else if(!processCommand(tk)) return false;
} else {
- if (tk.equals("{@SU}")) {
+ if(tk.equals("{@SU}")) {
quoteMode = false;
- } else if (tk.startsWith("\\") && tk.endsWith("{@SU}")) {
+ } else if(tk.startsWith("\\") && tk.endsWith("{@SU}")) {
currStream.add(tk.substring(1));
} else {
currStream.add(tk);
@@ -118,7 +113,7 @@ public class StreamEngine {
}
}
- for (String tk : currStream) {
+ for(String tk : currStream) {
dest.add(tk);
}
@@ -130,7 +125,7 @@ public class StreamEngine {
}
public boolean rightStream() {
- if (!streams.right()) {
+ if(!streams.right()) {
Errors.inst.printError(EK_STRM_NONEX);
return false;
}
@@ -140,7 +135,7 @@ public class StreamEngine {
}
public boolean leftStream() {
- if (!streams.left()) {
+ if(!streams.left()) {
Errors.inst.printError(EK_STRM_NONEX);
return false;
}
@@ -150,7 +145,7 @@ public class StreamEngine {
}
public boolean deleteStream() {
- if (streams.size() == 1) {
+ if(streams.size() == 1) {
Errors.inst.printError(EK_STRM_LAST);
return false;
} else {
@@ -162,7 +157,7 @@ public class StreamEngine {
}
public boolean mergeStream() {
- if (streams.size() == 1) {
+ if(streams.size() == 1) {
Errors.inst.printError(EK_STRM_LAST);
return false;
} else {
@@ -177,7 +172,7 @@ public class StreamEngine {
private boolean processCommand(String tk) {
char[] comms = null;
- if (tk.length() > 5) {
+ if(tk.length() > 5) {
comms = tk.substring(3, tk.length() - 1).toCharArray();
} else {
comms = new char[1];
@@ -186,35 +181,30 @@ public class StreamEngine {
boolean succ;
- for (char comm : comms) {
- switch (comm) {
+ for(char comm : comms) {
+ switch(comm) {
case '+':
newStream();
break;
case '>':
succ = rightStream();
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case '<':
succ = leftStream();
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case '-':
succ = deleteStream();
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case 'M':
succ = mergeStream();
- if (!succ)
- return false;
+ if(!succ) return false;
break;
case 'L':
succ = scleng.runProgram(currStream.toArray(new String[0]));
- if (!succ)
- return false;
+ if(!succ) return false;
break;
default:
Errors.inst.printError(EK_STRM_INVCOM, tk);