protected ObjectDef EmitShiftExpression(CParser.ShiftExpressionContext shiftExpression) { ObjectDef returnObjectDef = null; if (shiftExpression.additiveExpression() != null) { returnObjectDef = EmitAdditiveExpression(shiftExpression.additiveExpression()); } if (shiftExpression.additiveExpression() != null && shiftExpression.shiftExpression() != null) { var shiftObj = EmitShiftExpression(shiftExpression.shiftExpression()); shiftObj.Load(); returnObjectDef.Load(); if (shiftExpression.LeftShift() != null) { _generatorIL.Emit(OpCodes.Shl); } else if (shiftExpression.RightShift() != null) { _generatorIL.Emit(OpCodes.Shr); } returnObjectDef = LocalObjectDef.AllocateLocal(typeof(int)); } return(returnObjectDef); }
public override void ExitShiftExpression(CParser.ShiftExpressionContext context) { if (context.shiftExpression() != null) { string operation = context.GetText().Substring(context.shiftExpression().GetText().Length, 2); if (operation == "<<") { //shiftExpression '<<' additiveExpression SafeCall(context, CExpression.BitwiseLeftShiftOperator); } else if (operation == ">>") { //shiftExpression '>>' additiveExpression SafeCall(context, CExpression.BitwiseRightShiftOperator); } } }