如何将文法转换为LR(0)文法?是否存在通用转换算法?
关于将任意文法转换为LR(0)文法的通用算法问题
不存在能够将任意给定的上下文无关文法转换为等价LR(0)文法的通用算法。
LR(0)文法是上下文无关文法的一个严格子集,它的核心要求是:文法对应的LR(0)项目集规范族中完全没有移进/归约冲突或归约/归约冲突。而大量上下文无关文法的固有结构特性决定了,无论如何改写,都无法消除这类冲突,因此根本无法转换为LR(0)文法。
你尝试将文法转换为乔姆斯基范式(CNF)的思路,并不针对LR(0)的冲突问题。CNF的主要作用是简化文法结构,方便进行特定形式化分析(比如CYK算法的实现),但它没有解决LR(0)文法要求的无冲突特性,所以转换后依然无法得到LR(0)文法是正常的结果。
内容的提问来源于stack exchange,提问作者Abdullah Garra
相关产品推荐
相关产品推荐

