是否有一种解析器生成器可以处理所有确定性上下文无关语法?
Is there a type of parser generator that handles all deterministic context-free grammars?
我需要一种为所有确定性上下文无关语法生成解析器的方法。
我知道每个确定性的上下文无关文法都可以被一些 LR(k) 解析器解析。问题是我需要为未知 k 的语法生成解析器。因此,要处理每个确定性上下文无关文法,k 需要是无限的。
我还知道 GLR 解析器可以解析所有上下文无关语法,无论是否确定。但我需要拒绝非确定性语法。我不确定 GLR 是否可以从输入语法中检测到 属性。
是否有一种解析器生成器可以处理所有确定性上下文无关文法,同时拒绝非确定性文法,而不需要 k 输入? (唯一的输入是语法本身)
“给定一个 CFG,确定它是否是任何 k 的 LR(k)”的问题,令人惊讶的是,它是不可判定的!这意味着任何解析器生成器都不可能始终采用任意语法并确定要使用的 k 选项,或者即使存在这样的 k 选项也不可能。
在实践中,我们关心的大多数语法都非常接近 LR(1),对于“相当接近”的某些定义,这就是为什么大多数解析器生成器都关注更简单的情况。
我需要一种为所有确定性上下文无关语法生成解析器的方法。
我知道每个确定性的上下文无关文法都可以被一些 LR(k) 解析器解析。问题是我需要为未知 k 的语法生成解析器。因此,要处理每个确定性上下文无关文法,k 需要是无限的。
我还知道 GLR 解析器可以解析所有上下文无关语法,无论是否确定。但我需要拒绝非确定性语法。我不确定 GLR 是否可以从输入语法中检测到 属性。
是否有一种解析器生成器可以处理所有确定性上下文无关文法,同时拒绝非确定性文法,而不需要 k 输入? (唯一的输入是语法本身)
“给定一个 CFG,确定它是否是任何 k 的 LR(k)”的问题,令人惊讶的是,它是不可判定的!这意味着任何解析器生成器都不可能始终采用任意语法并确定要使用的 k 选项,或者即使存在这样的 k 选项也不可能。
在实践中,我们关心的大多数语法都非常接近 LR(1),对于“相当接近”的某些定义,这就是为什么大多数解析器生成器都关注更简单的情况。