因此,我的parser.y遇到了我正在构建的编译器的问题。错误是说我在联合或结构内部没有成员。这是我收到的错误代码:

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文件中使用联合的地方:

f_def: FUNCTION ID '(' arg_list ')' ':' type '{' stat_list '}'
{create_function_info_item(&headFunctionInfo, func_arg_list_count(), $2.funcName);}

最佳答案

令牌的类型与您通过%token声明分配给它们的联合成员的类型相同-而不是联合类型本身。因此$2的类型为char*,并且您不需要.funcName-它已经保存了funcName成员的值。

关于c - union 结构的解析器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22851876/

10-16 12:21