我正在研究Bison的一个解析器。在解析测试用例时,Bison给出了一个语法错误,说它需要$end,但实际上有更多的标记。我在Bison手册中搜索了$end,但它似乎没有指出在什么情况下它会确切地期望这个令牌。我使用了以下形式的递归规则
%start program
%%
program
: rule
| program rule;来定义我的语法的根源。Bison很高兴地匹配了rule的前三个调用,但抛出了第四个,说它预期是$end。我如何向Bison表明它应该期望并匹配更多的令牌?
发布于 2011-08-05 08:39:07
听起来你的问题出在细节上。输入流末尾的内容与“规则”不匹配。打开调试,看看它告诉您什么(如果您不熟悉YYDEBUG和yydebug,请查看它们)。
为了清楚起见:当您说“第四次调用”时,我假设您指的是“第四次独立测试用例”(因此,第四次调用是无关紧要的)。或者,您的意思是匹配“规则”四次的输入流失败,而匹配三次的输入流成功?
https://stackoverflow.com/questions/6949540
复制相似问题