summaryrefslogtreecommitdiff
path: root/dice-lang/src
diff options
context:
space:
mode:
Diffstat (limited to 'dice-lang/src')
-rw-r--r--dice-lang/src/bjc/dicelang/CLIArgsParser.java24
-rw-r--r--dice-lang/src/bjc/dicelang/Define.java12
-rw-r--r--dice-lang/src/bjc/dicelang/DiceLangConsole.java74
-rw-r--r--dice-lang/src/bjc/dicelang/DiceLangEngine.java78
-rw-r--r--dice-lang/src/bjc/dicelang/Evaluator.java11
-rw-r--r--dice-lang/src/bjc/dicelang/Node.java8
-rw-r--r--dice-lang/src/bjc/dicelang/Parser.java4
-rw-r--r--dice-lang/src/bjc/dicelang/Shunter.java50
-rw-r--r--dice-lang/src/bjc/dicelang/Token.java8
-rw-r--r--dice-lang/src/bjc/dicelang/Tokenizer.java14
-rw-r--r--dice-lang/src/bjc/dicelang/dice/CompoundingDie.java2
-rw-r--r--dice-lang/src/bjc/dicelang/dice/DiceBox.java36
-rw-r--r--dice-lang/src/bjc/dicelang/dice/DieExpression.java8
-rw-r--r--dice-lang/src/bjc/dicelang/dice/ExplodingDice.java4
-rw-r--r--dice-lang/src/bjc/dicelang/dice/SimpleDie.java8
-rw-r--r--dice-lang/src/bjc/dicelang/dice/SimpleDieList.java4
-rw-r--r--dice-lang/src/bjc/dicelang/expr/Ezpr.java2
-rw-r--r--dice-lang/src/bjc/dicelang/expr/Parser.java2
-rw-r--r--dice-lang/src/bjc/dicelang/expr/Tokens.java4
-rw-r--r--dice-lang/src/bjc/dicelang/scl/StreamControlConsole.java18
-rw-r--r--dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java80
-rw-r--r--dice-lang/src/bjc/dicelang/scl/StreamEngine.java28
22 files changed, 351 insertions, 128 deletions
diff --git a/dice-lang/src/bjc/dicelang/CLIArgsParser.java b/dice-lang/src/bjc/dicelang/CLIArgsParser.java
index 7f21b63..a1f822c 100644
--- a/dice-lang/src/bjc/dicelang/CLIArgsParser.java
+++ b/dice-lang/src/bjc/dicelang/CLIArgsParser.java
@@ -32,7 +32,9 @@ public class CLIArgsParser {
* @return Whether or not to continue to the DiceLang repl.
*/
public static boolean parseArgs(final String[] args, final DiceLangEngine eng) {
- if (args.length < 0) return true;
+ if (args.length < 0) {
+ return true;
+ }
if (args.length == 1 && (args[0].equals("--help") || args[0].equals("-h"))) {
for (final String lne : ResourceLoader.loadHelpFile("cli")) {
@@ -114,7 +116,9 @@ public class CLIArgsParser {
case "--define":
i = simpleDefine(i, args, eng);
- if (i == -1) return false;
+ if (i == -1) {
+ return false;
+ }
break;
@@ -122,7 +126,9 @@ public class CLIArgsParser {
case "--define-file":
i = defineFile(i, args, eng);
- if (i == -1) return false;
+ if (i == -1) {
+ return false;
+ }
break;
@@ -152,7 +158,9 @@ public class CLIArgsParser {
final Define dfn = new Define(5, false, false, false, null, args[i + 1],
Arrays.asList(""));
- if (dfn.inError) return -1;
+ if (dfn.inError) {
+ return -1;
+ }
eng.addLineDefine(dfn);
return i + 1;
@@ -161,7 +169,9 @@ public class CLIArgsParser {
final Define dfn = new Define(5, false, false, false, null, args[i + 1],
Arrays.asList(args[i + 2]));
- if (dfn.inError) return -1;
+ if (dfn.inError) {
+ return -1;
+ }
eng.addLineDefine(dfn);
return i + 2;
@@ -183,7 +193,9 @@ public class CLIArgsParser {
final Define dfn = parseDefine(ln.substring(ln.indexOf(' ')));
- if (dfn == null || dfn.inError) return -1;
+ if (dfn == null || dfn.inError) {
+ return -1;
+ }
if (ln.startsWith("line")) {
eng.addLineDefine(dfn);
diff --git a/dice-lang/src/bjc/dicelang/Define.java b/dice-lang/src/bjc/dicelang/Define.java
index c8e0e0c..f4a8871 100644
--- a/dice-lang/src/bjc/dicelang/Define.java
+++ b/dice-lang/src/bjc/dicelang/Define.java
@@ -139,10 +139,14 @@ public class Define implements UnaryOperator<String>, Comparable<Define> {
@Override
public String apply(final String tok) {
- if (inError) return tok;
+ if (inError) {
+ return tok;
+ }
if (predicate != null) {
- if (!predicate.matcher(tok).matches()) return tok;
+ if (!predicate.matcher(tok).matches()) {
+ return tok;
+ }
}
String strang = doPass(tok);
@@ -150,7 +154,9 @@ public class Define implements UnaryOperator<String>, Comparable<Define> {
if (doRecur) {
int recurCount = 0;
- if (strang.equals(tok)) return strang;
+ if (strang.equals(tok)) {
+ return strang;
+ }
final String oldStrang = strang;
diff --git a/dice-lang/src/bjc/dicelang/DiceLangConsole.java b/dice-lang/src/bjc/dicelang/DiceLangConsole.java
index 7cd6bb5..ebf9b59 100644
--- a/dice-lang/src/bjc/dicelang/DiceLangConsole.java
+++ b/dice-lang/src/bjc/dicelang/DiceLangConsole.java
@@ -35,9 +35,11 @@ public class DiceLangConsole {
public DiceLangConsole(final String[] args) {
commandNumber = 0;
eng = new DiceLangEngine();
+
if (!CLIArgsParser.parseArgs(args, eng)) {
System.exit(1);
}
+
Terminal.setupTerminal();
}
@@ -68,18 +70,26 @@ public class DiceLangConsole {
while (!comm.equals("quit") && !comm.equals("exit")) {
if (comm.startsWith("pragma")) {
/* Run pragmas. */
- final boolean success = handlePragma(comm.substring(7));
+ final boolean success = handlePragma(comm.substring(7));
- if (success) System.out.println("Pragma completed succesfully");
- else System.out.println("Pragma execution failed");
+ if (success) {
+ System.out.println("Pragma completed succesfully");
+ } else {
+ System.out.println("Pragma execution failed");
+ }
} else {
/* Run commands. */
- if(eng.debugMode) System.out.printf("\tRaw command: %s\n", comm);
+ if (eng.debugMode) {
+ System.out.printf("\tRaw command: %s\n", comm);
+ }
final boolean success = eng.runCommand(comm);
- if (success) System.out.println("Command completed succesfully");
- else System.out.println("Command execution failed");
+ if (success) {
+ System.out.println("Command completed succesfully");
+ } else {
+ System.out.println("Command execution failed");
+ }
commandNumber += 1;
}
@@ -94,15 +104,20 @@ public class DiceLangConsole {
}
private boolean handlePragma(final String pragma) {
- if(eng.debugMode) System.out.println("\tRaw pragma: " + pragma);
+ if (eng.debugMode) {
+ System.out.println("\tRaw pragma: " + pragma);
+ }
/* Grab the name from the arguments. */
String pragmaName = null;
final int firstIndex = pragma.indexOf(' ');
/* Handle argless pragmas. */
- if (firstIndex == -1) pragmaName = pragma;
- else pragmaName = pragma.substring(0, firstIndex);
+ if (firstIndex == -1) {
+ pragmaName = pragma;
+ } else {
+ pragmaName = pragma.substring(0, firstIndex);
+ }
/*
* Run pragmas.
@@ -111,19 +126,25 @@ public class DiceLangConsole {
case "debug":
System.out.println("\tDebug mode is now " + eng.toggleDebug());
break;
+
case "postfix":
System.out.println("\tPostfix mode is now " + eng.togglePostfix());
break;
+
case "prefix":
System.out.println("\tPrefix mode is now " + eng.togglePrefix());
break;
+
case "stepeval":
System.out.println("\tStepeval mode is now" + eng.toggleStepEval());
break;
+
case "define":
return defineMode(pragma.substring(7));
+
case "help":
return helpMode(pragma.substring(5));
+
default:
Errors.inst.printError(EK_CONS_INVPRAG, pragma);
return false;
@@ -138,22 +159,28 @@ public class DiceLangConsole {
case "help":
System.out.println("\tGet help on pragmas");
break;
+
case "debug":
System.out.println("\tToggle debug mode. (Output stage results)");
break;
+
case "postfix":
System.out.println("\tToggle postfix mode. (Don't shunt tokens)");
break;
+
case "prefix":
System.out.println("\tToggle prefix mode. (Reverse token order instead of shunting)");
break;
+
case "stepeval":
System.out.println("\tToggle stepeval mode. (Print out evaluation progress)");
break;
+
case "define":
System.out.println("\tAdd a macro rewrite directive.");
System.out.println("\tdefine <priority> <type> <recursion> <guard> <circular> <patterns>...");
break;
+
default:
System.out.println("\tNo help available for pragma " + pragma);
}
@@ -175,7 +202,7 @@ public class DiceLangConsole {
final int fifthIndex = defineText.indexOf(' ', fourthIndex + 1);
final int sixthIndex = defineText.indexOf(' ', fifthIndex + 1);
- /*
+ /*
* Error if we got something we didn't need, or didn't get
* something we need.
*/
@@ -209,28 +236,32 @@ public class DiceLangConsole {
case "line":
type = Define.Type.LINE;
break;
+
case "token":
type = Define.Type.TOKEN;
break;
+
case "subline":
type = Define.Type.LINE;
subMode = true;
break;
+
case "subtoken":
type = Define.Type.TOKEN;
subMode = true;
break;
+
default:
Errors.inst.printError(EK_CONS_INVDEFINE, "(unknown type)");
return false;
}
final boolean doRecur = defineText.substring(secondIndex + 1, thirdIndex)
- .equalsIgnoreCase("true");
+ .equalsIgnoreCase("true");
final boolean hasGuard = defineText.substring(thirdIndex + 1, fourthIndex)
- .equalsIgnoreCase("true");
+ .equalsIgnoreCase("true");
final boolean isCircular = defineText.substring(thirdIndex + 1, fourthIndex)
- .equalsIgnoreCase("true");
+ .equalsIgnoreCase("true");
final String pats = defineText.substring(fifthIndex + 1).trim();
final Matcher patMatcher = slashPattern.matcher(pats);
@@ -241,6 +272,7 @@ public class DiceLangConsole {
Errors.inst.printError(EK_CONS_INVDEFINE, "(no guard pattern)");
return false;
}
+
guardPattern = patMatcher.group(1);
}
@@ -251,18 +283,24 @@ public class DiceLangConsole {
final String searchPattern = patMatcher.group(1);
final List<String> replacePatterns = new LinkedList<>();
+
while (patMatcher.find()) {
replacePatterns.add(patMatcher.group(1));
}
final Define dfn = new Define(priority, subMode, doRecur,
- isCircular, guardPattern, searchPattern,
- replacePatterns);
+ isCircular, guardPattern, searchPattern,
+ replacePatterns);
- if (dfn.inError) return false;
+ if (dfn.inError) {
+ return false;
+ }
- if (type == Define.Type.LINE) eng.addLineDefine(dfn);
- else eng.addTokenDefine(dfn);
+ if (type == Define.Type.LINE) {
+ eng.addLineDefine(dfn);
+ } else {
+ eng.addTokenDefine(dfn);
+ }
return true;
}
diff --git a/dice-lang/src/bjc/dicelang/DiceLangEngine.java b/dice-lang/src/bjc/dicelang/DiceLangEngine.java
index 158239e..7b65f77 100644
--- a/dice-lang/src/bjc/dicelang/DiceLangEngine.java
+++ b/dice-lang/src/bjc/dicelang/DiceLangEngine.java
@@ -226,16 +226,25 @@ public class DiceLangEngine {
public boolean runCommand(final String command) {
/* Preprocess the command into tokens */
final IList<String> preprocessedTokens = preprocessCommand(command);
- if (preprocessedTokens == null) return false;
+
+ if (preprocessedTokens == null) {
+ return false;
+ }
/* Lex the string tokens into token-tokens */
final IList<Token> lexedTokens = lexTokens(preprocessedTokens);
- if (lexedTokens == null) return false;
+
+ if (lexedTokens == null) {
+ return false;
+ }
/* Parse the tokens into an AST forest */
final IList<ITree<Node>> astForest = new FunctionalList<>();
final boolean succ = Parser.parseTokens(lexedTokens, astForest);
- if (!succ) return false;
+
+ if (!succ) {
+ return false;
+ }
/* Evaluate the AST forest */
evaluateForest(astForest);
@@ -256,14 +265,19 @@ public class DiceLangEngine {
/* Lex the token */
final Token tk = tokenzer.lexToken(token, stringLiterals);
- if(debugMode) LOG.finer(String.format("lexed token: %s\n", tk));
+
+ if (debugMode) {
+ LOG.finer(String.format("lexed token: %s\n", tk));
+ }
+
if (tk == null) {
/* Ignore blank tokens */
continue;
} else if (tk == Token.NIL_TOKEN)
/* Fail on bad tokens */
+ {
return null;
- else {
+ } else {
lexedTokens.add(tk);
}
}
@@ -279,10 +293,14 @@ public class DiceLangEngine {
final IList<Token> preparedTokens = new FunctionalList<>();
boolean succ = removePreshuntTokens(lexedTokens, preparedTokens);
- if (!succ) return null;
+
+ if (!succ) {
+ return null;
+ }
if (debugMode && !postfixMode) {
- String msg = String.format("\tCommand after pre-shunter removal: %s\n", preparedTokens.toString());
+ String msg = String.format("\tCommand after pre-shunter removal: %s\n",
+ preparedTokens.toString());
LOG.fine(msg);
System.out.print(msg);
}
@@ -292,7 +310,9 @@ public class DiceLangEngine {
shuntedTokens = new FunctionalList<>();
succ = shunt.shuntTokens(preparedTokens, shuntedTokens);
- if (!succ) return null;
+ if (!succ) {
+ return null;
+ }
} else if (prefixMode) {
/* Reverse directional tokens */
preparedTokens.reverse();
@@ -308,8 +328,8 @@ public class DiceLangEngine {
/* Expand token groups */
final IList<Token> readyTokens = shuntedTokens.flatMap(tk -> {
if (tk.type == Token.Type.TOKGROUP ||
- tk.type == Token.Type.TAGOP ||
- tk.type == Token.Type.TAGOPR ) {
+ tk.type == Token.Type.TAGOP ||
+ tk.type == Token.Type.TAGOPR ) {
LOG.finer(String.format("Expanding token group to: %s\n", tk.tokenValues.toString()));
return tk.tokenValues;
} else {
@@ -318,7 +338,8 @@ public class DiceLangEngine {
});
if (debugMode && !postfixMode) {
- String msg = String.format("\tCommand after re-preshunting: %s\n", readyTokens.toString());
+ String msg = String.format("\tCommand after re-preshunting: %s\n",
+ readyTokens.toString());
LOG.fine(msg);
System.out.print(msg);
}
@@ -335,16 +356,22 @@ public class DiceLangEngine {
switch (tk.type) {
case OBRACE:
return new Token(CBRACE, tk.intValue);
+
case OPAREN:
return new Token(CPAREN, tk.intValue);
+
case OBRACKET:
return new Token(CBRACKET, tk.intValue);
+
case CBRACE:
return new Token(OBRACE, tk.intValue);
+
case CPAREN:
return new Token(OPAREN, tk.intValue);
+
case CBRACKET:
return new Token(OBRACKET, tk.intValue);
+
default:
return tk;
}
@@ -360,7 +387,10 @@ public class DiceLangEngine {
/* Run the tokens through the stream engine */
final IList<String> streamToks = new FunctionalList<>();
final boolean succ = streamEng.doStreams(command.split(" "), streamToks);
- if (!succ) return null;
+
+ if (!succ) {
+ return null;
+ }
/* Apply line defns */
String newComm = ListUtils.collapseTokens(streamToks, " ");
@@ -398,9 +428,11 @@ public class DiceLangEngine {
*/
final String descVal = TokenUtils.descapeString(litVal);
stringLiterals.put(litName, descVal);
- if(debugMode)
+
+ if (debugMode)
LOG.finer(String.format("Replaced string literal '%s' with literal no. %d",
- descVal, nextLiteral));
+ descVal, nextLiteral));
+
nextLiteral += 1;
/* Place a ref. to the string in the command */
@@ -438,7 +470,8 @@ public class DiceLangEngine {
final String tkName = "nonExpandToken" + nextLiteral++;
nonExpandedTokens.put(tkName, nonExpandMatcher.group(1));
- LOG.finer(String.format("Pulled non-expander '%s' to '%s'", nonExpandMatcher.group(1), tkName));
+ LOG.finer(String.format("Pulled non-expander '%s' to '%s'", nonExpandMatcher.group(1),
+ tkName));
return tkName;
}
@@ -446,15 +479,18 @@ public class DiceLangEngine {
});
if (debugMode) {
- String msg = String.format("\tCommand after removal of non-expanders: %s\n", tokens.toString());
+ String msg = String.format("\tCommand after removal of non-expanders: %s\n",
+ tokens.toString());
LOG.fine(msg);
System.out.print(msg);
}
/* Expand tokens */
IList<String> fullyExpandedTokens = tokens.flatMap(opExpander::split);
- if(debugMode) {
- String msg = String.format("\tCommand after token expansion: %s\n", fullyExpandedTokens.toString());
+
+ if (debugMode) {
+ String msg = String.format("\tCommand after token expansion: %s\n",
+ fullyExpandedTokens.toString());
LOG.fine(msg);
System.out.print(msg);
}
@@ -468,7 +504,7 @@ public class DiceLangEngine {
if (debugMode) {
String msg = String.format("\tCommand after non-expander reinsertion: %s\n",
- fullyExpandedTokens.toString());
+ fullyExpandedTokens.toString());
LOG.fine(msg);
System.out.print(msg);
}
@@ -596,7 +632,9 @@ public class DiceLangEngine {
+ preshuntTokens);
}
- if (!success) return false;
+ if (!success) {
+ return false;
+ }
if (curBraceCount >= 1) {
/*
diff --git a/dice-lang/src/bjc/dicelang/Evaluator.java b/dice-lang/src/bjc/dicelang/Evaluator.java
index d537ada..0a583c8 100644
--- a/dice-lang/src/bjc/dicelang/Evaluator.java
+++ b/dice-lang/src/bjc/dicelang/Evaluator.java
@@ -141,9 +141,11 @@ public class Evaluator {
switch (nd.operatorType) {
case COERCE:
return TopDownTransformResult.RTRANSFORM;
+
default:
return TopDownTransformResult.PUSHDOWN;
}
+
default:
return TopDownTransformResult.PUSHDOWN;
}
@@ -154,14 +156,19 @@ public class Evaluator {
switch (ast.getHead().type) {
case UNARYOP:
return evaluateUnaryOp(ast, ctx);
+
case BINOP:
return evaluateBinaryOp(ast, ctx);
+
case TOKREF:
return evaluateTokenRef(ast.getHead().tokenVal, ctx);
+
case ROOT:
return ast.getChild(ast.getChildrenCount() - 1);
+
case RESULT:
return ast;
+
default:
Errors.inst.printError(EK_EVAL_INVNODE, ast.getHead().type.toString());
return new Tree<>(FAIL(ast));
@@ -419,9 +426,9 @@ public class Evaluator {
if (left.type == STRING || right.type == STRING) {
Errors.inst.printError(EK_EVAL_STRINGMATH);
return new Tree<>(FAIL());
- } else if (left.type == FAILURE || right.type == FAILURE)
+ } else if (left.type == FAILURE || right.type == FAILURE) {
return new Tree<>(FAIL());
- else if (left.type == INT && right.type != INT) {
+ } else if (left.type == INT && right.type != INT) {
Errors.inst.printError(EK_EVAL_MISMATH);
return new Tree<>(FAIL(right));
} else if (left.type == FLOAT && right.type != FLOAT) {
diff --git a/dice-lang/src/bjc/dicelang/Node.java b/dice-lang/src/bjc/dicelang/Node.java
index af69c8c..0a57c54 100644
--- a/dice-lang/src/bjc/dicelang/Node.java
+++ b/dice-lang/src/bjc/dicelang/Node.java
@@ -70,11 +70,15 @@ public class Node {
@Override
public boolean equals(final Object other) {
- if (!(other instanceof Node)) return false;
+ if (!(other instanceof Node)) {
+ return false;
+ }
final Node otk = (Node) other;
- if (otk.type != type) return false;
+ if (otk.type != type) {
+ return false;
+ }
switch (type) {
case OGROUP:
diff --git a/dice-lang/src/bjc/dicelang/Parser.java b/dice-lang/src/bjc/dicelang/Parser.java
index 7e48f43..ddeccd2 100644
--- a/dice-lang/src/bjc/dicelang/Parser.java
+++ b/dice-lang/src/bjc/dicelang/Parser.java
@@ -60,7 +60,9 @@ public class Parser {
case CBRACE:
final boolean sc = parseClosingGrouper(working, tk);
- if (!sc) return false;
+ if (!sc) {
+ return false;
+ }
break;
diff --git a/dice-lang/src/bjc/dicelang/Shunter.java b/dice-lang/src/bjc/dicelang/Shunter.java
index 547f379..407ca5a 100644
--- a/dice-lang/src/bjc/dicelang/Shunter.java
+++ b/dice-lang/src/bjc/dicelang/Shunter.java
@@ -59,7 +59,7 @@ public class Shunter {
*/
Set<Token.Type> unaryAdjectives;
- /*
+ /*
* Unary operators that can only be applied to operator tokens and yield
* operator tokens.
*/
@@ -149,12 +149,16 @@ public class Shunter {
while (feed.size() != 0) {
succ = shuntToken(feed.poll(), opStack, unaryOps, currReturned, feed);
- if (!succ) return false;
+ if (!succ) {
+ return false;
+ }
}
succ = shuntToken(tk, opStack, unaryOps, currReturned, feed);
- if (!succ) return false;
+ if (!succ) {
+ return false;
+ }
}
// Flush leftover operators
@@ -308,7 +312,9 @@ public class Shunter {
}
// If it doesn't, the left is higher precedence.
- if (!exists) return false;
+ if (!exists) {
+ return false;
+ }
int rightPrecedence;
int leftPrecedence;
@@ -325,7 +331,9 @@ public class Shunter {
leftPrecedence = ops.get(left);
}
- if (rightAssoc.contains(left)) return rightPrecedence > leftPrecedence;
+ if (rightAssoc.contains(left)) {
+ return rightPrecedence > leftPrecedence;
+ }
return rightPrecedence >= leftPrecedence;
}
@@ -333,15 +341,25 @@ public class Shunter {
private boolean isOp(final Token tk) {
final Token.Type ty = tk.type;
- if (ops.containsKey(ty)) return true;
+ if (ops.containsKey(ty)) {
+ return true;
+ }
- if (unaryAdjectives.contains(ty)) return true;
+ if (unaryAdjectives.contains(ty)) {
+ return true;
+ }
- if (unaryAdverbs.contains(ty)) return true;
+ if (unaryAdverbs.contains(ty)) {
+ return true;
+ }
- if (unaryGerunds.contains(ty)) return true;
+ if (unaryGerunds.contains(ty)) {
+ return true;
+ }
- if (ty == TAGOPR) return true;
+ if (ty == TAGOPR) {
+ return true;
+ }
return false;
}
@@ -349,11 +367,17 @@ public class Shunter {
private boolean isUnary(final Token tk) {
final Token.Type ty = tk.type;
- if (unaryAdjectives.contains(ty)) return true;
+ if (unaryAdjectives.contains(ty)) {
+ return true;
+ }
- if (unaryAdverbs.contains(ty)) return true;
+ if (unaryAdverbs.contains(ty)) {
+ return true;
+ }
- if (unaryGerunds.contains(ty)) return true;
+ if (unaryGerunds.contains(ty)) {
+ return true;
+ }
return false;
}
diff --git a/dice-lang/src/bjc/dicelang/Token.java b/dice-lang/src/bjc/dicelang/Token.java
index 8b6d12b..692430e 100644
--- a/dice-lang/src/bjc/dicelang/Token.java
+++ b/dice-lang/src/bjc/dicelang/Token.java
@@ -105,11 +105,15 @@ public class Token {
@Override
public boolean equals(final Object other) {
- if (!(other instanceof Token)) return false;
+ if (!(other instanceof Token)) {
+ return false;
+ }
final Token otk = (Token) other;
- if (otk.type != type) return false;
+ if (otk.type != type) {
+ return false;
+ }
switch (type) {
case OBRACE:
diff --git a/dice-lang/src/bjc/dicelang/Tokenizer.java b/dice-lang/src/bjc/dicelang/Tokenizer.java
index 8a366ac..4bf0d5d 100644
--- a/dice-lang/src/bjc/dicelang/Tokenizer.java
+++ b/dice-lang/src/bjc/dicelang/Tokenizer.java
@@ -47,7 +47,9 @@ public class Tokenizer {
}
public Token lexToken(final String token, final IMap<String, String> stringLts) {
- if (token.equals("")) return null;
+ if (token.equals("")) {
+ return null;
+ }
Token tk = Token.NIL_TOKEN;
@@ -63,6 +65,7 @@ public class Tokenizer {
case '}':
tk = tokenizeGrouping(token);
break;
+
default:
tk = tokenizeLiteral(token, stringLts);
}
@@ -79,21 +82,27 @@ public class Tokenizer {
case '(':
tk = new Token(OPAREN, token.length());
break;
+
case ')':
tk = new Token(CPAREN, token.length());
break;
+
case '[':
tk = new Token(OBRACKET, token.length());
break;
+
case ']':
tk = new Token(CBRACKET, token.length());
break;
+
case '{':
tk = new Token(OBRACE, token.length());
break;
+
case '}':
tk = new Token(CBRACE, token.length());
break;
+
default:
Errors.inst.printError(EK_TOK_UNGROUP, token);
break;
@@ -114,6 +123,7 @@ public class Tokenizer {
Token tk = Token.NIL_TOKEN;
String token = rtoken.trim();
+
if (TokenUtils.isInt(token)) {
tk = new Token(INT_LIT, Long.parseLong(token));
} else if (hexadecimalMatcher.matcher(token).matches()) {
@@ -121,6 +131,7 @@ public class Tokenizer {
tk = new Token(INT_LIT, Long.parseLong(newToken.substring(2).toUpperCase(), 16));
} else if (flexadecimalMatcher.matcher(token).matches()) {
final int parseBase = Integer.parseInt(token.substring(token.lastIndexOf('B') + 1));
+
if (parseBase < Character.MIN_RADIX || parseBase > Character.MAX_RADIX) {
Errors.inst.printError(EK_TOK_INVBASE, Integer.toString(parseBase));
return Token.NIL_TOKEN;
@@ -153,6 +164,7 @@ public class Tokenizer {
tk = new Token(VREF, nextSym - 1);
}
}
+
return tk;
}
}
diff --git a/dice-lang/src/bjc/dicelang/dice/CompoundingDie.java b/dice-lang/src/bjc/dicelang/dice/CompoundingDie.java
index 4b3f137..023282e 100644
--- a/dice-lang/src/bjc/dicelang/dice/CompoundingDie.java
+++ b/dice-lang/src/bjc/dicelang/dice/CompoundingDie.java
@@ -51,7 +51,7 @@ public class CompoundingDie implements Die {
@Override
public boolean canOptimize() {
- if(source.canOptimize()) {
+ if (source.canOptimize()) {
/* We can only be optimized for a result of zero. */
return source.optimize() == 0;
}
diff --git a/dice-lang/src/bjc/dicelang/dice/DiceBox.java b/dice-lang/src/bjc/dicelang/dice/DiceBox.java
index 41b31af..f7bf719 100644
--- a/dice-lang/src/bjc/dicelang/dice/DiceBox.java
+++ b/dice-lang/src/bjc/dicelang/dice/DiceBox.java
@@ -24,7 +24,7 @@ public class DiceBox {
try {
return doParseExpression(expString);
} catch (Exception ex) {
- /*
+ /*
* @TODO 10/08/17 Ben Culkin :DieErrors :ErrorRefactor
* Use different types of exceptions to provide
* better error messages. */
@@ -34,7 +34,7 @@ public class DiceBox {
return null;
}
}
-
+
private static DieExpression doParseExpression(final String expString) {
/* Only bother with valid expressions. */
if (!isValidExpression(expString)) {
@@ -96,10 +96,12 @@ public class DiceBox {
final DieExpression right = parseExpression(dieParts[1]);
/* :ErrorRefactor */
- if(left.isList) {
- System.out.printf("ERROR: Expected a scalar die expression for lhs of compound die, got a list expression instead (%s)\n", left);
- } else if(right.isList) {
- System.out.printf("ERROR: Expected a scalar die expression for rhs of compound die, got a list expression instead (%s)\n", right);
+ if (left.isList) {
+ System.out.printf("ERROR: Expected a scalar die expression for lhs of compound die, got a list expression instead (%s)\n",
+ left);
+ } else if (right.isList) {
+ System.out.printf("ERROR: Expected a scalar die expression for rhs of compound die, got a list expression instead (%s)\n",
+ right);
}
final Die compound = new CompoundDie(left.scalar, right.scalar);
@@ -167,7 +169,7 @@ public class DiceBox {
*/
private static final String scalarDie = "[\\+\\-]?\\d+sd";
private static final Pattern scalarDiePattern = Pattern.compile(
- String.format("\\A%s\\Z", scalarDie));
+ String.format("\\A%s\\Z", scalarDie));
/*
* Defines a simple die.
@@ -258,23 +260,25 @@ public class DiceBox {
* @return Whether or not the string is a valid command.
*/
public static boolean isValidExpression(final String exp) {
- if (scalarDiePattern.matcher(exp).matches())
+ if (scalarDiePattern.matcher(exp).matches()) {
return true;
- else if (simpleDiePattern.matcher(exp).matches())
+ } else if (simpleDiePattern.matcher(exp).matches()) {
return true;
- else if (fudgeDiePattern.matcher(exp).matches())
+ } else if (fudgeDiePattern.matcher(exp).matches()) {
return true;
- else if (compoundDiePattern.matcher(exp).matches())
+ } else if (compoundDiePattern.matcher(exp).matches()) {
return true;
- else if (compoundingDiePattern.matcher(exp).matches())
+ } else if (compoundingDiePattern.matcher(exp).matches()) {
return true;
- else if (explodingDiePattern.matcher(exp).matches())
+ } else if (explodingDiePattern.matcher(exp).matches()) {
return true;
- else if (penetratingDiePattern.matcher(exp).matches())
+ } else if (penetratingDiePattern.matcher(exp).matches()) {
return true;
- else if (diceListPattern.matcher(exp).matches())
+ } else if (diceListPattern.matcher(exp).matches()) {
return true;
- else return false;
+ } else {
+ return false;
+ }
}
/*
diff --git a/dice-lang/src/bjc/dicelang/dice/DieExpression.java b/dice-lang/src/bjc/dicelang/dice/DieExpression.java
index edf7684..71b7a68 100644
--- a/dice-lang/src/bjc/dicelang/dice/DieExpression.java
+++ b/dice-lang/src/bjc/dicelang/dice/DieExpression.java
@@ -46,7 +46,9 @@ public class DieExpression {
@Override
public String toString() {
- if (isList) return list.toString();
+ if (isList) {
+ return list.toString();
+ }
return scalar.toString();
}
@@ -57,7 +59,9 @@ public class DieExpression {
* @return The value of the expression as a string.
*/
public String value() {
- if (isList) return Arrays.toString(list.roll());
+ if (isList) {
+ return Arrays.toString(list.roll());
+ }
return Long.toString(scalar.roll());
}
diff --git a/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java b/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
index 7036f32..6458f04 100644
--- a/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
+++ b/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java
@@ -116,7 +116,9 @@ public class ExplodingDice implements DieList {
@Override
public String toString() {
- if (explodePattern == null) return source + (explodePenetrates ? "p" : "") + "!";
+ if (explodePattern == null) {
+ return source + (explodePenetrates ? "p" : "") + "!";
+ }
return source + (explodePenetrates ? "p" : "") + "!" + explodePattern;
}
diff --git a/dice-lang/src/bjc/dicelang/dice/SimpleDie.java b/dice-lang/src/bjc/dicelang/dice/SimpleDie.java
index 60c5d53..ee10070 100644
--- a/dice-lang/src/bjc/dicelang/dice/SimpleDie.java
+++ b/dice-lang/src/bjc/dicelang/dice/SimpleDie.java
@@ -65,7 +65,9 @@ public class SimpleDie implements Die {
@Override
public boolean canOptimize() {
- if (diceSize.canOptimize() && diceSize.optimize() <= 1) return numDice.canOptimize();
+ if (diceSize.canOptimize() && diceSize.optimize() <= 1) {
+ return numDice.canOptimize();
+ }
return false;
}
@@ -74,7 +76,9 @@ public class SimpleDie implements Die {
public long optimize() {
final long optSize = diceSize.optimize();
- if (optSize == 0) return 0;
+ if (optSize == 0) {
+ return 0;
+ }
return numDice.optimize();
}
diff --git a/dice-lang/src/bjc/dicelang/dice/SimpleDieList.java b/dice-lang/src/bjc/dicelang/dice/SimpleDieList.java
index 84896ea..4546238 100644
--- a/dice-lang/src/bjc/dicelang/dice/SimpleDieList.java
+++ b/dice-lang/src/bjc/dicelang/dice/SimpleDieList.java
@@ -26,7 +26,9 @@ public class SimpleDieList implements DieList {
@Override
public boolean canOptimize() {
- if (size.canOptimize() && size.optimize() <= 1) return numDice.canOptimize();
+ if (size.canOptimize() && size.optimize() <= 1) {
+ return numDice.canOptimize();
+ }
return false;
}
diff --git a/dice-lang/src/bjc/dicelang/expr/Ezpr.java b/dice-lang/src/bjc/dicelang/expr/Ezpr.java
index 77adc70..7186d6f 100644
--- a/dice-lang/src/bjc/dicelang/expr/Ezpr.java
+++ b/dice-lang/src/bjc/dicelang/expr/Ezpr.java
@@ -58,7 +58,7 @@
// public Ezpr(EzprType type, Multiset<EzprNode> pos, Multiset<EzprNode> neg) {
// typ = type;
-
+
// positive = pos;
// negative = neg;
// }
diff --git a/dice-lang/src/bjc/dicelang/expr/Parser.java b/dice-lang/src/bjc/dicelang/expr/Parser.java
index b3f83a4..6d34b96 100644
--- a/dice-lang/src/bjc/dicelang/expr/Parser.java
+++ b/dice-lang/src/bjc/dicelang/expr/Parser.java
@@ -128,7 +128,9 @@ public class Parser {
/*
* Handle leaf nodes.
*/
+ {
return data.toExpr();
+ }
final ITree<Token> left = ast.getChild(0);
final ITree<Token> right = ast.getChild(1);
diff --git a/dice-lang/src/bjc/dicelang/expr/Tokens.java b/dice-lang/src/bjc/dicelang/expr/Tokens.java
index 6bdcde0..f763d37 100644
--- a/dice-lang/src/bjc/dicelang/expr/Tokens.java
+++ b/dice-lang/src/bjc/dicelang/expr/Tokens.java
@@ -67,7 +67,9 @@ public class Tokens {
* @return The token the string represents.
*/
public Token lexToken(final String tok, final String raw) {
- if (litTokens.containsKey(tok)) return new Token(litTokens.get(tok), raw, this);
+ if (litTokens.containsKey(tok)) {
+ return new Token(litTokens.get(tok), raw, this);
+ }
return parseVRef(tok, raw);
}
diff --git a/dice-lang/src/bjc/dicelang/scl/StreamControlConsole.java b/dice-lang/src/bjc/dicelang/scl/StreamControlConsole.java
index 4dc9b82..8ace8ad 100644
--- a/dice-lang/src/bjc/dicelang/scl/StreamControlConsole.java
+++ b/dice-lang/src/bjc/dicelang/scl/StreamControlConsole.java
@@ -18,9 +18,13 @@ public class StreamControlConsole {
/* Get input from the user. */
System.out.print("Enter a SCL command string (blank to exit): ");
- while(scn.hasNextLine()) {
+
+ while (scn.hasNextLine()) {
String ln = scn.nextLine();
- if(ln.trim().equals("")) break;
+
+ if (ln.trim().equals("")) {
+ break;
+ }
/* Break the token into strings. */
IList<String> res = new FunctionalList<>();
@@ -28,12 +32,18 @@ public class StreamControlConsole {
/* Run the stream engine on the tokens. */
boolean succ = sengine.doStreams(tokens, res);
- if(!succ) continue;
+
+ if (!succ) {
+ continue;
+ }
/* Run the command through SCL. */
tokens = res.toArray(new String[res.getSize()]);
succ = sclengine.runProgram(tokens);
- if(!succ) continue;
+
+ if (!succ) {
+ continue;
+ }
/* Prompt again. */
System.out.print("Command string executed succesfully.\n\n");
diff --git a/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java b/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java
index b490217..2952a89 100644
--- a/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java
+++ b/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java
@@ -154,21 +154,21 @@ public class StreamControlEngine {
}
public static Token tokenizeString(final 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 (TokenUtils.isInt(token))
+ } else if (TokenUtils.isInt(token)) {
return new Token(ILIT, Long.parseLong(token));
- else if (TokenUtils.isDouble(token))
+ } else if (TokenUtils.isDouble(token)) {
return new Token(FLIT, Double.parseDouble(token));
- else {
+ } else {
Errors.inst.printError(EK_SCL_INVTOKEN, token);
return null;
}
@@ -237,27 +237,35 @@ public class StreamControlEngine {
final String token = tokens[i];
final Token tok = Token.tokenizeString(token);
- if (tok == null) return false;
+ if (tok == null) {
+ return false;
+ }
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;
+ }
final Token brak = curStack.pop();
curStack.push(new Token(ARRAY, brak.tokenVals));
@@ -287,49 +295,63 @@ public class StreamControlEngine {
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;
@@ -353,7 +375,9 @@ public class StreamControlEngine {
case NDROP:
succ = handleNDrop();
- if (!succ) return false;
+ if (!succ) {
+ return false;
+ }
break;
@@ -369,7 +393,9 @@ public class StreamControlEngine {
case NNIP:
succ = handleNNip();
- if (!succ) return false;
+ if (!succ) {
+ return false;
+ }
break;
@@ -478,7 +504,9 @@ public class StreamControlEngine {
case SQUOTE:
n = handleSingleQuote(n, tokens);
- if (n == -1) return -1;
+ if (n == -1) {
+ return -1;
+ }
toks.add(curStack.pop());
break;
@@ -486,7 +514,9 @@ public class StreamControlEngine {
case OBRACKET:
n = handleDelim(n, tokens, "]");
- if (n == -1) return -1;
+ if (n == -1) {
+ return -1;
+ }
toks.add(curStack.pop());
break;
@@ -494,7 +524,9 @@ public class StreamControlEngine {
case OBRACE:
n = handleDelim(i, tokens, "}");
- if (n == -1) return -1;
+ if (n == -1) {
+ return -1;
+ }
final Token brak = curStack.pop();
toks.add(new Token(ARRAY, brak.tokenVals));
diff --git a/dice-lang/src/bjc/dicelang/scl/StreamEngine.java b/dice-lang/src/bjc/dicelang/scl/StreamEngine.java
index 191ab41..2082c9b 100644
--- a/dice-lang/src/bjc/dicelang/scl/StreamEngine.java
+++ b/dice-lang/src/bjc/dicelang/scl/StreamEngine.java
@@ -98,12 +98,16 @@ public class StreamEngine {
/* Are we currently quoting things? */
boolean quoteMode = false;
+
/* Process each token. */
for (final String tk : toks) {
/* Process stream commands. */
if (tk.startsWith("{@S") && !quoteMode) {
- if (tk.equals("{@SQ}")) quoteMode = true;
- else if (!processCommand(tk)) return false;
+ if (tk.equals("{@SQ}")) {
+ quoteMode = true;
+ } else if (!processCommand(tk)) {
+ return false;
+ }
} else {
if (tk.equals("{@SU}")) {
quoteMode = false;
@@ -215,35 +219,45 @@ public class StreamEngine {
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;