1

我需要一种为所有确定性上下文无关语法生成解析器的方法。

我知道每个确定性的上下文无关语法都可以被一些 LR(k) 解析器解析。问题是我需要为未知k的语法生成解析器。因此,要处理每个确定性上下文无关文法,k需要是无限的。

我也知道 GLR 解析器可以解析所有上下文无关的语法,无论是否确定。但我需要拒绝非确定性语法。我不确定 GLR 是否可以从输入语法中检测到该属性。

是否有一种解析器生成器可以处理所有确定性上下文无关文法,同时拒绝非确定性文法,而不需要k输入?(唯一的输入是语法本身)

4

1 回答 1

0

令人惊讶的是,“给定一个 CFG,决定它是否是任何 k 的 LR(k)”的问题是不可判定的!这意味着任何解析器生成器都不可能总是能够采用任意语法并确定要使用的 k 选择,或者即使存在这样的 k 选择。

在实践中,我们关心的大多数语法都非常接近 LR(1),对于“相当接近”的一些定义,这就是为什么大多数解析器生成器都专注于更简单的情况。

于 2021-05-14T15:58:42.527 回答