我们说我有像
这样的后缀语言3 2 result + // equivalent to result = 3 + 2
result 1 result + // equivalent to ++result
我应该如何为递归下降解析器实现前瞻(我在C ++中这样做)?
我不确定如何设计这样的解析算法,因为我无法从第一个令牌中推断出指令类型
答案 0 :(得分:1)
我会说你根本不需要任何前瞻,只需要当前的代币。
将当前令牌推送到堆栈,当您到达行尾(可能是它自己的令牌)时,然后查看堆栈顶部以查看操作是什么(当然从堆栈)。然后弹出操作所需的操作数。如果在此之后堆栈中有更多条目,或者如果操作数不足,则表示您有错误。