Op Precedence Parser有一个堆栈和一个输入缓冲区。
我相信在弹出后,“id”标记会缩减为变量“E”。
对于输入中看到数学运算符后堆栈中每个“id”标记的弹出,弹出的标记保存在哪里?
如果输入类似于id + id * id $,则到达$时,所有“id”都已被弹出。他们在哪里?
答案 0 :(得分:1)
假设您的目标是构建AST,id
s(和其他操作数令牌,如文字常量)将被放入由缩减创建的AST节点中。
如果您直接评估或生成三地址代码或......,则答案会略有不同。但是,大纲是相同的:运算符优先级解析是一种自下而上的解析算法,其中生产的右侧减少到相应的非终端(在左侧)当它的最后一个输入符号被读取时(并且前瞻表明正确的动作正在减少)。