/** A class for testing the manipulation of algebraic expressions */ import java.util.*; public class A6 { /** Tests a given algebraic expression by converting it to postfix and evaluating the expression. @param s the algebraic expression in infix form (tokens separated by spaces). */ public static void testExpression(String s, Map m) { ExpressionTree t; try { t = new ExpressionTree(s); } catch (Exception e) { System.out.println("ill-formed expression"); System.out.println(); return; } StringBuffer sb = new StringBuffer(); // do in tree class?? System.out.println(t.prefix()); sb = new StringBuffer(); // do in tree class?? System.out.println(t.postfix()); System.out.println(t.evaluate(m)); System.out.println(); } /** Perform the testing. @param args is ignored */ public static void main(String[] args) { Map m = new TreeMap(); m.put(new Token("a"), new Integer(1)); m.put(new Token("b"), new Integer(2)); m.put(new Token("c"), new Integer(3)); testExpression("c * b",m); testExpression("c + x * 10",m); m.put(new Token("c"),new Integer(33)); testExpression("c + x * 10",m); testExpression("c * b + 10",m); m.put(new Token("c"),new Integer(3)); testExpression("9 - 4 * b + 10 * c",m); testExpression("9 - 4 / b + 10 * c",m); testExpression("c + x *",m); testExpression("c + * b",m); testExpression("c + x * 10 b",m); testExpression("* x + 10",m); m.put(new Token("4"), new Integer(3)); testExpression("4 - a",m); testExpression("100 + 4 / 3 + c",m); testExpression("100 + 10 / 4 * 10 + 9 - 8 / 2 + 1",m); } }