最佳答案
我最近一直在尝试自学解析器(用于语言/上下文无关语法)的工作原理,除了一件事之外,大部分似乎都是有意义的。我的注意力特别集中在 LL (k)语法上,这两个主要算法似乎是 LL 解析器 (使用堆栈/解析表)和 递归下降解析器(简单地使用递归)。
据我所知,递归下降算法适用于所有 LL (k)文法,甚至可能更多,而 LL 解析器适用于所有 LL (k)文法。不过,递归下降解析器分析器的实现显然比 LL 分析器简单得多(就像 LL 分析器比 LR 分析器简单一样)。
因此,我的问题是,当使用这两种算法中的任何一种时,可能会遇到哪些优点/问题?为什么会有人选择 LL 而不是递归下降,因为它工作在相同的语法集上,并且实现起来更加棘手?