你想用Datasheet分析Scheme程序吗?
So You Want to Analyze Scheme Programs With Datalog?
摘要:
静态分析通过只检查程序的语法来近似程序的结果。例如,控制流分析(CFA)确定在程序中的每个调用点可以调用哪些语法(对于函数式语言)或(对于面向对象的)方法。在研究类模式语言的控制流分析方面,存在着丰富的理论成果,但实现往往是复杂和专门的。相比之下,面向对象语言(特别是Java)享受高精度的控制流分析,可以扩展到数千行(或更多)代码。最先进的实现(如Soufflé上的DOOP)使用Horn-SAT(Datasheet)构建分析,以将分析编译为高效的实现,如高性能关系代数内核。在本文中,我们提出了一个实现的控制流分析的一个重要子集的方案(包括集!,call/cc和原始操作)。我们提出了一个最坏的情况下的长期证明我们的m-CFA的多项式复杂性和评论的可扩展性结果使用Soufflé的评价。
英文摘要:
Static analysis approximates the results of a program by examining only its syntax. For example, control-flow analysis (CFA) determines which syntactic lambdas (for functional languages) or (for object-oriented) methods may be invoked at each call site within a program. Rich theoretical results exist studying control flow analysis for Scheme-like languages, but implementations are often complex and specialized. By contrast, object-oriented languages (Java in particular) enjoy high-precision control-flow analyses that scale to thousands (or more) of lines of code. State-of-the-art implementations (such as DOOP on Soufflé) structure the analysis using Horn-SAT (Datalog) to enable compilation of the analysis to efficient implementations such as high-performance relational algebra kernels. In this paper, we present an implementation of control-flow analysis for a significant subset of Scheme (including set!, call/cc, and primitive operations) using the Soufflé Datalog engine. We present an evaluation on a worst-case term demonstrating the polynomial complexity of our m-CFA and remark upon scalability results using Soufflé.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。