public class AST { private char node; // holds node operator private int val; // holds node value private AST left, right; // left and right trees public AST(int value) { node = '#'; val = value; } public AST(char op, AST arg) { node = op; left = arg; } public AST(char op, AST arg1, AST arg2) { node = op; left = arg1; right = arg2; } // Print AST as a Lisp expression public void toLisp() { switch (node) { case '#': System.out.print(" " + val); break; case '+': case '-': case '*': case '/': System.out.print(" (" + node); left.toLisp(); right.toLisp(); System.out.print(")"); break; case '%': System.out.print("(-"); left.toLisp(); System.out.print(")"); break; } } }