Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. import java.util.HashMap;
  2. import java.util.Map;
  3.  
  4. public class EvalVisitor extends LabeledExprBaseVisitor<Integer> {
  5. /** "memory" for our calculator; variable/value pairs go here */
  6. Map<String, Integer> memory = new HashMap<String, Integer>();
  7.  
  8.  
  9.  
  10. /** expr NEWLINE */
  11. @Override
  12. public Integer visitPrintExpr(LabeledExprParser.PrintExprContext ctx) {
  13. Integer value = visit(ctx.expr()); // evaluate the expr child
  14. System.out.println(value); // print the result
  15. return 0; // return dummy value
  16. }
  17.  
  18. /** INT */
  19. @Override
  20. public Integer visitInt(LabeledExprParser.IntContext ctx) {
  21. return Integer.valueOf(ctx.INT().getText());
  22. }
  23.  
  24.  
  25. /** expr op=('*'|'/') expr */
  26. @Override
  27. public Integer visitAND(LabeledExprParser.MulDivContext ctx) {
  28. int left = visit(ctx.expr(0)); // get value of left subexpression
  29. int right = visit(ctx.expr(1)); // get value of right subexpression
  30. if ( ctx.op.getType() == LabeledExprParser.AND ) return left && right;
  31. }
  32.  
  33. /** expr op=('+'|'-') expr */
  34. @Override
  35. public Integer visitOR(LabeledExprParser.AddSubContext ctx) {
  36. int left = visit(ctx.expr(0)); // get value of left subexpression
  37. int right = visit(ctx.expr(1)); // get value of right subexpression
  38. if ( ctx.op.getType() == LabeledExprParser.OR ) return left || right;
  39. }
  40.  
  41. /** '(' expr ')' */
  42. @Override
  43. public Integer visitParens(LabeledExprParser.ParensContext ctx) {
  44. return visit(ctx.expr()); // return child expr's value
  45. }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement