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 }); }