错误的确切含义是什么: yacc:e - 第85行“tac.y”,一个标记出现在制作的lhs上
第85行:
T: INT { strcpy($$.type,"int"); }
|
REAL { strcpy($$.type,"real"); }
我已将属性与T
相关联%union{
struct attribute{
char name[20];
char type[20];
}attr;
}
%token <attr> ID
%token <attr> E
%token <attr> T
答案 0 :(得分:0)
这意味着它说:您正在尝试为令牌提供派生。标记来自lexcal分析,因此它们不能具有与之相关的语法规则。
我想你的意思是声明T
的<语义值类型:
%type <attr> T
您可能还需要更改E
的声明。
避免这种混淆是将ALL_CAPS用于终端(令牌)和lower-case
用于非终端的常见原因之一。