Пример #1
0
        public override Implementacion.Value Interpret()
        {
            var leftV  = OperadorIzquierdo.Interpret();
            var rightV = OperadorDerecho.Interpret();

            if (leftV is FloatValue && rightV is FloatValue)
            {
                return new FloatValue {
                           Value = (leftV as FloatValue).Value / (rightV as FloatValue).Value
                }
            }
            ;
            if (leftV is IntValue && rightV is FloatValue)
            {
                return new FloatValue {
                           Value = (leftV as IntValue).Value / (rightV as FloatValue).Value
                }
            }
            ;
            if (leftV is FloatValue && rightV is IntValue)
            {
                return new FloatValue {
                           Value = (leftV as FloatValue).Value / (rightV as IntValue).Value
                }
            }
            ;
            if (leftV is IntValue && rightV is IntValue)
            {
                return new FloatValue {
                           Value = (leftV as IntValue).Value / (rightV as IntValue).Value
                }
            }
            ;
            return(null);
        }
Пример #2
0
        public override Implementacion.Value Interpret()
        {
            dynamic left  = OperadorIzquierdo.Interpret();
            dynamic right = OperadorDerecho.Interpret();

            return(new BoolValue {
                Value = (left.Value || right.Value)
            });
        }
Пример #3
0
        public override Implementacion.Value Interpret()
        {
            dynamic left  = OperadorIzquierdo.Interpret();
            dynamic right = OperadorDerecho.Interpret();

            if (left is BoolValue && right is BoolValue)
            {
                return new BoolValue {
                           Value = (left.Value | right.Value)
                }
            }
            ;
            if ((left is BooleanTipo || right is IntTipo) && (right is BooleanTipo || left is IntTipo))
            {
                return new IntValue {
                           Value = (left.Value | right.Value)
                }
            }
            ;
            return(null);
        }
        public override Implementacion.Value Interpret()
        {
            dynamic left  = OperadorIzquierdo.Interpret();
            dynamic right = OperadorDerecho.Interpret();

            if (!(right is IntValue))
            {
                if (left is IntValue)
                {
                    return new IntValue {
                               Value = (right as IntValue).Value >> (left as IntValue).Value
                    }
                }
                ;
                if (left is CharValue)
                {
                    return new IntValue {
                               Value = (right as CharValue).Value >> (left as IntValue).Value
                    }
                }
                ;
            }
            return(null);
        }