Beispiel #1
0
        /*****************************************************************************/
        private IExpression CreateValue(Token token)
        {
            switch (token.Type)
            {
            case Token.TokenType.Literal:
                return(new Value(token.Value));

            case Token.TokenType.Number:
                return(new NumberValue(decimal.Parse(token.Value)));

            case Token.TokenType.Text:
            {
                var lval = token.Value.ToLower();

                if (lval == "true")
                {
                    return(new Value(true));
                }

                if (lval == "false")
                {
                    return(new Value(false));
                }

                if (token.Value.StartsWith("$"))
                {
                    if (token.Value.Contains("."))
                    {
                        var index   = token.Value.IndexOf(".");
                        var varName = token.Value.Substring(1, index - 1);
                        var parts   = new MultiPartDataValue(new VariableValue(varName));

                        parts.AddPart(new DataValue(token.Value.Substring(index + 1)));

                        return(parts);
                    }

                    return(new VariableValue(token.Value.Substring(1)));
                }

                return(new DataValue(token.Value.EnsureDoesNotStartWith(".")));
            }

            default:
                throw new Transformer.SyntaxException("Unknown token type");
            }
        }