bison 解析器中的特定形式 $<sval>$

Specific form in bison parser $<sval>$

我正在编写编译器并查找示例我发现了以下代码:

WHILE expression{
    string endLabel = createNewLabel();

    addToOutput("\tje" + getTypeSuffixFromSymbol() + "\t" +
    getAddressFromSymbol() + ",#0,#" + endLabel + "\n");

    $<sval>$ = strdup(endLabel.c_str());
}

第一次遇到这种情况。变量 <sval><ival> 中的用途是什么?我只用 $$, ...

它是 yacc 功能的 bison 扩展,允许访问 yytype 的任何成员。你可以在这里阅读:Action Types