递归下降解析和antlr

时间:2013-12-20 16:39:50

标签: antlr

我遇到了几个博客,比如这个博客:http://mortoray.com/2012/07/20/why-i-dont-use-a-parser-generator/,不知何故,他们使用“递归下降解析”指的是手工解析器与解析器生成器,如ANTLR。

对我来说,“递归下降解析”和ANTLR是两个不同的东西,一个是一般的解析理论,而另一个是精确的技术。但我想知道为什么,似乎很受欢迎,人们正在混合/比较它们?

2 个答案:

答案 0 :(得分:2)

递归下降解析器是自上而下解析器(LL)的特定子集。递归下降解析器是程序员通常手工构建的,因为这是构建我的手时的自然表达。工具可以生成各种有趣的机器。 ANTLR过去25年的目标是生成程序员手工构建,这意味着它生成递归下降解析器。必然会生成的解析器更复杂,因为它们不是由人手工优化的。

答案 1 :(得分:0)

我认为这只是因为手写解析器往往是递归下降,因为该形式紧跟[E] BNF定义并且非常容易手动验证,并且如果需要调试。相反,像ANTLR,Bison和其他工具一般不会产生递归下降解析器。

所以你是对的,因为比较严格来说是一种解析方法,而不是一种解析器生成工具,但在某种程度上,递归下降和手写已成为惯用的同义词。