summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/Evaluator.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-08 16:38:35 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-08 16:38:35 -0300
commit054643900e7b857cafe123b0b4c03f10a95520ed (patch)
treec289fc397fe79ea0a6792e3f2f39a05ed1315936 /dice-lang/src/bjc/dicelang/Evaluator.java
parentf40e5a873420d70d01ff7e01b77bdbd64faab00e (diff)
Update
Diffstat (limited to 'dice-lang/src/bjc/dicelang/Evaluator.java')
-rw-r--r--dice-lang/src/bjc/dicelang/Evaluator.java20
1 files changed, 7 insertions, 13 deletions
diff --git a/dice-lang/src/bjc/dicelang/Evaluator.java b/dice-lang/src/bjc/dicelang/Evaluator.java
index b1a1ebd..d537ada 100644
--- a/dice-lang/src/bjc/dicelang/Evaluator.java
+++ b/dice-lang/src/bjc/dicelang/Evaluator.java
@@ -74,8 +74,8 @@ public class Evaluator {
}
private static Node FAIL(final EvaluatorResult res) {
- return new Node(Node.Type.RESULT, new EvaluatorResult(FAILURE, new Node(Node.Type.RESULT,
- res)));
+ EvaluatorResult eres = new EvaluatorResult(FAILURE, new Node(Node.Type.RESULT, res));
+ return new Node(Node.Type.RESULT, eres);
}
private final DiceLangEngine eng;
@@ -105,7 +105,7 @@ public class Evaluator {
ctx.thunk = itr -> {
/**
* Deliberately finish the iterator, but ignore results.
- * It's only for stepwise evaluation but we don't know
+ * It's only for stepwise evaluation, but we don't know
* if stepping the iterator causes something to happen.
*
*/
@@ -134,45 +134,41 @@ public class Evaluator {
}, comm);
}
+ /* Pick the way to evaluate a node. */
private TopDownTransformResult pickEvaluationType(final Node nd) {
switch (nd.type) {
case UNARYOP:
switch (nd.operatorType) {
case COERCE:
return TopDownTransformResult.RTRANSFORM;
-
default:
return TopDownTransformResult.PUSHDOWN;
}
-
default:
return TopDownTransformResult.PUSHDOWN;
}
}
+ /* Evaluate a node. */
private ITree<Node> evaluateNode(final ITree<Node> ast, final Context ctx) {
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));
}
}
+ /* Evaluate a unary operator. */
private ITree<Node> evaluateUnaryOp(final ITree<Node> ast, final Context ctx) {
if (ast.getChildrenCount() != 1) {
Errors.inst.printError(EK_EVAL_UNUNARY, Integer.toString(ast.getChildrenCount()));
@@ -180,9 +176,7 @@ public class Evaluator {
}
switch (ast.getHead().operatorType) {
- /*
- * TODO move coercing to its own class
- */
+ /* @TODO move coercing to its own class */
case COERCE:
final ITree<Node> toCoerce = ast.getChild(0);
final ITree<Node> retVal = new Tree<>(toCoerce.getHead());