diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-04-04 14:15:27 -0400 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-04-04 14:15:27 -0400 |
| commit | b1df3ff8c890bf6d4cc16fb4f28ddb7833512d71 (patch) | |
| tree | 0d60da3d18b641c053bea843d815dfb42701ab4a /dice-lang/src/examples/java | |
| parent | 66b3ea905d077577a32ed82983b0cd9e8ee10bea (diff) | |
The optimizer is working :)
Diffstat (limited to 'dice-lang/src/examples/java')
| -rw-r--r-- | dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java b/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java index 7bd85af..54f54ac 100644 --- a/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java +++ b/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java @@ -12,6 +12,7 @@ import bjc.dicelang.ast.DiceASTInliner; import bjc.dicelang.ast.DiceASTParser; import bjc.dicelang.ast.DiceASTReferenceChecker; import bjc.dicelang.ast.nodes.IDiceASTNode; +import bjc.dicelang.ast.optimization.DiceASTOptimizer; import static bjc.dicelang.examples.DiceASTLanguagePragmaHandlers.*; @@ -41,6 +42,31 @@ public class DiceASTLanguageTest { specialCommands.put("roll", DiceASTLanguageTest::rollReference); specialCommands.put("env", DiceASTLanguageTest::printEnv); specialCommands.put("inline", DiceASTLanguageTest::inlineVariable); + specialCommands.put("optimize", + DiceASTLanguageTest::optimizeReference); + } + + private static void optimizeReference(String command, + DiceASTLanguageState languageState) { + String[] args = command.split(" "); + + if (args.length != 2) { + System.err.println( + "ERROR: Optimize requires the name of the expression to optimize"); + } + + languageState.doWith((astParser, enviroment) -> { + if (!enviroment.containsKey(args[1])) { + System.err.println( + "ERROR: Attempted to optimize undefined variable " + + args[1]); + } + + AST<IDiceASTNode> optimizedTree = DiceASTOptimizer + .optimizeTree(enviroment.get(args[1]).getAst()); + + System.out.println("Optimized: " + optimizedTree); + }); } /** |
