use new node types, implement new visitors
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user