Ejemplo n.º 1
0
        public override bool VisitNegExpression(NegExpressionAST negExpression)
        {
            var other = _other as NegExpressionAST;

            if (other == null)
            {
                return(false);
            }

            return(IsEqualNodes(other.Expression, negExpression.Expression));
        }
Ejemplo n.º 2
0
 public override bool VisitNegExpression(NegExpressionAST negExpression)
 {
     negExpression.CurrentScope = _scope;
     if (negExpression.Expression.Accept(this))
     {
         if (negExpression.Expression.ReturnType == TigerType.GetType <IntType>())
         {
             negExpression.ReturnType = TigerType.GetType <IntType>();
             return(true);
         }
         _errorListener.Add(new AnalysisError(string.Format(AnalysisError.LoadMessage("NegExp"), negExpression.Expression.ReturnType), negExpression.Line,
                                              negExpression.Columns));
     }
     negExpression.ReturnType = TigerType.GetType <ErrorType>();
     return(false);
 }
Ejemplo n.º 3
0
        public override Unit VisitNegExpression(NegExpressionAST negExpression)
        {
            bool temp = code.PushOnStack;

            code.PushOnStack = true;
            ILGenerator il = code.Method.GetILGenerator();

            //cargando el entero para la pila
            il.Emit(OpCodes.Ldc_I4, -1);

            negExpression.Expression.Accept(this);

            il.Emit(OpCodes.Mul);

            code.PushOnStack = temp;

            if (!code.PushOnStack)
            {
                il.Emit(OpCodes.Pop);
            }

            return(Unit.Create());
        }
Ejemplo n.º 4
0
 public abstract T VisitNegExpression(NegExpressionAST negExpression);