如何解决是否有一种解析器生成器可以处理所有确定性上下文无关文法?
我需要一种为所有确定性上下文无关文法生成解析器的方法。
我知道每个确定性上下文无关文法都可以由某个 LR(k) 解析器解析。问题是我需要为未知 k 的语法生成解析器。因此,要处理每个确定性上下文无关文法,k 需要是无限的。
我也知道 GLR 解析器可以解析所有上下文无关文法,无论是否确定。但我需要拒绝非确定性语法。我不确定 GLR 是否可以从输入语法中检测到该属性。
是否有一种解析器生成器可以处理所有确定性上下文无关文法,同时拒绝非确定性文法,而无需 k 输入? (唯一的输入是语法本身)
解决方法
“给定一个 CFG,决定对于任何 k 是否是 LR(k)”的问题令人惊讶地是不可判定的!这意味着任何解析器生成器都不可能总是能够采用任意语法并确定要使用的 k 选项,或者即使存在这样的 k 选项。
在实践中,我们关心的大多数语法都非常接近 LR(1),对于“相当接近”的某些定义,这就是为什么大多数解析器生成器专注于这种更简单的情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。