×

用于为具有冲突解决的非LR(1)文法生成最小LR(2)解析器表的IELR(3)算法。 (英语) Zbl 1209.68286号

摘要:文献中最近有人试图从工程的角度重新考虑依赖语法的软件开发。作为这项工作的一部分,我们检查了实际LR解析器表生成的最新技术中的一个缺陷。具体来说,LALR有时会生成不接受语法开发人员期望的完整语言的解析器表,但规范化LR的效率太低,特别是在语法开发期间。作为回应,许多研究人员试图开发最小LR解析器表生成算法。在本文中,我们证明了由David Pager描述并在Menhir中实现的一种众所周知的算法,即我们发现的最鲁棒的最小LR(1)实现,当给定的语法是非LR(1)时,结合解决冲突的规范,并不总是能达到规范LR(1)的全部能力。我们还详细介绍了一个原始的最小LR(1)算法IELR(一)(不充分消除LR()),它是我们实现的GNU Bison的扩展,并且没有表现出这种缺陷。使用我们的实现,我们证明了这一缺陷与几个真实世界的解析器规范的相关性,并证明了IELR(1)的可行性。最后,我们证明,如果使用规范的LR(1),无论计算机硬件的能力如何,语法开发都将受到严重阻碍。

MSC公司:

2012年第68季度 语法和重写系统
68N99型 软件理论
68甲15 编程语言理论
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] 野牛,GNU项目,http://www.gnu.org/software/bison/
[2] Gawk,GNU项目,http://www.gnu.org/software/gawk/
[3] GCC、GNU项目、,http://gcc.gnu.org/
[4] 格罗夫,GNU项目,http://www.gnu.org/software/groff/
[5] [Groff]解析角落规范、Groff邮件列表存档、,http://lists.gnu.org/archive/html/groff/2007-08/msg00051.html
[6] LRGen P.B.Mann,http://www.paulmann.com/lrgen/
[7] Menhir F.Pottier,Y.Régis-Gianas,http://caml.inia.fr/pub/ml-archives/caml-list/2005/12/a879494ee13a0389b692cf2b27da8254.en.html
[8] Honalee LR(k)算法D.R.Tribble,http://david.tribble.com/text/honalee.html
[9] 瓦尔格林德,网址:http://www.valgrind.org/
[10] 国际标准,编程语言–C++,编号ISO/IEC 14882:2003(E),美国国家标准协会,2003
[11] 单一UNIX规范,第3版,IEEE和Open Group,http://www.opengroup.org/bookstore/catalog/t041.htm(2004年4月)
[12] Menhir发布公告F.Pottier,http://caml.inria.fr/pub/ml-archives/caml-list/2005/12/a879494ee13a0389b692cf2b27da8254.en.html(2005年12月)
[13] 阿霍,A.V。;Sethi,R。;Ullman,J.D.:《汇编:原理、技术和工具》,(1986)·Zbl 1155.68020号
[14] R.Corderoy,troff.org,排字员文本处理器,http://troff.org
[15] 丹尼·J·E。;Malloy,B.A.:(IELR(1):具有冲突解决的非(LR(一)语法的实用(LR)解析器表,(2008)·Zbl 1209.68286号
[16] 德雷默,F。;Pennello,T.:(LALR(1))look-ahead集的高效计算,ACM trans。程序。语言系统。4,第4期,615-649(1982)·Zbl 0489.68074号 ·电话:10.1145/69622.357187
[17] GNU项目,Bison,2.4.1版,2008年12月
[18] 霍普克罗夫特,J.E。;Ullman,J.D.:自动机理论、语言和计算导论(1979)·Zbl 0426.68001号
[19] S.Johnson,Yacc:《另一个编译器》,摘自:Holt、Rinehart和Winston(Eds.),《UNIX程序员手册》,第2卷,美国纽约州纽约市,1979年,第353–387页
[20] Klint,P。;拉梅尔,R。;Verhoef,C.:面向语法软件的工程学科,ACM trans。柔和。eng.Methodol公司。14,第3期,331-380(2005)
[21] P.Klint,E.Visser,使用过滤器消除上下文无关语法的歧义,in:Proc。ASMICS解析理论研讨会,1994年
[22] Knuth,D.E.:关于语言从左到右的翻译,Inform。控制8,编号6,607-639(1965)·Zbl 0231.68027号
[23] R.Lämmel,语法测试,收录于:FASE,2001年
[24] 默尼克,M。;海林,J。;斯隆:何时以及如何开发特定领域的语言,ACM计算。Surv公司。37,第4号,316-344(2005)
[25] Pager,D.:构建(LR(k)解析器的车道追踪算法,(1973)·Zbl 0308.68022号
[26] Pager,D.:构造(LR(k)解析器的实用通用方法,Acta inform。7,第3期,249-268(1977年)·Zbl 0358.68116号 ·doi:10.1007/BF00290336
[27] Pager,D.:构建(LR(k)解析器的车道追踪算法及其提高效率的方法,Inform。科学。12,第1期,第19-42页(1977年)·Zbl 0357.68084号
[28] P.Pepper,LR解析=语法转换+LL解析,使LR解析更容易理解,更高效,技术代表99-05,柏林工业大学,1999
[29] 西普,S。;Soisalon Soininen,E.:解析理论。第一卷:语言和句法分析,(1988)·Zbl 0651.68007号
[30] Spector,D.:完整的(LR(1))解析器生成,SIGPLAN不是。16,第8号,58-66(1981)
[31] Spector,D.:高效的完整(LR(1))解析器生成,SIGPLAN不是。23,第12期,143-150(1988)
[32] Tomita,M.:《自然语言的高效解析:实用系统的快速算法》(1985)
[33] Den Brand,M.Van;Visser,E.:为无上下文语言生成格式化程序,ACM trans。柔和。eng.Methodol公司。5,第1期,1-41页(1996年)
[34] M.G.J.van den Brand,A.Sellink,C.Verhoef,《当前被认为有害的软件更新解析技术》,载于:IWPC,美国华盛顿特区,1998年
[35] E.Visser,语言原型的语法定义,博士论文,阿姆斯特丹大学,1997年9月·Zbl 0900.68290号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。