我正在阅读一些用于解析 C 程序的 Bison 代码。谁能告诉我下面代码中 $7 和 $8 的含义,因为我在两种情况下只找到了 6 和 7 描述来描述枚举类型。
enum_name:
enum_key
gcc_type_attribute_opt
{
init($$);
PARSER.new_declaration(stack($1), symbol, stack($$), true);
PARSER.copy_item(to_ansi_c_declaration(stack($$)));
}
'{' enumerator_list '}'
gcc_type_attribute_opt
{
// throw in the gcc attributes
merge_types($$, $2);
merge_types($$, $7);
do_enum_members((const typet &)stack($$), stack($5));
}
| enum_key
gcc_type_attribute_opt
identifier_or_typedef_name
{
init($$);
PARSER.new_declaration(stack($1), stack($3), stack($$), true);
PARSER.copy_item(to_ansi_c_declaration(stack($$)));
}
'{' enumerator_list '}'
gcc_type_attribute_opt
{
// throw in the gcc attributes
merge_types($$, $2);
merge_types($$, $8);
do_enum_members((const typet &)stack($$), stack($6));
};