diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-05-30 15:57:04 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-05-30 15:57:04 -0300 |
| commit | 0029bfc3cf4fdee2bcd86689a8d9a2a8f4dd553a (patch) | |
| tree | 803acf609ffb9db8595209f7144971e72d31d310 | |
| parent | a7ba845df20d1bec77b4044738f1ff4fc1128201 (diff) | |
Group changes
Start work on getting groups to behave correctly
| -rw-r--r-- | base/src/bjc/dicelang/DiceLangEngine.java | 2 | ||||
| -rw-r--r-- | base/src/bjc/dicelang/Parser.java | 16 | ||||
| -rw-r--r-- | base/src/bjc/dicelang/eval/Evaluator.java | 3 |
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; } |
