postgresql 符号在yacc的函数中是什么意思

mrwjdhj3  于 2022-12-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(163)

我正在从posterre的github repo中阅读yacc文件,发现这一行有一个@2。我不知道如何理解这个符号的意思。

pl_block        : decl_sect K_BEGIN proc_sect exception_sect K_END opt_label
                    {
                        PLpgSQL_stmt_block *new;

                        new = palloc0(sizeof(PLpgSQL_stmt_block));

                        new->cmd_type   = PLPGSQL_STMT_BLOCK;
                        new->lineno     = plpgsql_location_to_lineno(@2);
                        new->stmtid     = ++plpgsql_curr_compile->nstatements;
                        new->label      = $1.label;
                        new->n_initvars = $1.n_initvars;
                        new->initvarnos = $1.initvarnos;
                        new->body       = $3;
                        new->exceptions = $4;

                        check_labels($1.label, $6, @6);
                        plpgsql_ns_pop();

                        $$ = (PLpgSQL_stmt *) new;
                    }
                ;
xa9qqrwz

xa9qqrwz1#

它是对应于产品中第二个符号的location结构(在本例中为K_BEGIN关键字)。

相关问题