Пример #1
0
        public IExpression Parse(TextSpan token, IParser parser)
        {
            var tokenStr     = parser.Scanner.GetSpanString(token);
            var variableExpr = new VariableSqlCodeExpr
            {
                Name = tokenStr
            };

            if (parser.MatchToken(SqlToken.Dot))
            {
                var nodesExpr = parser.PrefixParse(SqlToken.NODES) as SqlCodeExpr;
                parser.ConsumeToken(SqlToken.As);
                var aliasName = parser.ConsumeObjectId();
                parser.ConsumeToken(SqlToken.LParen);
                var columnName = parser.ConsumeObjectId();
                parser.ConsumeToken(SqlToken.RParen);

                return(new VariableNodesSqlCodeExpr
                {
                    Variable = variableExpr,
                    NodesExpr = nodesExpr,
                    AliasName = aliasName,
                    ColumnName = columnName
                });
            }

            return(variableExpr);
        }
Пример #2
0
        private IExpression SetVariable(TextSpan variableSpan, IParser parser)
        {
            var variableExpr = new VariableSqlCodeExpr
            {
                Name = parser.Scanner.GetSpanString(variableSpan),
            };

            var oper = parser.Scanner.ConsumeStringAny(SqlToken.Equal, SqlToken.PlusEqual);

            var valueExpr = parser.ParseExp() as SqlCodeExpr;

            valueExpr = parser.ParseLRParenExpr(valueExpr);

            return(new SetVariableSqlCodeExpr
            {
                Name = variableExpr,
                Oper = oper,
                Value = valueExpr
            });
        }