使用后缀语言进行前瞻

Lookahead with postfix language

本文关键字:语言 后缀      更新时间:2023-10-16

假设我有一种类似的后缀语言

3 2 result +      // equivalent to result = 3 + 2
result 1 result + // equivalent to ++result

我应该如何实现递归下降解析器的前瞻性(我在C++中这样做)?

我不确定如何设计这样的解析算法,因为我无法仅从第一个令牌

中推断出指令的类型

我想说,您根本不需要任何前瞻性,只需要当前的令牌。

将当前令牌推到堆栈上,当您到达行的末尾(这可能是它自己的令牌)时,您会查看堆栈的顶部,看看操作是什么(当然也会将其从堆栈中弹出)。然后弹出操作所需的操作数。如果在这之后堆栈上有更多的条目,或者没有足够的操作数,那么就出现了错误。