protected ObjectDef EmitAdditiveExpression(CParser.AdditiveExpressionContext additiveExpression) { ObjectDef returnObjectDef = null; if (additiveExpression.multiplicativeExpression() != null) { returnObjectDef = EmitMultiplicativeExpression(additiveExpression.multiplicativeExpression()); } if (additiveExpression.multiplicativeExpression() != null && additiveExpression.additiveExpression() != null) { var additiveObj = EmitAdditiveExpression(additiveExpression.additiveExpression()); additiveObj.Load(); returnObjectDef.Load(); if (additiveExpression.Plus() != null) { _generatorIL.Emit(OpCodes.Add); } else if (additiveExpression.Minus() != null) { _generatorIL.Emit(OpCodes.Sub); } returnObjectDef = LocalObjectDef.AllocateLocal(typeof(int)); } return(returnObjectDef); }
public override void ExitAdditiveExpression(CParser.AdditiveExpressionContext context) { if (context.additiveExpression() != null) { string operation = context.GetText().Substring(context.additiveExpression().GetText().Length, 1); if (operation == "+") { //additiveExpression '+' multiplicativeExpression SafeCall(context, CExpression.AdditionOperator); } else if (operation == "-") { //additiveExpression '-' multiplicativeExpression SafeCall(context, CExpression.SubtractionOperator); } } }