消除左递归:A→bAc丨d 的详细步骤
消除左递归:A→bAc丨d 的详细步骤
左递归是指一个产生式左部符号可以递归地引用自身。例如,产生式 A→bAc 就存在左递归,因为 A 在产生式的左部和右部都出现了。
为了消除左递归,可以采用以下步骤:
-
将产生式拆分成左递归和非左递归两部分,即将 A→bAc 和 A→d 分开。
-
对于左递归部分 A→bAc,可以进行如下转换:
A→dA' A'→bA'c | ε
这样就将左递归消除了。
-
将原来的产生式和新的产生式合并即可得到完整的文法。
A→dA' | d A'→bA'c | ε
通过以上步骤,我们成功地将左递归产生式 A→bAc丨d 消除了,并得到了一个等价的非左递归文法。
注意: ε 代表空字符串。
原文地址: https://www.cveoy.top/t/topic/oYmv 著作权归作者所有。请勿转载和采集!