diff options
| author | EVE <EVE@EVE-PC> | 2017-03-14 12:08:11 -0400 |
|---|---|---|
| committer | EVE <EVE@EVE-PC> | 2017-03-14 12:08:11 -0400 |
| commit | 635d3150e3e85c01b777ff165e21fa8965d58440 (patch) | |
| tree | 3389128f83a5a79f8d0eec0a0e19f54b9d117b66 /dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java | |
| parent | e59e2a97773f93bdd25bd4680809c10699f0feb3 (diff) | |
Cleanup
Diffstat (limited to 'dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java')
| -rw-r--r-- | dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java | 118 |
1 files changed, 50 insertions, 68 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; } |
