%type <str> any_identifier opt_block_label opt_label option_value
-%type <list> proc_sect proc_stmts stmt_elsifs stmt_else
+%type <list> proc_sect stmt_elsifs stmt_else
%type <loop_body> loop_body
%type <stmt> proc_stmt pl_block
%type <stmt> stmt_assign stmt_if stmt_loop stmt_while stmt_exit
%token <keyword> K_RETURN
%token <keyword> K_RETURNED_SQLSTATE
%token <keyword> K_REVERSE
-%token <keyword> K_ROWTYPE
%token <keyword> K_ROW_COUNT
+%token <keyword> K_ROWTYPE
%token <keyword> K_SCHEMA
%token <keyword> K_SCHEMA_NAME
%token <keyword> K_SCROLL
proc_sect :
{ $$ = NIL; }
- | proc_stmts
- { $$ = $1; }
- ;
-
-proc_stmts : proc_stmts proc_stmt
- {
- if ($2 == NULL)
- $$ = $1;
- else
- $$ = lappend($1, $2);
- }
- | proc_stmt
- {
- if ($1 == NULL)
- $$ = NIL;
- else
- $$ = list_make1($1);
- }
+ | proc_sect proc_stmt
+ {
+ /* don't bother linking null statements into list */
+ if ($2 == NULL)
+ $$ = $1;
+ else
+ $$ = lappend($1, $2);
+ }
;
proc_stmt : pl_block ';'
| K_PG_EXCEPTION_CONTEXT
| K_PG_EXCEPTION_DETAIL
| K_PG_EXCEPTION_HINT
- | K_PRIOR
| K_PRINT_STRICT_PARAMS
+ | K_PRIOR
| K_QUERY
| K_RELATIVE
| K_RESULT_OID