令牌声明的野牛语法

时间:2017-05-24 11:02:30

标签: token bison

我必须阅读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)的信息来源,似乎它不包括我的用例。

1 个答案:

答案 0 :(得分:1)

表格布局没有意义AFAIK。如果您不需要类型,则不需要为令牌分配类型。几乎总是像open_bracket,close_bracket或其他你永远不需要的东西的东西留下更少的类型。您可以将open_bracket指定为<s>,但这不是必需的,为了便于阅读,我不会这样做。