From 0029bfc3cf4fdee2bcd86689a8d9a2a8f4dd553a Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Wed, 30 May 2018 15:57:04 -0300 Subject: Group changes Start work on getting groups to behave correctly --- base/src/bjc/dicelang/DiceLangEngine.java | 2 -- base/src/bjc/dicelang/Parser.java | 16 +++++++++++++++- base/src/bjc/dicelang/eval/Evaluator.java | 3 ++- 3 files changed, 17 insertions(+), 4 deletions(-) (limited to 'base') 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 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; } -- cgit v1.2.3