什么样的解析器是pratt解析器?

时间:2013-06-29 15:49:06

标签: parsing context-free-grammar

我正在实施普拉特的top down operator precedence解析器,我想知道它属于哪个正式类别 - 它是LR(1)吗?

1 个答案:

答案 0 :(得分:4)

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

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

所以我认为有可能为Pratt解析器提出形式主义,但据我所知,没有一个存在。