diff --git a/src/main/java/de/hsrm/compiler/Klang/Klang.java b/src/main/java/de/hsrm/compiler/Klang/Klang.java index 69ffe2c..c6a026b 100644 --- a/src/main/java/de/hsrm/compiler/Klang/Klang.java +++ b/src/main/java/de/hsrm/compiler/Klang/Klang.java @@ -19,7 +19,8 @@ public class Klang { KlangParser parser = new KlangParser(tokens); ParseTree tree = parser.parse(); // begin parsing at init rule - EvalVisitor visitor = new EvalVisitor(); - visitor.visit(tree); + Visitor visitor = new Visitor(); + int result = visitor.visit(tree); + System.out.println(result); } } diff --git a/src/main/java/de/hsrm/compiler/Klang/Visitor.java b/src/main/java/de/hsrm/compiler/Klang/Visitor.java new file mode 100644 index 0000000..2db4539 --- /dev/null +++ b/src/main/java/de/hsrm/compiler/Klang/Visitor.java @@ -0,0 +1,19 @@ +package de.hsrm.compiler.Klang; + +public class Visitor extends KlangBaseVisitor { + @Override + public Integer visitMultiplicativeExpr(KlangParser.MultiplicativeExprContext ctx) { + int result = 1; + + for (var expr: ctx.unaryExpression()) { + result *= this.visit(expr); + } + + return result; + } + + @Override + public Integer visitUnaryExpression(KlangParser.UnaryExpressionContext ctx) { + return Integer.parseInt(ctx.getText()); + } +} \ No newline at end of file