/// <summary>
        /// Builds a sum or suntract command and adds it to current scope.
        /// Type and operands are gotten from symbol stack.
        /// Result is pushed to the symbol stack.
        /// </summary>
        private void DoPendingSum()
        {
            var op2  = _symbolStack.Pop();
            var op1  = _symbolStack.Pop();
            var oper = _operatorStack.Pop();

            Type type;

            if (CheckTypeMismatch(op1, op2, oper, out type))
            {
                // Add new symbol to scope
                var result = _varBuilder.NewVariable(type);
                _currentScope.Add(result);

                Command cmd = null;
                switch (oper)
                {
                case Operator.Sum:
                    cmd = new Sum {
                        Op1 = op1, Op2 = op2, Result = result
                    };
                    break;

                case Operator.Minus:
                    cmd = new Subtract {
                        Op1 = op1, Op2 = op2, Result = result
                    };
                    break;
                }

                // Add to  symbol stack and add command to scope's commands.
                _symbolStack.Push(result);
                _currentScope.CommandList.Commands.Add(cmd);
            }
        }
        /// <summary>
        /// Creates necessary commands to make a value negative.
        /// </summary>
        private void DoNegative()
        {
            var value = _symbolStack.Pop();

            if (value.Type != Type.Entero && value.Type != Type.Decimal)
            {
                SemErr("Esta variable no puede ser negativa.");
            }


            var zero   = _constBuilder.IntConstant("0");
            var result = _varBuilder.NewVariable(value.Type);

            var cmd = new Subtract
            {
                Op1    = zero,
                Op2    = value,
                Result = result
            };

            _currentScope.CommandList.Commands.Add(cmd);
            _symbolStack.Push(result);
        }