use new node types, implement new visitors

This commit is contained in:
2019-12-16 21:46:18 +01:00
parent 9e5046a20a
commit e1eb64f576

View File

@@ -66,38 +66,33 @@ public class ContextAnalysis extends KlangBaseVisitor<Node> {
} }
@Override @Override
public Node visitMultiplicationExpression(KlangParser.MultiplicationExpressionContext ctx) { public Node visitAdditionExpression(KlangParser.AdditionExpressionContext ctx) {
Node left = this.visit(ctx.atom(0)); return new AdditionExpression((Expression) this.visit(ctx.lhs), (Expression) this.visit(ctx.rhs));
Node right = this.visit(ctx.atom(1));
Node result = new MultiplicativeExpression((Expression) left, (Expression) right);
result.type = left.type; // We have to actually compute this in the future
return result;
} }
@Override @Override
public Node visitAdditiveExpression(KlangParser.AdditiveExpressionContext ctx) { public Node visitSubstractionExpression(KlangParser.SubstractionExpressionContext ctx) {
Node left = this.visit(ctx.atom(0)); return new SubstractionExpression((Expression) this.visit(ctx.lhs), (Expression) this.visit(ctx.rhs));
Node right = this.visit(ctx.atom(1)); }
Node result = new AdditiveExpression((Expression) left, (Expression) right);
result.type = left.type; // We have to actually compute this in the future @Override
return result; public Node visitMultiplicationExpression(KlangParser.MultiplicationExpressionContext ctx) {
return new MultiplicationExpression((Expression) this.visit(ctx.lhs), (Expression) this.visit(ctx.rhs));
}
@Override
public Node visitDivisionExpression(KlangParser.DivisionExpressionContext ctx) {
return new DivisionExpression((Expression) this.visit(ctx.lhs), (Expression) this.visit(ctx.rhs));
} }
@Override @Override
public Node visitModuloExpression(KlangParser.ModuloExpressionContext ctx) { public Node visitModuloExpression(KlangParser.ModuloExpressionContext ctx) {
Node left = this.visit(ctx.atom(0)); return new ModuloExpression((Expression) this.visit(ctx.lhs), (Expression) this.visit(ctx.rhs));
Node right = this.visit(ctx.atom(1));
Node result = new ModuloExpression((Expression) left, (Expression) right);
result.type = left.type; // We have to actually compute this in the future
return result;
} }
@Override @Override
public Node visitUnaryNegateExpression(KlangParser.UnaryNegateExpressionContext ctx) { public Node visitNegateExpression(KlangParser.NegateExpressionContext ctx) {
Node atom = this.visit(ctx.atom()); return new NegateExpression((Expression) this.visit(ctx.expression()));
Node result = new NegateExpression((Expression) atom);
result.type = atom.type;
return result;
} }
@Override @Override