示例#1
0
        public static Literal /*!*/ Create(Text.Span position, object value, AccessType access)
        {
            Literal result;

            if (value == null)
            {
                result = new NullLiteral(position);
            }
            else if (value.GetType() == typeof(int))
            {
                result = new IntLiteral(position, (int)value);
            }
            else if (value.GetType() == typeof(string))
            {
                result = new StringLiteral(position, (string)value);
            }
            else if (value.GetType() == typeof(bool))
            {
                result = new BoolLiteral(position, (bool)value);
            }
            else if (value.GetType() == typeof(double))
            {
                result = new DoubleLiteral(position, (double)value);
            }
            else if (value.GetType() == typeof(long))
            {
                result = new LongIntLiteral(position, (long)value);
            }
            else if (value.GetType() == typeof(PhpBytes))
            {
                result = new BinaryStringLiteral(position, ((PhpBytes)value).ReadonlyData);
            }
            else
            {
                throw new ArgumentException("value");
            }

            //
            Debug.Assert(result != null);
            result.NodeCompiler <IExpressionCompiler>().Access = access;

            //
            return(result);
        }
示例#2
0
 public override void VisitBinaryStringLiteral(BinaryStringLiteral x)
 {
     _composer.ConsumeLiteral(x);
 }
示例#3
0
 virtual public void VisitBinaryStringLiteral(BinaryStringLiteral x)
 {
     // nothing
 }
示例#4
0
 override public void VisitBinaryStringLiteral(BinaryStringLiteral x)
 {
     _serializer.Serialize(typeof(BinaryStringLiteral).Name, SerializeSpan(x.Span), new NodeObj("Value", x.Value.ToString()));
 }
示例#5
0
 /// <inheritdoc />
 public override void VisitBinaryStringLiteral(BinaryStringLiteral x)
 {
     RValueResult(x);
 }
示例#6
0
 /// <inheritdoc />
 public override void VisitBinaryStringLiteral(BinaryStringLiteral x)
 {
     throw new NotSupportedException();
 }
示例#7
0
            public override void VisitBinaryStringLiteral(BinaryStringLiteral x)
            {
                VisitSpecificElementProlog();

                SerializeToken(nameof(x.Value), x.Value.ToString(), x.Span);
            }