public Boolean AllowLiteral(out LiteralToken literal)
        {
            var current = m_enumerator.Current;

            switch (current.Type)
            {
            case ParseEventType.Null:
                literal = new NullToken(m_fileId, current.Line, current.Column);
                m_enumerator.MoveNext();
                return(true);

            case ParseEventType.Boolean:
                literal = new BooleanToken(m_fileId, current.Line, current.Column, (Boolean)current.Value);
                m_enumerator.MoveNext();
                return(true);

            case ParseEventType.Number:
                literal = new NumberToken(m_fileId, current.Line, current.Column, (Double)current.Value);
                m_enumerator.MoveNext();
                return(true);

            case ParseEventType.String:
                literal = new StringToken(m_fileId, current.Line, current.Column, (String)current.Value);
                m_enumerator.MoveNext();
                return(true);
            }

            literal = null;
            return(false);
        }
        public void GetReservedRetunrsWhatTokenHasReserved()
        {
            ReservedIndexedCharList list = new ReservedIndexedCharList("ABC");
            Token t = new NullToken();
            list.Reserve(0, t);
            list.Reserve(2, t);

            Assert.IsTrue(list.ToStringOnlyNoneReserved().Length == 1);
            Assert.IsTrue(list.GetReserved(t) == "AC");
        }
示例#3
0
 protected T Visit(JToken token)
 {
     return(token switch
     {
         JObject jObject => Visit(jObject),
         JProperty jProperty => Visit(jProperty),
         JArray jArray => Visit(jArray),
         DoubleToken doubleToken => Visit(doubleToken),
         StringToken stringToken => Visit(stringToken),
         BooleanToken booleanToken => Visit(booleanToken),
         NullToken nullToken => Visit(nullToken),
         _ => default
     });
示例#4
0
    public override bool Parse(ExpressionCompiler compiler)
    {
        int i = compiler.Pos;

        if (base.Parse(compiler))
        {
            NullToken token = new NullToken(i);
            compiler.Parent.AddChild(token);
            return(true);
        }
        else
        {
            return(false);
        }
    }
示例#5
0
 /// <summary>
 /// Converts a value. 
 /// </summary>
 /// <returns>
 /// A converted value. If the method returns null, the valid null value is used.
 /// </returns>
 /// <param name="value">The value produced by the binding source.</param>
 /// <param name="targetType">The type of the binding target property.</param>
 /// <param name="parameter">The converter parameter to use.</param>
 /// <param name="culture">The culture to use in the converter.</param>
 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
 {
     IToken converted = new NullToken();
     int index = int.Parse(parameter.ToString());
     if (index < s_fieldData.Count)
     {
         ItemData data = s_fieldData[index];
         IToken dataToken = ((TokenTreeProperty)data.Value).Token;
         TokenTree parameters = Parameters;
         if (data.ParameterData != null)
         {
             parameters = Parameters.Clone();
             parameters.Children.AddIfMissing(new TokenTree(data.ParameterData.Name, data.ParameterData.StringValue));
         }
         converted = dataToken.Evaluate(new TokenTreeList {(TokenTree)value, parameters}, true);
     }
     ITypeToken typeToken = converted as ITypeToken;
     if (typeToken != null)
         return typeToken.Data;
     ExpressionToken expression = converted as ExpressionToken;
     if (expression?.Operator is SubstitutionOperator)
         return "";
     return converted;
 }
示例#6
0
 public override string Visit(NullToken token)
 {
     return(token.ToString());
 }
示例#7
0
文件: NullToken.cs 项目: xtuzy/PdfPig
 /// <summary>
 /// Whether two null tokens are equal.
 /// </summary>
 protected bool Equals(NullToken other)
 {
     return(Equals(Data, other.Data));
 }
示例#8
0
    public void TestNull()
    {
        ValueToken result = new NullToken();

        Assert.IsNull(result.Value);
    }