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