diff --git a/src/main/antlr/Expression.g4 b/src/main/antlr/Expression.g4 index 2c9ada6e94539b52887742e18dedbdc8c7422047..f005c7ef6b86f62cd352a02a3be71367a1fb1651 100644 --- a/src/main/antlr/Expression.g4 +++ b/src/main/antlr/Expression.g4 @@ -7,9 +7,10 @@ package sample; expression: expression PLUS expression # Addition | expression TIMES expression # Multiplication | INT # Integer - | '(' expression ')' # ParenthesedExpression ; - + | OPENING_PARENTHESIS expression CLOSING_PARENTHESIS # InParenthesesExpression ; +OPENING_PARENTHESIS: '('; +CLOSING_PARENTHESIS: ')'; PLUS : '+'; TIMES : '*'; INT : [0-9]+ ; \ No newline at end of file diff --git a/src/main/java/sample/visitor/EvaluationVisitor.java b/src/main/java/sample/visitor/EvaluationVisitor.java index d4935bd80e4da0c7c4ccd7a4a08ad24198724575..5543ed2b45d532f91e64ab8dd8b892f111017eed 100644 --- a/src/main/java/sample/visitor/EvaluationVisitor.java +++ b/src/main/java/sample/visitor/EvaluationVisitor.java @@ -5,6 +5,11 @@ import sample.ExpressionParser; public class EvaluationVisitor extends ExpressionBaseVisitor<Integer> { + @Override + public Integer visitInParenthesesExpression(ExpressionParser.InParenthesesExpressionContext ctx) { + return ctx.expression().accept(this); + } + @Override public Integer visitAddition(ExpressionParser.AdditionContext ctx) { return ctx.expression().getFirst().accept(this) + ctx.expression().getLast().accept(this); diff --git a/src/main/java/sample/visitor/Main.java b/src/main/java/sample/visitor/Main.java index 32a1fb2e06dc328bd3b9e8278ebd3fc12cab73af..f423ce9eb376acdb48797882fe317a3945cd0eb9 100644 --- a/src/main/java/sample/visitor/Main.java +++ b/src/main/java/sample/visitor/Main.java @@ -24,7 +24,8 @@ public class Main { EvaluationVisitor visitor = new EvaluationVisitor(); - System.out.println(visitor.visit(tree)); + Integer value = visitor.visit(tree); + System.out.println(value); //show AST in console System.out.println(tree.toStringTree(parser));