A → aB|B, B →BC|C,C →dBa|u,这个文法是不是左递归,给出详细解释
时间: 2024-01-05 18:23:11 浏览: 67
ll(1)文法分析以及消除左递归
这个文法是左递归的,因为存在一个非终结符 A,使得 A 产生式右侧的第一个符号是 A 本身。
具体地说,A -> aB | B 是一个左递归产生式,因为它的右侧第一个符号是 A。该产生式可以展开为:
A -> B A'
A' -> ε | aB A'
其中,A' 可以表示为 A 的右递归部分,即 A -> aB A'。这就是左递归的本质:递归地定义一个非终结符,直到它的产生式右侧不再以该非终结符开头。
为了消除左递归,我们需要对该文法进行改写。一种消除左递归的方法是左因子提取法。具体来说,我们可以将左递归的产生式 A -> aB | B 改写为:
A -> B A'
A' -> ε | aB A'
B -> ε | C B'
其中,B' 可以表示为 B 的右递归部分,即 B -> C B',而 C -> dBa | u。
改写后的文法如下所示:
A -> B A'
A' -> ε | aB A'
B -> ε | C B'
C -> dBa | u
这个文法不再包含左递归产生式。
阅读全文