diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-03-22 10:10:10 -0400 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-03-22 10:10:10 -0400 |
| commit | 4685955a62c430007c5c8ed2b915ffc618d30aca (patch) | |
| tree | c2455c78318f42daeaeea7db37329f35615d54cb /BJC-Utils2 | |
| parent | 6026fd73eae00849247240145e7f48f897795579 (diff) | |
Ensured Dice AST worked correctly
Diffstat (limited to 'BJC-Utils2')
| -rw-r--r-- | BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceASTLanguageTest.java | 32 |
1 files changed, 31 insertions, 1 deletions
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<IDiceASTNode> { + private GenHolder<Boolean> canUpdateLast; + + public LastChecker(GenHolder<Boolean> 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<String, BiConsumer<String, DiceASTLanguageState>> 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<Boolean> canUpdateLast = new GenHolder<>(false); + + exp.getAst().traverse(TreeLinearizationMethod.PREORDER, + new LastChecker(canUpdateLast)); + + if (canUpdateLast.unwrap((s) -> s)) { + env.put("last", exp); + } } i++; |
