implement new for simplified grammar
This commit is contained in:
@@ -19,7 +19,8 @@ public class Klang {
|
|||||||
KlangParser parser = new KlangParser(tokens);
|
KlangParser parser = new KlangParser(tokens);
|
||||||
|
|
||||||
ParseTree tree = parser.parse(); // begin parsing at init rule
|
ParseTree tree = parser.parse(); // begin parsing at init rule
|
||||||
EvalVisitor visitor = new EvalVisitor();
|
Visitor visitor = new Visitor();
|
||||||
visitor.visit(tree);
|
int result = visitor.visit(tree);
|
||||||
|
System.out.println(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
19
src/main/java/de/hsrm/compiler/Klang/Visitor.java
Normal file
19
src/main/java/de/hsrm/compiler/Klang/Visitor.java
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package de.hsrm.compiler.Klang;
|
||||||
|
|
||||||
|
public class Visitor extends KlangBaseVisitor<Integer> {
|
||||||
|
@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());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user