Bison解析器中的单字符文本

Bison解析器中的单字符文本,bison,Bison,我试图在bison中创建一个解析器,当我在解析器中使用某些单字符终端时,它会给我带来非常奇怪的编译错误 这项工作: nonterminal1: 'a' nonterminal2 'b'; 但这并没有编译: nonterminal1: '{' nonterminal2 '}'; 我是否应该设法摆脱这些角色?我尝试了不少谷歌搜索,浏览了O'Reilly的《flex&bison》一书,但找不到任何相关内容。反例证明: %% nonterminal1: 'a' nonterminal2 'b'; n

我试图在bison中创建一个解析器,当我在解析器中使用某些单字符终端时,它会给我带来非常奇怪的编译错误

这项工作:

nonterminal1: 'a' nonterminal2 'b';
但这并没有编译:

nonterminal1: '{' nonterminal2 '}';

我是否应该设法摆脱这些角色?我尝试了不少谷歌搜索,浏览了O'Reilly的《flex&bison》一书,但找不到任何相关内容。

反例证明:

%%
nonterminal1: 'a' nonterminal2 'b';
nonterminal1: '{' nonterminal2 '}';
nonterminal2: '.' | '!';
野牛毫无怨言地编写了这本书。我尝试了Yacc的其他3种变体;所有人都毫无怨言地编辑了它。它也在没有a/b行的情况下编译。我只测试了在文件上运行
bison
;我没有在上面测试C编译器,但是如果Bison生成的代码无效,那将是令人惊讶的

问题并不像你所说的那么简单。因此,请提供一个实际的SSCCE(),说明哪些不适合您,以及Bison发出的错误消息。如果您为野牛指定了一些选项,也请告诉我们。如果问题是将bison(一个C文件)的输出编译成一个对象文件,那么您也应该说明这一点

(为了记录在案,Bison的版本是2.3,运行在Mac OS X 10.7.5上。)


请注意,如果您使用的是某些非编程编辑器,则引号字符可能被分割成ASCII
(39;Unicode U+0027)以外的内容。这会把东西扔掉。然而,不清楚为什么一条线被咀嚼,而另一条线没有。您必须向我们显示错误消息,以便我们能够提供帮助。

您得到了哪些编译错误,以及从哪里得到的(C或bison?)。