【发布时间】:2013-06-01 05:33:17
【问题描述】:
众所周知,递归下降解析器在某些情况下可能需要指数时间;任何人都可以指出我的样本,这发生在哪里?对 PEG 的案例特别感兴趣(即有优先选择)。
【问题讨论】:
-
只有当他们回溯时。如果他们以真正的
LL(1)风格继续从左到右,他们应该是O(N)。 -
@EJP,很明显。但在大多数情况下,即使回溯也不会引入指数复杂性。我正在努力弄清楚在什么情况下会发生这种情况。
-
并非所有递归下降解析器都能表现出指数行为。例如,ANTLR 4 生成具有 [半] 优先选择的递归下降解析器,但最坏的情况是 O(n⁴)(证明是我目前正在研究的论文的一部分)。
标签: algorithm parsing language-agnostic