public class EvaluateVisitor implements EG2Visitor { public Object visit(SimpleNode node, Object data) { System.out.println(" :SimpleNode: "); Integer value = new Integer(0); return value; } public Object visit(ASTStart node, Object data) { System.out.println(" :ASTStart: "); return node.jjtGetChild(0).jjtAccept(this, data); } public Object visit(ASTExpression node, Object data) { System.out.println(" :ASTExpression: "); return node.jjtGetChild(0).jjtAccept(this, data); } public Object visit(ASTAdditiveExpression node, Object data) { System.out.println(" :ASTAdditiveExpression: "); Integer sum = 0; int num = node.jjtGetNumChildren(); for(int n=0; n < num; ++n) { Object v = node.jjtGetChild(n).jjtAccept(this, data); sum += (Integer)v; } return sum; } public Object visit(ASTMultiplicativeExpression node, Object data) { System.out.println(" :ASTMultiplactiveExpression: "); Integer mult = new Integer(1); int num = node.jjtGetNumChildren(); for(int n=0; n < num; ++n) { Object v = node.jjtGetChild(n).jjtAccept(this, data); mult *= (Integer)v; } return mult; } public Object visit(ASTUnaryExpression node, Object data) { System.out.println(" :ASTUnaryExpression: "); Object v = node.jjtGetChild(0).jjtAccept(this, data); Integer value = (Integer)v; return value; } public Object visit(ASTIdentifier node, Object data) { System.out.println(" :ASTIdentifier:" + node.jjtGetValue() + " "); Integer value = new Integer(0); return value; } public Object visit(ASTInteger node, Object data) { System.out.println(" :ASTInteger:" + node.jjtGetValue() + " "); Integer value = Integer.parseInt((String)node.jjtGetValue()); return value; } }