summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-05-30 15:57:04 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-05-30 15:57:04 -0300
commit0029bfc3cf4fdee2bcd86689a8d9a2a8f4dd553a (patch)
tree803acf609ffb9db8595209f7144971e72d31d310
parenta7ba845df20d1bec77b4044738f1ff4fc1128201 (diff)
Group changes
Start work on getting groups to behave correctly
-rw-r--r--base/src/bjc/dicelang/DiceLangEngine.java2
-rw-r--r--base/src/bjc/dicelang/Parser.java16
-rw-r--r--base/src/bjc/dicelang/eval/Evaluator.java3
3 files changed, 17 insertions, 4 deletions
diff --git a/base/src/bjc/dicelang/DiceLangEngine.java b/base/src/bjc/dicelang/DiceLangEngine.java
index 1104ee4..2f993e8 100644
--- a/base/src/bjc/dicelang/DiceLangEngine.java
+++ b/base/src/bjc/dicelang/DiceLangEngine.java
@@ -610,8 +610,6 @@ public class DiceLangEngine {
System.out.printf("\t\tEvaluates to %s", res);
if(res == null) {
- // This means we got a null
- // These shouldn't happen
} else if (res.type == EvaluatorResult.Type.DICE) {
String value = ((DiceEvaluatorResult) res).diceVal.value();
diff --git a/base/src/bjc/dicelang/Parser.java b/base/src/bjc/dicelang/Parser.java
index ffbfb9d..1b2a0bd 100644
--- a/base/src/bjc/dicelang/Parser.java
+++ b/base/src/bjc/dicelang/Parser.java
@@ -136,7 +136,21 @@ public class Parser {
* AST forest.
*/
for(final ITree<Node> ast : working) {
- results.add(ast);
+ /* Make sure that the tree are well-formed */
+ if(ast.containsMatching((val) -> {
+ switch(val.type) {
+ case OGROUP:
+ return true;
+ default:
+ return false;
+ }
+ })) {
+ System.out.printf("\tERROR: Malformed tree:\n%s\n", ast);
+
+ return false;
+ } else {
+ results.add(ast);
+ }
}
return true;
diff --git a/base/src/bjc/dicelang/eval/Evaluator.java b/base/src/bjc/dicelang/eval/Evaluator.java
index 351c6ec..26bb73b 100644
--- a/base/src/bjc/dicelang/eval/Evaluator.java
+++ b/base/src/bjc/dicelang/eval/Evaluator.java
@@ -128,7 +128,8 @@ public class Evaluator {
default:
return TopDownTransformResult.PUSHDOWN;
}
-
+ case GROUP:
+ return TopDownTransformResult.PASSTHROUGH;
default:
return TopDownTransformResult.PUSHDOWN;
}