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

Operator Precedence Parser: Where do we keep reduced tokens?

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

我相信在pop之后,一个"id" token被缩减为一个变量"E"。

在输入中看到数学运算符后,每次从堆栈弹出 "id" 标记,弹出的标记保存在哪里?

如果输入类似于 id+id*id$ ,则在到达 $ 时,所有 "id" 都已弹出。它们保存在哪里?

假设您的目标是构建一个 AST,ids(和其他操作数标记,如文字常量)被放入由归约创建的 AST 节点。

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