我正在从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;
}
;
1条答案
按热度按时间xa9qqrwz1#
它是对应于产品中第二个符号的location结构(在本例中为
K_BEGIN
关键字)。