中文

多项式大小的LR(k)分析器

形式语言与自动机理论 2015-11-19 v1

摘要

通常,一个 LR(k)LR(k)-文法 GG 的分析器是一个确定性下推转换器,它针对给定输入串 xL(G)x \in L(G) 逆向产生唯一的最右推导。此类分析器大小的最已知上界是 O(2GΣk+klogΣ+logG)O(2^{|G||\Sigma|^k+k\log |\Sigma| + \log |G|}),其中 G|G|Σ|\Sigma| 分别是文法 GG 和终结符字母表 Σ\Sigma 的大小。如果我们给分析器加上处理一个大小为 O(Gn)O(|G|n) 的有向图的能力(其中 nn 是输入长度),就得到了一个扩展分析器。该图用于高效并行模拟当前右句型的所有潜在最左推导,从而可以计算出输入的唯一最右推导。给定一个任意的 LR(k)LR(k)-文法 GG,我们展示了如何构造一个大小为 O(G+#LAN2kklogk)O(|G| + \#LA |N|2^k k \log k) 的扩展分析器,其中 N|N| 是非终结符号的数量,#LA\#LA 是关于文法 GG 的相关向前看符号的数量。与通常的分析器一样,该扩展分析器仅使用表作为数据结构。利用一些巧妙的数据结构并将分析时间增加一个小的常数因子,扩展分析器的大小可缩减至 O(G+#LANk2)O(|G| + \#LA|N|k^2)。分析时间为 O(ld(input)+kGn)O(ld(input) + k|G|n),其中 ld(input)ld(input) 是输入推导的长度。此外,我们构造了一个一遍分析器。

关键词

引用

@article{arxiv.1511.05770,
  title  = {On LR(k)-parsers of polynomial size},
  author = {Norbert Blum},
  journal= {arXiv preprint arXiv:1511.05770},
  year   = {2015}
}

备注

An extended abstract of this paper appeared in 37th International Colloquium, ICALP 2010, Bordeaux, France, July 2010, Proceedings, Part II, LNCS 6199, pp. 163--174, Springer-Verlag Berlin Heidelberg 2010