3

我正在实现 pratt 的自上而下的运算符优先级解析器,我想知道它属于哪个正式类别 - 是 LR(1) 吗?

4

1 回答 1

5

Pratt 解析器不是 LR 解析器。而且它们也不完全是 LL 解析器。事实上,Pratt 解析器通常是用某种通用编程语言手工编码的。该技术不是基于像下推有限状态自动机这样的抽象。这使得证明关于给定 Pratt 解析器的断言变得更加困难,例如它识别特定的形式语言。

一般来说,如果语法是运算符优先级语法,Pratt 解析器可以很容易地设计为识别语言,因此它们可以被认为是运算符优先级解析的对偶,即使运算符优先级解析是自下而上的,而 Pratt 解析器名义上是自顶向下。跟踪同一语言的 Pratt 解析器和运算符优先级解析器的转换将显示相似性。

所以我想可能会为 Pratt 解析器提出一种形式主义,但据我所知,不存在。

于 2013-06-29T17:33:07.647 回答