我必须阅读bison语法文件并且不理解以下声明:
语法有一个联合声明
%union {
int i;
char *s;
}
令牌声明如下所示:
%token
TOK0 TOK1 TOK2
TOK3 TOK4 TOK5
TOK6
TOK7
%token <s> TOK8
%token <i> TOK9
我的期望是因为联合声明必须为每个令牌声明提供一个类型。但是TOK0到TOK7没有提供类型。另外,我想知道TOK0到TOK7声明的表格布局。这种布局有什么特别的意义吗?我只是找到了关于令牌声明(https://www.gnu.org/software/bison/manual/html_node/Token-Decl.html#Token-Decl)的信息来源,似乎它不包括我的用例。
答案 0 :(得分:1)
表格布局没有意义AFAIK。如果您不需要类型,则不需要为令牌分配类型。几乎总是像open_bracket,close_bracket或其他你永远不需要的东西的东西留下更少的类型。您可以将open_bracket指定为<s>
,但这不是必需的,为了便于阅读,我不会这样做。