递归下降解析与antlr
我在几个博客上看到过,比如这一个:,不知怎的,他们使用“递归下降解析”指的是手工解析器和ANTLR之类的解析器生成器递归下降解析与antlr,antlr,Antlr,我在几个博客上看到过,比如这一个:,不知怎的,他们使用“递归下降解析”指的是手工解析器和ANTLR之类的解析器生成器 对我来说,“递归下降解析”和ANTLR是两个不同的东西,一个是通用解析理论,另一个是精确的技术。但我想知道,为什么人们会将它们混合/比较在一起,这似乎很流行?我认为这只是因为手写解析器倾向于递归下降,因为这种形式与[E]BNF定义密切相关,很容易手动验证,如果需要调试的话。相反,ANTLR、Bison等工具通常不会生成递归下降解析器 因此,你是对的,比较严格来说是一种解析方法,而
对我来说,“递归下降解析”和ANTLR是两个不同的东西,一个是通用解析理论,另一个是精确的技术。但我想知道,为什么人们会将它们混合/比较在一起,这似乎很流行?我认为这只是因为手写解析器倾向于递归下降,因为这种形式与[E]BNF定义密切相关,很容易手动验证,如果需要调试的话。相反,ANTLR、Bison等工具通常不会生成递归下降解析器
因此,你是对的,比较严格来说是一种解析方法,而不是一种解析器生成工具,但在某种程度上,递归下降和手写已经成为惯用的同义词。我认为这只是因为手写解析器倾向于递归下降,因为这种形式与[E]非常相似BNF定义,非常容易手动验证,必要时还可以进行调试。相反,ANTLR、Bison等工具通常不会生成递归下降解析器
因此,您是对的,比较严格地说是一种解析方法,而不是一种解析器生成工具,但在某种程度上,递归下降和手写已经成为惯用的同义词。递归下降解析器是自顶向下解析器(LL)的一个特定子集。递归下降解析器是程序员通常手工构建的东西,因为这是我手工构建东西时的自然表达式。工具可以产生各种有趣的机器。ANTLR在过去25年的目标是生成程序员手工构建的东西,这意味着它生成递归下降解析器。生成的解析器必然更加复杂,因为它们不是人工优化的。递归下降解析器是自顶向下解析器(LL)的一个特定子集。递归下降解析器是程序员通常手工构建的东西,因为这是我手工构建东西时的自然表达式。工具可以产生各种有趣的机器。ANTLR在过去25年的目标是生成程序员手工构建的东西,这意味着它生成递归下降解析器。生成的解析器必然更加复杂,因为它们不是人工优化的