我使用Bison输出文件来分析解析器的状态(机器)转换,我发现当解析器推导出一个规则时,它会返回到先前的状态,但有时它会返回一个状态,有时它会进入两个或三个状态背部。任何人都可以告诉我在完成扣除后,确定状态机将返回哪个州的规则是什么?
提前致谢。
答案 0 :(得分:1)
当LR(k)
机器执行缩减时,它会从解析器堆栈中弹出生产的右侧,从而显示生产解析开始的状态。然后它在GOTO表中查找该状态的简化非终端。
因此,从解析器堆栈中弹出的条目数将是缩减生产的右侧的符号数。 (理论上,LR解析器可以通过不将所有符号推入堆栈来优化,这将允许它从堆栈中弹出更少的符号。但据我所知,bison不会执行此特定优化,因为它会显着复杂的界面。)