Beispiel #1
0
        /// <summary>
        /// Convert literal of PHP to concrete value of analysis
        /// </summary>
        /// <param name="x">PHP literal</param>
        /// <returns>Concrete value that is created from PHP literal</returns>
        public ConcreteValue EvaluateLiteral(Literal x)
        {
            literal = null;
            VisitElement(x);

            Debug.Assert(literal != null, "Return value must be set after visiting of literal");
            return(literal);
        }
Beispiel #2
0
 public ModuleValue(string name, string author, string version, EvalContext context = null) : base(context)
 {
     Author       = author;
     Name         = name;
     Version      = version;
     this.author  = new ReadOnlyConcreteValue(author);
     this.version = new ReadOnlyConcreteValue(version);
     this.name    = new ReadOnlyConcreteValue(name);
 }
Beispiel #3
0
        // Does not take styling information into account...and it needs to be taken into account.
        public override int GetHashCode()
        {
            var hash = 163;

            hash *= 79 + AbstractValue.GetHashCode();
            hash *= 79 + ConcreteValue.GetHashCode();

            return(hash);
        }
            public override bool Equals(PrimitiveValue obj)
            {
                ConcreteValue <string> other = obj as ConcreteValue <string>;

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

                return(StringComparer.InvariantCultureIgnoreCase.Equals(value, other.value));
            }
            public override bool Equals(PrimitiveValue obj)
            {
                ConcreteValue <T> other = obj as ConcreteValue <T>;

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

                return(Equals(value, other.value));
            }
        public sealed override bool Equals(PrimitiveValue other)
        {
            ConcreteValue <bool> obj = other as ConcreteValue <bool>;

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

            return(value == obj.value);
        }
        public sealed override bool Equals(PrimitiveValue other)
        {
            ConcreteValue <string> obj = other as ConcreteValue <string>;

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

            StringComparer c;

            c = StringComparer.InvariantCultureIgnoreCase;

            return(c.Equals(value, obj.value));
        }
        private static TResult Open <TResult>(PrimitiveValue value) where TResult : IConvertible
        {
            ConcreteValue <TResult> r = value as ConcreteValue <TResult>;

            if (r != null)
            {
                return(r.value);
            }

            INumber n = value as INumber;

            if (n != null)
            {
                return(n.Cast <TResult>());
            }

            throw new InvalidCastException(string.Format("Unable to convert {0} to {1}", value.ValueType, typeof(TResult)));
        }
    public static bool TryOpen <TResult>(PrimitiveValue value, out TResult v)
    {
        ConcreteValue <TResult> r = value as ConcreteValue <TResult>;

        if (r != null)
        {
            v = r.value;
            return(true);
        }

        INumber n = value as INumber;

        if (n != null)
        {
            v = n.Cast <TResult>();
            return(true);
        }

        v = default(TResult);
        return(false);
    }
Beispiel #10
0
 /// <inheritdoc />
 public override void VisitBoolLiteral(BoolLiteral x)
 {
     literal = outSet.CreateBool((bool)x.Value);
 }
Beispiel #11
0
 /// <inheritdoc />
 public override void VisitStringLiteral(StringLiteral x)
 {
     literal = outSet.CreateString((string)x.Value);
 }
Beispiel #12
0
 /// <inheritdoc />
 public override void VisitDoubleLiteral(DoubleLiteral x)
 {
     literal = outSet.CreateDouble((double)x.Value);
 }
Beispiel #13
0
 /// <inheritdoc />
 public override void VisitLongIntLiteral(LongIntLiteral x)
 {
     literal = outSet.CreateLong((long)x.Value);
 }
Beispiel #14
0
 /// <inheritdoc />
 public override void VisitIntLiteral(IntLiteral x)
 {
     literal = outSet.CreateInt((int)x.Value);
 }
Beispiel #15
0
 /// <inheritdoc />
 public override void VisitNullLiteral(NullLiteral x)
 {
     literal = outSet.UndefinedValue;
 }