运算符优先级解析器:我们在哪里保留减少的令牌?

时间:2015-10-27 14:45:49

标签: compiler-construction

Op Precedence Parser有一个堆栈和一个输入缓冲区。

我相信在弹出后,“id”标记会缩减为变量“E”。

对于输入中看到数学运算符后堆栈中每个“id”标记的弹出,弹出的标记保存在哪里?

如果输入类似于id + id * id $,则到达$时,所有“id”都已被弹出。他们在哪里?

1 个答案:

答案 0 :(得分:1)

假设您的目标是构建AST,id s(和其他操作数令牌,如文字常量)将被放入由缩减创建的AST节点中。

如果您直接评估或生成三地址代码或......,则答案会略有不同。但是,大纲是相同的:运算符优先级解析是一种自下而上的解析算法,其中生产的右侧减少到相应的非终端(在左侧)当它的最后一个输入符号被读取时(并且前瞻表明正确的动作正在减少)。