野牛代码中@的含义是什么
what is the meaning of @ in bison code
我正在阅读一些遗留的野牛代码,它有如下规则:
function_decl: name body function_end
{ if( != ->id) {
yyerror(@3, "error: function name does not match end label");
}
}
;
我了解到$i 是指规则中每个标记返回的值。但是@i 代表什么?我尝试用谷歌搜索它,但没有得到任何相关的结果。
@n
是符号$n
对应的"location"。在 bison 语法中使用任何 @
引用会自动启用位置,但生成信息仍然是扫描器的责任(在全局变量 yylloc
中)。
位置是代表终端或非终端的开始和结束的位置范围。默认情况下,它保存在具有四个字段的 struct
中:first_line
、first_column
、last_line
、last_column
。
非终端的位置对象由 bison 解析器自动创建;默认情况下,位置范围从第一个符号的开始延伸到最后一个符号的结尾。
有关详细信息,请参阅 bison manual。
我正在阅读一些遗留的野牛代码,它有如下规则:
function_decl: name body function_end
{ if( != ->id) {
yyerror(@3, "error: function name does not match end label");
}
}
;
我了解到$i 是指规则中每个标记返回的值。但是@i 代表什么?我尝试用谷歌搜索它,但没有得到任何相关的结果。
@n
是符号$n
对应的"location"。在 bison 语法中使用任何 @
引用会自动启用位置,但生成信息仍然是扫描器的责任(在全局变量 yylloc
中)。
位置是代表终端或非终端的开始和结束的位置范围。默认情况下,它保存在具有四个字段的 struct
中:first_line
、first_column
、last_line
、last_column
。
非终端的位置对象由 bison 解析器自动创建;默认情况下,位置范围从第一个符号的开始延伸到最后一个符号的结尾。
有关详细信息,请参阅 bison manual。