@@ -889,6 +889,11 @@ static void determineLanguage(List *options);
889889%token MODE_PLPGSQL_ASSIGN2
890890%token MODE_PLPGSQL_ASSIGN3
891891
892+ %token MODE_PLISQL_EXPR
893+ %token MODE_PLISQL_ASSIGN1
894+ %token MODE_PLISQL_ASSIGN2
895+ %token MODE_PLISQL_ASSIGN3
896+
892897
893898/* Precedence: lowest to highest */
894899%left UNION EXCEPT
@@ -1019,6 +1024,32 @@ parse_toplevel:
10191024 pg_yyget_extra(yyscanner)->parsetree =
10201025 list_make1(makeRawStmt((Node *) n, 0));
10211026 }
1027+ | MODE_PLISQL_EXPR PLpgSQL_Expr
1028+ {
1029+ pg_yyget_extra(yyscanner)->parsetree =
1030+ list_make1(makeRawStmt($2, 0));
1031+ }
1032+ | MODE_PLISQL_ASSIGN1 PLAssignStmt
1033+ {
1034+ PLAssignStmt *n = (PLAssignStmt *) $2;
1035+ n->nnames = 1;
1036+ pg_yyget_extra(yyscanner)->parsetree =
1037+ list_make1(makeRawStmt((Node *) n, 0));
1038+ }
1039+ | MODE_PLISQL_ASSIGN2 PLAssignStmt
1040+ {
1041+ PLAssignStmt *n = (PLAssignStmt *) $2;
1042+ n->nnames = 2;
1043+ pg_yyget_extra(yyscanner)->parsetree =
1044+ list_make1(makeRawStmt((Node *) n, 0));
1045+ }
1046+ | MODE_PLISQL_ASSIGN3 PLAssignStmt
1047+ {
1048+ PLAssignStmt *n = (PLAssignStmt *) $2;
1049+ n->nnames = 3;
1050+ pg_yyget_extra(yyscanner)->parsetree =
1051+ list_make1(makeRawStmt((Node *) n, 0));
1052+ }
10221053 ;
10231054
10241055/*
0 commit comments