×

元编译中未分析模式的理论和实践。 (英语) 兹比尔1191.68173

摘要:一些软件开发工具支持将用户提供的具体语法模式与应用程序源代码进行匹配,从而可以检测无效、有风险、低效或禁止的构造。当应用于编译器时,这种方法称为元编译。这些模式传统上被解析为树模式,即带有元变量的抽象语法树的片段,然后与对应于源代码解析的抽象语法树相匹配。解析模式需要使用元变量扩展应用程序编程语言的语法,这可能很困难,尤其是在遗留工具的情况下。相反,我们提出了一种新的匹配算法,它独立于编程语言,因为这些模式没有被解析,因此称为未解析模式。它与经典模式匹配一样高效,同时更易于实现。通过放弃解析模式通常启用的静态检查的可能性,它可以以低成本集成到任何基于抽象语法树的现有实用程序中。我们通过描述GNU C编译器的一个工作最小补丁,以及一个小型的独立原型punned Matchbox,并通过提供完整的形式化,包括关键算法属性的数学证明,对这项新技术的实践和理论方面进行了深入报道,类似于经典匹配的正确性和等价性。

MSC公司:

68N20型 编译与解释理论
68页第10页 搜索和排序
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] D.Engler,B.Chelf,A.Chou,S.Hallem,《使用特定于系统的程序员编写的编译器扩展检查系统规则》,载于:第四届操作系统研讨会。设计与实施,OSDI,美国圣地亚哥,2000年10月
[2] G.Back,D.Engler,MJ–构建Java错误发现分析的系统。技术报告,美国斯坦福大学,2003年9月
[3] H.Chen,D.Wagner,《MOPS:检查软件安全属性的基础设施》,载于:第九届ACM Conf.Compute。Commun公司。安全,CCS,美国华盛顿,2002年11月
[4] Henzinger,T。;贾拉(Jhala,R.)。;马朱姆达尔,R。;花蜜,G。;萨特,G。;Weimer,W.:《系统代码的临时安全证明》,Lncs 2404(2002)·Zbl 1010.68507号
[5] W.Griswold,D.Atkinson,C.McCurdy,《快速、灵活的句法模式匹配和处理》,收录于:第四届程序理解国际研讨会,1996年
[6] Paul,S.:SCRUPLE:源代码搜索的再造工程工具,协作研究高级研究中心会议,加拿大多伦多1(1992)
[7] Olender,K。;Osterweil,L.:Cecil:一种用于自动静态分析生成的排序约束语言,IEEE trans。柔和。eng.16,No.3(1990)
[8] Sellink,A。;Verhoef,C.:《原生模式》,(1998年)
[9] De Roover,C。;D'hondt,T。;Brichau,J。;诺格拉,C。;Duchien,L.:逻辑查询中使用具体源代码模板的行为相似性匹配,2007年ACM SIGPLAN部分评估和基于语义的程序操作研讨会论文集,PEPM,92-101(2007)
[10] S.Burson,G.B.Kotik,L.Z.Markosian,自动化软件再工程的程序转换方法,收录于:第14届ACM Conf.Compute。柔和。和应用,美国芝加哥,1990年
[11] Beyer,D。;Chlipala,A.J。;Henzinger,T.A。;贾拉(Jhala,R.)。;Majumdar,R.:软件验证的BLAST查询语言(2004)·Zbl 1104.68408号
[12] Tomita,M.:《自然语言的高效解析:实用系统的快速算法》(1985)
[13] J.Heering,P.R.Hendriks,P.Klint,J.Rekers,《语法定义形式主义SDF》。SIGPLAN通知,1992年
[14] Den Brand,M.G.J.Van;海林,J。;Klint,P。;Olivier,P.A.:编译语言定义:ASF+SDF编译器,ACM trans。掠夺。语言系统。24, 334-368 (1999)
[15] Visser,E.:使用具体对象语法的元程序设计,计算机科学课堂讲稿2487,299-315(2002)·Zbl 1028.68921号
[16] 斯科特·E。;约翰斯通,A。;Economopoulos,R.:BRNGLR:一种立方tomita-style GLR解析算法,Acta informat。44,第6号(2007)·Zbl 1151.68354号 ·doi:10.1007/s00236-007-0054-z
[17] S.McPeak,G.C.Necula,Elkhound:一个快速实用的GLR解析器生成器,收录于:Conf.Compiler Constructors,CC,2004年4月·Zbl 1125.68354号
[18] Earley,J.:一种高效的无上下文解析算法,Commun。ACM 13,第2号(1970年)·兹比尔0185.43401 ·数字对象标识代码:10.1145/362007.362035
[19] Volanschi,N.:Condate:检查和编译交汇处的原语言,(2006)
[20] Den Brand,M.G.J.Van;De Jong,H.A。;Klint,P。;Olivier,P.:高效注释术语,Softw.-实践。有效期30,259-291(2000)
[21] 彼得森,M.S。;韦格曼,M.N.:线性统一,计算机J。系统。科学。16,第2号(1978)·Zbl 0371.68013号 ·doi:10.1016/0022-0000(78)90043-0
[22] F.Luccio,A.M.Enriquez,P.O.Rieumont,L.Pagli,次线性时间下的精确根子树匹配。技术报告TR-01-14,意大利比萨大学,2001年
[23] Beyer,D。;卡斯塔尼亚,G。;Frisch,A.:Cduce:一种以XML为中心的通用语言,(2003)·Zbl 1315.68046号
[24] Zook,D。;黄S.S。;Smaragdakis,Y.:使用meta-aspectj生成aspectj程序,Lncs 3286(2004)
[25] Bravenboer,M。;弗吉尼亚州。;文朱,J。;Visser,E.:具有具体对象语法的元程序的广义基于类型的消歧,Lncs 3676(2005)
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。