public override Result VisitAdditiveExpression([NotNull] OclParser.AdditiveExpressionContext context) { if (context.addOperator() == null || context.addOperator().Length == 0) { return(this.VisitMultiplicativeExpression(context.multiplicativeExpression()[0])); } var startAdd = this.VisitMultiplicativeExpression(context.multiplicativeExpression()[0]); for (int i = 1; i < context.multiplicativeExpression().Length; i++) { switch (context.addOperator()[i - 1].Start.Text) { case "+": startAdd = startAdd.Add(this.VisitMultiplicativeExpression(context.multiplicativeExpression()[i])); break; case "-": startAdd = startAdd.Add(this.VisitMultiplicativeExpression(context.multiplicativeExpression()[i]).Not()); break; } } return(startAdd); }