我正在Bison的解析器上工作。在解析测试用例时,Bison给出了语法错误,说它预期$ end,但是有更多的令牌。我已经搜索了Bison手册以获得$ end,但它似乎并没有表明它将在什么条件下完全预期该令牌。我使用了
形式的递归规则%start program
%%
program
: rule
| program rule;
定义我的语法根。 Bison愉快地匹配rule
的前三次调用,但抛出第四次调用,说它预期$ end。我如何向Bison表明它应该期望和匹配更多的令牌?
答案 0 :(得分:1)
听起来你的问题在细节的某个地方。接近输入流末尾的某些内容与“规则”不匹配。打开调试并查看它告诉你的内容(如果你不熟悉它们,请查看YYDEBUG和yydebug。)
只是要清楚:当你说“第四次调用”时,我认为你的意思是“第四次独立测试用例”(事实上它是第四次无关紧要。)或者你的意思是一个匹配“规则”的输入流“四次失败,但一次匹配三次成功?