因此,我的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/