所以,我在使用我正在构建的编译器时遇到了解析器问题。错误在于我没有在工会或结构内部拥有成员。以下是我收到的错误代码:
parser.y:123: error: request for member ‘funcName’ in something not a structure or union
然后使用我的parser.y文件中的代码:
%union {
int val;
char *funcName;
}
%token <funcName> ID
以下是我在我的parser.y文件中尝试使用union的地方:
f_def: FUNCTION ID '(' arg_list ')' ':' type '{' stat_list '}'
{create_function_info_item(&headFunctionInfo, func_arg_list_count(), $2.funcName);}
答案 0 :(得分:1)
令牌具有您使用%token
声明分配给他们的任何联盟成员的类型 - 而不是联合类型本身。因此$2
的类型为char*
,您不需要.funcName
- 它已经拥有funcName
成员的值。