예제 #1
0
        private IExpression CreateFunction(TextSpan token, IParser parser)
        {
            var nameExpr = parser.ConsumeObjectId();

            parser.Scanner.Consume(SqlToken.LParen);
            var arguments = parser.ConsumeArgumentList();

            parser.Scanner.Consume(SqlToken.RParen);

            parser.Scanner.Consume(SqlToken.Returns);

            parser.Scanner.TryConsumeVariable(out var returnVariableExpr);


            var returnTypeExpr = parser.ConsumeDataType();

            parser.Scanner.Consume(SqlToken.As);

            var body = parser.ConsumeBeginBody();

            return(new CreateFunctionSqlCodeExpr
            {
                Name = nameExpr,
                Arguments = arguments,
                ReturnVariable = returnVariableExpr,
                ReturnType = returnTypeExpr,
                Body = body
            });
        }