Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
递归下降解析与antlr_Antlr - Fatal编程技术网

递归下降解析与antlr

递归下降解析与antlr,antlr,Antlr,我在几个博客上看到过,比如这一个:,不知怎的,他们使用“递归下降解析”指的是手工解析器和ANTLR之类的解析器生成器 对我来说,“递归下降解析”和ANTLR是两个不同的东西,一个是通用解析理论,另一个是精确的技术。但我想知道,为什么人们会将它们混合/比较在一起,这似乎很流行?我认为这只是因为手写解析器倾向于递归下降,因为这种形式与[E]BNF定义密切相关,很容易手动验证,如果需要调试的话。相反,ANTLR、Bison等工具通常不会生成递归下降解析器 因此,你是对的,比较严格来说是一种解析方法,而

我在几个博客上看到过,比如这一个:,不知怎的,他们使用“递归下降解析”指的是手工解析器和ANTLR之类的解析器生成器


对我来说,“递归下降解析”和ANTLR是两个不同的东西,一个是通用解析理论,另一个是精确的技术。但我想知道,为什么人们会将它们混合/比较在一起,这似乎很流行?

我认为这只是因为手写解析器倾向于递归下降,因为这种形式与[E]BNF定义密切相关,很容易手动验证,如果需要调试的话。相反,ANTLR、Bison等工具通常不会生成递归下降解析器


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

我认为这只是因为手写解析器倾向于递归下降,因为这种形式与[E]非常相似BNF定义,非常容易手动验证,必要时还可以进行调试。相反,ANTLR、Bison等工具通常不会生成递归下降解析器


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

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

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