具有联合结构的parser.y错误

时间:2014-04-04 01:23:06

标签: c parsing bison

所以,我在使用我正在构建的编译器时遇到了解析器问题。错误在于我没有在工会或结构内部拥有成员。以下是我收到的错误代码:

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);}

1 个答案:

答案 0 :(得分:1)

令牌具有您使用%token声明分配给他们的任何联盟成员的类型 - 而不是联合类型本身。因此$2的类型为char*,您不需要.funcName - 它已经拥有funcName成员的值。