减少后,哪个状态将解析器去?

时间:2014-03-03 08:15:08

标签: parsing compiler-construction bison reduce

我使用Bison输出文件来分析解析器的状态(机器)转换,我发现当解析器推导出一个规则时,它会返回到先前的状态,但有时它会返回一个状态,有时它会进入两个或三个状态背部。任何人都可以告诉我在完成扣除后,确定状态机将返回哪个州的规则是什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

LR(k)机器执行缩减时,它会从解析器堆栈中弹出生产的右侧,从而显示生产解析开始的状态。然后它在GOTO表中查找该状态的简化非终端。

因此,从解析器堆栈中弹出的条目数将是缩减生产的右侧的符号数。 (理论上,LR解析器可以通过不将所有符号推入堆栈来优化,这将允许它从堆栈中弹出更少的符号。但据我所知,bison不会执行此特定优化,因为它会显着复杂的界面。)