From 4fe3f00055cc9cd15d4fd6bbf4c18e3bd40f2dae Mon Sep 17 00:00:00 2001 From: Arnaud LABOUREL <arnaud.labourel@lis-lab.fr> Date: Mon, 10 Mar 2025 15:35:41 +0100 Subject: [PATCH] corrected expression grammar --- src/main/antlr/Expression.g4 | 5 +++-- src/main/java/sample/visitor/EvaluationVisitor.java | 5 +++++ src/main/java/sample/visitor/Main.java | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/antlr/Expression.g4 b/src/main/antlr/Expression.g4 index 2c9ada6..f005c7e 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 d4935bd..5543ed2 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 32a1fb2..f423ce9 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)); -- GitLab