package org.cheffo.jeplite.optimizer; /** * Title: * Description: * Copyright: Copyright (c) 2002 * Company: * @author * @version 1.0 */ import org.cheffo.jeplite.*; import org.cheffo.jeplite.util.*; import org.cheffo.jeplite.function.*; import java.util.*; public class ExpressionOptimizer implements ParserVisitor { SimpleNode node; final HashMap constTab = new HashMap(); public ExpressionOptimizer(SimpleNode node) { this.node = node; } /** * Marks a variable name to be a constant name. */ public void addConst(String constName) { constTab.put(constName, constName); } /** * Unmarks a variable name to be a constant name. */ public void removeConst(String constName) { constTab.remove(constName); } public void clearConstants() { constTab.clear(); } public SimpleNode optimize() { return (SimpleNode)node.jjtAccept(this, null); } public Object visit(ASTFunNode node, Object data) { SimpleNode res = node; try{ boolean allConstNode = true; int numChildren = node.jjtGetNumChildren(); SimpleNode[] nodes = new SimpleNode[numChildren]; for(int i=0; i