From 13d38a53aa15cc685ad7ed4d2e8dc65d133e467e Mon Sep 17 00:00:00 2001 From: nitrix Date: Mon, 28 Oct 2019 21:52:32 +0100 Subject: [PATCH] implement new for simplified grammar --- .../java/de/hsrm/compiler/Klang/Klang.java | 5 +++-- .../java/de/hsrm/compiler/Klang/Visitor.java | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 src/main/java/de/hsrm/compiler/Klang/Visitor.java 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