Parsing 还原后,解析器将进入哪个状态?

Parsing 还原后,解析器将进入哪个状态?,parsing,compiler-construction,bison,reduce,Parsing,Compiler Construction,Bison,Reduce,我使用Bison输出文件来分析解析器的状态(机器)转换,我发现当解析器推断出一个规则时,它返回到以前的状态,但有时返回一个状态,有时返回两个或三个状态。有谁能告诉我,在完成一次扣除后,决定状态机返回哪个状态的规则是什么 提前感谢。当LR(k)机器执行缩减时,它会从解析器堆栈中弹出产品的右侧,显示产品解析开始的状态。然后,它在GOTO表中查找该状态的简化非终端 因此,从解析器堆栈弹出的条目数将是减少的产品右侧的符号数。(理论上,LR解析器可以通过不将所有符号推到堆栈上进行优化,这将允许它从堆栈中弹

我使用Bison输出文件来分析解析器的状态(机器)转换,我发现当解析器推断出一个规则时,它返回到以前的状态,但有时返回一个状态,有时返回两个或三个状态。有谁能告诉我,在完成一次扣除后,决定状态机返回哪个状态的规则是什么

提前感谢。

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

因此,从解析器堆栈弹出的条目数将是减少的产品右侧的符号数。(理论上,LR解析器可以通过不将所有符号推到堆栈上进行优化,这将允许它从堆栈中弹出更少的符号。但据我所知,bison不会进行这种特殊的优化,因为这会使接口变得非常复杂。)