×

选择器使基于集合的分析过于困难。 (英语) Zbl 1083.68016号

概要:基于集合的程序分析为程序中的所有表达式在抽象值集之间建立约束。求解约束系统会生成程序运行时值流的保守近似值。
一些实用的基于集合的分析使用显式选择器从近似集合中提取相关值。例如,如果分析需要确定过程的可能返回值,它将使用适当的选择器从过程的抽象表示中提取相关组件。
在本文中,我们表明,这种基于选择器的方法使分析的约束求解阶段过于复杂,因此无法扩展到实际的编程语言。我们通过对case-lambda(lambda的多分支版本)的全面价值流分析来证明这一说法。我们展示了理论基础和实际实施是如何变得过于复杂的。作为回应,我们提出了一种基于集合的闭包分析变体,它以更高效的方式计算等效结果。

MSC公司:

68甲15 编程语言理论

软件:

DrScheme博士
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Aiken,A.基于集合约束的程序分析简介。《计算机程序设计科学》,35(1999)79-111·Zbl 0940.68031号 ·doi:10.1016/S0167-6423(99)00007-6
[2] Aiken,A.、Wimmers,E.L.和Lakshman,T.K.使用条件类型的软类型。1994年,第21届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL'94),第163-173页。
[3] Cormen,T.H.、Leiserson,C.E.和Rivest,R.L.算法简介。麻省理工学院出版社/麦格劳·希尔,马萨诸塞州剑桥/纽约,1990年·Zbl 1158.68538号
[4] Cousot,P.和Cousot,R.抽象解释:通过构造或近似不动点对程序进行静态分析的统一格模型。1977年第四届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录,第238-252页。
[5] Dybvig,R.K.Chez Scheme用户指南。Cadence Research Systems,1998年。
[6] Dybvig,R.K.和Hieb,R.一种处理可变arity程序的新方法。Lisp和符号计算,3(1990)229-244·doi:10.1007/BF01806099
[7] Dzeng,H.和Haynes,C.T.《可变完整性程序的类型重建》。《1994年ACM Lisp和函数编程会议记录》,第239-249页。
[8] Findler,R.B.、Clements,J.、Flanagan,C.、Flatt,M.、Krishnamurthi,S.、Steckler,P.和Felleisen,M.DrScheme:方案的编程环境。函数编程杂志,12(2)(2002)159-182·Zbl 0987.68610号 ·doi:10.1017/S0956796801004208
[9] Spidey先生:静态调试器手册。莱斯大学,1995年。
[10] Flanagan,C.通过基于组件集的分析进行有效的静态调试。莱斯大学博士论文,1997年。
[11] Flanagan,C.和Felleisen,M.组件集分析。ACM事务处理。关于编程语言和系统,21(2)(1999)369–415·数字对象标识代码:10.1145/316686.316703
[12] Flatt,M.MzScheme:语言参考手册。莱斯大学。2000年,第103版。
[13] Heintze,N.基于Set的程序分析。卡内基梅隆大学博士论文,宾夕法尼亚州匹兹堡,1992年。
[14] Heintze,N.基于集合的ML程序分析。《1994年ACM LISP和函数编程会议记录》,1994年,第306–317页。
[15] Heintze,N.和McAllester,D.线性时间次传递控制流分析。1997年ACM编程语言设计与实现会议记录(PLDI’97),1997年a,第261-272页。
[16] Heintze,N.和McAllester,D.关于子类型和流分析中的立方瓶颈。《IEEE计算机科学逻辑研讨会论文集》(LICS’97),1997年b,第342-351页。
[17] Kelsey,R.、Clinger,W.和Rees,J.修订了关于算法语言方案的5份报告。高阶和符号计算,11(1)(1998)7-105。
[18] McAllester,D.和Heintze,N.论基于集合的分析的复杂性。1997年,函数编程国际会议,1997年·Zbl 1369.68102号
[19] Palsberg,J.《约束形式下的闭包分析》,《ACM程序语言和系统学报》,17(1)(1995)47-62。
[20] Palsberg,J.和Schwartzbach,M.I.面向对象类型系统,威利专业计算。威利·奇切斯特,1994年·Zbl 0821.68023号
[21] Sestoft,P.用全局变量替换函数参数。哥本哈根大学DIKU硕士论文,1988年。
[22] Scheme控制流分析的语义。1991年ACM SIGPLAN部分评估和基于语义的程序操作研讨会论文集,1991年,第190-198页。
[23] Wand,M.和Williamson,G.B.,一种用于小步流动分析的模块化、可扩展证明方法。《编程语言与系统》,第11届欧洲编程研讨会,ESOP 2002,作为欧洲软件理论与实践联合会议的一部分举行,ETAPS 2002,Proceedings,D.Le Métayer(Ed.),第2305卷,《计算机科学讲稿》,2002,第213-227页·Zbl 1077.68613号
此参考列表基于出版商或数字数学图书馆提供的信息。它的项目与zbMATH标识符启发式匹配,并且可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。