public override void ExitExclusiveOrExpression(CParser.ExclusiveOrExpressionContext context)
 {
     if (context.exclusiveOrExpression() != null)
     {
         // exclusiveOrExpression '^' andExpression
         SafeCall(context, CExpression.BitwiseXorOperator);
     }
 }
示例#2
0
        protected ObjectDef EmitExclusiveOrExpression(CParser.ExclusiveOrExpressionContext exclusiveOrExpression)
        {
            ObjectDef returnObjectDef = null;

            if (exclusiveOrExpression.andExpression() != null)
            {
                returnObjectDef = EmitAndExpression(exclusiveOrExpression.andExpression());
            }

            if (exclusiveOrExpression.andExpression() != null &&
                exclusiveOrExpression.exclusiveOrExpression() != null)
            {
                var orObj = EmitExclusiveOrExpression(exclusiveOrExpression.exclusiveOrExpression());

                orObj.Load();
                returnObjectDef.Load();
                _generatorIL.Emit(OpCodes.Xor);

                returnObjectDef = LocalObjectDef.AllocateLocal(typeof(int));
            }

            return(returnObjectDef);
        }