From 4685955a62c430007c5c8ed2b915ffc618d30aca Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Tue, 22 Mar 2016 10:10:10 -0400 Subject: Ensured Dice AST worked correctly --- .../examples/parsing/DiceASTLanguageTest.java | 32 +++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'BJC-Utils2/src/examples/java') diff --git a/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceASTLanguageTest.java b/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceASTLanguageTest.java index f8034c8..548543c 100644 --- a/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceASTLanguageTest.java +++ b/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceASTLanguageTest.java @@ -4,16 +4,39 @@ import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util.function.BiConsumer; +import java.util.function.Consumer; +import bjc.utils.data.GenHolder; import bjc.utils.dice.DiceExpressionParser; import bjc.utils.dice.IDiceExpression; import bjc.utils.dice.ast.DiceASTExpression; import bjc.utils.dice.ast.DiceASTFreezer; import bjc.utils.dice.ast.DiceASTParser; import bjc.utils.dice.ast.IDiceASTNode; +import bjc.utils.dice.ast.VariableDiceNode; +import bjc.utils.funcdata.ITreePart.TreeLinearizationMethod; import bjc.utils.parserutils.AST; public class DiceASTLanguageTest { + private static final class LastChecker + implements Consumer { + private GenHolder canUpdateLast; + + public LastChecker(GenHolder canUpdateLast) { + this.canUpdateLast = canUpdateLast; + } + + @Override + public void accept(IDiceASTNode tn) { + if (tn instanceof VariableDiceNode && ((VariableDiceNode) tn) + .getVariable().equals("last")) { + canUpdateLast.transform((s) -> false); + } else { + canUpdateLast.transform((s) -> true); + } + } + } + private static Map> acts; static { @@ -89,7 +112,14 @@ public class DiceASTLanguageTest { System.out.println("\tParsed: " + exp.toString()); System.out.println("\tSample Roll: " + exp.roll()); - env.put("last", exp); + GenHolder canUpdateLast = new GenHolder<>(false); + + exp.getAst().traverse(TreeLinearizationMethod.PREORDER, + new LastChecker(canUpdateLast)); + + if (canUpdateLast.unwrap((s) -> s)) { + env.put("last", exp); + } } i++; -- cgit v1.2.3