Exemple #1
0
        private AstNodeBase GetPropExpr1(AstNodeBase leftChild)
        {
            if (!_tokenizer.HasNext)
            {
                return(null);
            }
            var token = _tokenizer.NextToken();

            if (token?.Operator?.Type == OperatorType.Reference)
            {
                var         strtoken = _tokenizer.NextToken();
                AstNodeBase rchild   = new StringConstantAstNode {
                    Token = strtoken, DeductedType = typeof(string)
                };
                AstNodeBase node = new PropertyAstNode()
                {
                    Token = token, RightChild = rchild,
                };


                var nodebase = GetPropExpr1(node);
                return(nodebase ?? node);
            }
            _tokenizer.Failback(token);
            return(null);
        }
Exemple #2
0
        /// <summary>
        ///  ValExpr ::= DATE
        ///             | NUMBER
        ///             | BOOL
        ///             | PropExpr
        ///              | STRING
        ///
        /// </summary>
        /// <returns></returns>
        private AstNodeBase GetValExpr()
        {
            if (!_tokenizer.HasNext)
            {
                return(null);
            }
            var node = GetPropExpr();

            if (node != null)
            {
                return(node);
            }

            var token = _tokenizer.NextToken();

            if (token.Type == TokenType.DateLiteral)
            {
                AstNodeBase tnode = new DateConstantAstNode()
                {
                    Token = token
                };
                return(tnode);
            }
            if (token.Type == TokenType.NumberLiteral)
            {
                AstNodeBase tnode = new NumberConstantAstNode()
                {
                    Token = token
                };
                return(tnode);
            }
            if (token.Type == TokenType.StringLiteral)
            {
                AstNodeBase tnode = new StringConstantAstNode()
                {
                    Token = token
                };

                return(tnode);
            }
            _tokenizer.Failback(token);
            return(null);
        }