summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/v1/ast/DiceASTOptimizer.java
diff options
context:
space:
mode:
Diffstat (limited to 'dice-lang/src/bjc/dicelang/v1/ast/DiceASTOptimizer.java')
-rw-r--r--dice-lang/src/bjc/dicelang/v1/ast/DiceASTOptimizer.java55
1 files changed, 0 insertions, 55 deletions
diff --git a/dice-lang/src/bjc/dicelang/v1/ast/DiceASTOptimizer.java b/dice-lang/src/bjc/dicelang/v1/ast/DiceASTOptimizer.java
deleted file mode 100644
index fa4f0ca..0000000
--- a/dice-lang/src/bjc/dicelang/v1/ast/DiceASTOptimizer.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package bjc.dicelang.v1.ast;
-
-import bjc.dicelang.v1.ast.nodes.IDiceASTNode;
-import bjc.dicelang.v1.ast.optimization.IOptimizationPass;
-import bjc.utils.data.ITree;
-import bjc.utils.funcdata.FunctionalList;
-import bjc.utils.funcdata.IList;
-import bjc.utils.funcdata.IMap;
-
-/**
- * Contains optimizations appliable to a dice AST
- *
- * @author ben
- *
- */
-public class DiceASTOptimizer {
- private IList<IOptimizationPass> passes;
-
- /**
- * Create a new optimizer
- */
- public DiceASTOptimizer() {
- passes = new FunctionalList<>();
- }
-
- /**
- * Add a pass to the list of optimization passes
- *
- * @param pass
- * The pass to add
- */
- public void addPass(IOptimizationPass pass) {
- passes.add(pass);
- }
-
- /**
- * Optimize the passed in tree
- *
- * @param ast
- * The tree to optimize
- * @param enviroment
- * The enviroment for variable references
- * @return The optimized tree
- */
- public ITree<IDiceASTNode> optimizeTree(ITree<IDiceASTNode> ast, IMap<String, ITree<IDiceASTNode>> enviroment) {
- ITree<IDiceASTNode> optimizedTree = passes.reduceAux(ast, (currentPass, currentTree) -> {
- return currentTree.collapse(currentPass::optimizeLeaf, (operator) -> {
- return (nodes) -> {
- return currentPass.optimizeOperator(operator, nodes);
- };
- }, (tree) -> tree);
- }, (tree) -> tree);
- return optimizedTree;
- }
-}