in src/postgres/src_pl_plpgsql_src_pl_gram.c [183:391]
static bool tok_is_keyword(int token, union YYSTYPE *lval,
int kw_token, const char *kw_str);
static void word_is_not_variable(PLword *word, int location);
static void cword_is_not_variable(PLcword *cword, int location);
static void current_token_is_not_variable(int tok);
static PLpgSQL_expr *read_sql_construct(int until,
int until2,
int until3,
const char *expected,
const char *sqlstart,
bool isexpression,
bool valid_sql,
bool trim,
int *startloc,
int *endtoken);
static PLpgSQL_expr *read_sql_expression(int until,
const char *expected);
static PLpgSQL_expr *read_sql_expression2(int until, int until2,
const char *expected,
int *endtoken);
static PLpgSQL_expr *read_sql_stmt(const char *sqlstart);
static PLpgSQL_type *read_datatype(int tok);
static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location);
static PLpgSQL_stmt_fetch *read_fetch_direction(void);
static void complete_direction(PLpgSQL_stmt_fetch *fetch,
bool *check_FROM);
static PLpgSQL_stmt *make_return_stmt(int location);
static PLpgSQL_stmt *make_return_next_stmt(int location);
static PLpgSQL_stmt *make_return_query_stmt(int location);
static PLpgSQL_stmt *make_case(int location, PLpgSQL_expr *t_expr,
List *case_when_list, List *else_stmts);
static char *NameOfDatum(PLwdatum *wdatum);
static void check_assignable(PLpgSQL_datum *datum, int location);
static void read_into_target(PLpgSQL_rec **rec, PLpgSQL_row **row,
bool *strict);
static PLpgSQL_row *read_into_scalar_list(char *initial_name,
PLpgSQL_datum *initial_datum,
int initial_location);
static PLpgSQL_row *make_scalar_list1(char *initial_name,
PLpgSQL_datum *initial_datum,
int lineno, int location);
static void check_sql_expr(const char *stmt, int location,
int leaderlen);
static void plpgsql_sql_error_callback(void *arg);
static PLpgSQL_type *parse_datatype(const char *string, int location);
static void check_labels(const char *start_label,
const char *end_label,
int end_location);
static PLpgSQL_expr *read_cursor_args(PLpgSQL_var *cursor,
int until, const char *expected);
static List *read_raise_options(void);
static void check_raise_parameters(PLpgSQL_stmt_raise *stmt);
#line 189 "pl_gram.c" /* yacc.c:339 */
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
# define YY_NULLPTR nullptr
# else
# define YY_NULLPTR 0
# endif
# endif
/* Enabling verbose error messages. */
#ifdef YYERROR_VERBOSE
# undef YYERROR_VERBOSE
# define YYERROR_VERBOSE 1
#else
# define YYERROR_VERBOSE 0
#endif
/* In a future release of Bison, this section will be replaced
by #include "pl_gram.h". */
#ifndef YY_PLPGSQL_YY_PL_GRAM_H_INCLUDED
# define YY_PLPGSQL_YY_PL_GRAM_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
extern int plpgsql_yydebug;
#endif
/* Token type. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
IDENT = 258,
FCONST = 259,
SCONST = 260,
BCONST = 261,
XCONST = 262,
Op = 263,
ICONST = 264,
PARAM = 265,
TYPECAST = 266,
DOT_DOT = 267,
COLON_EQUALS = 268,
EQUALS_GREATER = 269,
LESS_EQUALS = 270,
GREATER_EQUALS = 271,
NOT_EQUALS = 272,
T_WORD = 273,
T_CWORD = 274,
T_DATUM = 275,
LESS_LESS = 276,
GREATER_GREATER = 277,
K_ABSOLUTE = 278,
K_ALIAS = 279,
K_ALL = 280,
K_ARRAY = 281,
K_ASSERT = 282,
K_BACKWARD = 283,
K_BEGIN = 284,
K_BY = 285,
K_CASE = 286,
K_CLOSE = 287,
K_COLLATE = 288,
K_COLUMN = 289,
K_COLUMN_NAME = 290,
K_CONSTANT = 291,
K_CONSTRAINT = 292,
K_CONSTRAINT_NAME = 293,
K_CONTINUE = 294,
K_CURRENT = 295,
K_CURSOR = 296,
K_DATATYPE = 297,
K_DEBUG = 298,
K_DECLARE = 299,
K_DEFAULT = 300,
K_DETAIL = 301,
K_DIAGNOSTICS = 302,
K_DUMP = 303,
K_ELSE = 304,
K_ELSIF = 305,
K_END = 306,
K_ERRCODE = 307,
K_ERROR = 308,
K_EXCEPTION = 309,
K_EXECUTE = 310,
K_EXIT = 311,
K_FETCH = 312,
K_FIRST = 313,
K_FOR = 314,
K_FOREACH = 315,
K_FORWARD = 316,
K_FROM = 317,
K_GET = 318,
K_HINT = 319,
K_IF = 320,
K_IMPORT = 321,
K_IN = 322,
K_INFO = 323,
K_INSERT = 324,
K_INTO = 325,
K_IS = 326,
K_LAST = 327,
K_LOG = 328,
K_LOOP = 329,
K_MESSAGE = 330,
K_MESSAGE_TEXT = 331,
K_MOVE = 332,
K_NEXT = 333,
K_NO = 334,
K_NOT = 335,
K_NOTICE = 336,
K_NULL = 337,
K_OPEN = 338,
K_OPTION = 339,
K_OR = 340,
K_PERFORM = 341,
K_PG_CONTEXT = 342,
K_PG_DATATYPE_NAME = 343,
K_PG_EXCEPTION_CONTEXT = 344,
K_PG_EXCEPTION_DETAIL = 345,
K_PG_EXCEPTION_HINT = 346,
K_PRINT_STRICT_PARAMS = 347,
K_PRIOR = 348,
K_QUERY = 349,
K_RAISE = 350,
K_RELATIVE = 351,
K_RESULT_OID = 352,
K_RETURN = 353,
K_RETURNED_SQLSTATE = 354,
K_REVERSE = 355,
K_ROW_COUNT = 356,
K_ROWTYPE = 357,
K_SCHEMA = 358,
K_SCHEMA_NAME = 359,
K_SCROLL = 360,
K_SLICE = 361,
K_SQLSTATE = 362,
K_STACKED = 363,
K_STRICT = 364,
K_TABLE = 365,
K_TABLE_NAME = 366,
K_THEN = 367,
K_TO = 368,
K_TYPE = 369,
K_USE_COLUMN = 370,
K_USE_VARIABLE = 371,
K_USING = 372,
K_VARIABLE_CONFLICT = 373,
K_WARNING = 374,
K_WHEN = 375,
K_WHILE = 376
};