/// <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); }
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); }
// 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); }
/// <inheritdoc /> public override void VisitBoolLiteral(BoolLiteral x) { literal = outSet.CreateBool((bool)x.Value); }
/// <inheritdoc /> public override void VisitStringLiteral(StringLiteral x) { literal = outSet.CreateString((string)x.Value); }
/// <inheritdoc /> public override void VisitDoubleLiteral(DoubleLiteral x) { literal = outSet.CreateDouble((double)x.Value); }
/// <inheritdoc /> public override void VisitLongIntLiteral(LongIntLiteral x) { literal = outSet.CreateLong((long)x.Value); }
/// <inheritdoc /> public override void VisitIntLiteral(IntLiteral x) { literal = outSet.CreateInt((int)x.Value); }
/// <inheritdoc /> public override void VisitNullLiteral(NullLiteral x) { literal = outSet.UndefinedValue; }