1

在我的 yacc 文件中,我有如下内容:

var_declaration : type_specifier ID ';'
                | type_specifier ID '[' NUM ']' ';' ;

type_specifier : INT | VOID ;

ID、NUM、INT 和 VOID 是从 flex 返回的标记,因此 yacc 识别它们没有问题。问题是上面有'['和';'之类的东西。当这些都被flex识别出来了,应该给yacc返回什么?

4

1 回答 1

4

您可以只返回字符本身。保证令牌不会与 ASCII 字符冲突:

http://www.gnu.org/software/bison/manual/html_node/Token-Decl.html

Bison 将自动选择不会相互冲突或与 ASCII 字符冲突的代码。

所以在你的 flex 文件中,

[\[\];]     { return yytext[0]; }

没关系。

于 2009-11-17T12:28:11.463 回答