public class CalculatorVisitor extends CalculatorParserBaseVisitor { @Override public Double visitTimesdiv(CalculatorParser.TimesdivContext ctx) { double left = visit(ctx.expression(0)); double right = visit(ctx.expression(1)); if (ctx.op.getType() == CalculatorParser.TIMES) { return left * right; } else { return left / right; } } @Override public Double visitPlusminus(CalculatorParser.PlusminusContext ctx) { double left = visit(ctx.expression(0)); double right = visit(ctx.expression(1)); if (ctx.op.getType() == CalculatorParser.PLUS) { return left + right; } else { return left - right; } } @Override public Double visitRealval(CalculatorParser.RealvalContext ctx) { return Double.parseDouble(ctx.REALVAL().getText()); } @Override public Double visitPival(CalculatorParser.PivalContext ctx) { return Math.PI; } @Override public Double visitParens(CalculatorParser.ParensContext ctx) { return visit(ctx.expression()); } }