Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.HashMap;
- import java.util.Map;
- public class EvalVisitor extends LabeledExprBaseVisitor<Integer> {
- /** "memory" for our calculator; variable/value pairs go here */
- Map<String, Integer> memory = new HashMap<String, Integer>();
- /** expr NEWLINE */
- @Override
- public Integer visitPrintExpr(LabeledExprParser.PrintExprContext ctx) {
- Integer value = visit(ctx.expr()); // evaluate the expr child
- System.out.println(value); // print the result
- return 0; // return dummy value
- }
- /** INT */
- @Override
- public Integer visitInt(LabeledExprParser.IntContext ctx) {
- return Integer.valueOf(ctx.INT().getText());
- }
- /** expr op=('*'|'/') expr */
- @Override
- public Integer visitAND(LabeledExprParser.MulDivContext ctx) {
- int left = visit(ctx.expr(0)); // get value of left subexpression
- int right = visit(ctx.expr(1)); // get value of right subexpression
- if ( ctx.op.getType() == LabeledExprParser.AND ) return left && right;
- }
- /** expr op=('+'|'-') expr */
- @Override
- public Integer visitOR(LabeledExprParser.AddSubContext ctx) {
- int left = visit(ctx.expr(0)); // get value of left subexpression
- int right = visit(ctx.expr(1)); // get value of right subexpression
- if ( ctx.op.getType() == LabeledExprParser.OR ) return left || right;
- }
- /** '(' expr ')' */
- @Override
- public Integer visitParens(LabeledExprParser.ParensContext ctx) {
- return visit(ctx.expr()); // return child expr's value
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement