当前位置: X-MOL 学术J. Comput. Lang. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
FlowSpec: A declarative specification language for intra-procedural flow-Sensitive data-flow analysis
Journal of Computer Languages ( IF 1.7 ) Pub Date : 2019-11-23 , DOI: 10.1016/j.cola.2019.100924
Jeff Smits , Guido Wachsmuth , Eelco Visser

Data-flow analysis is the static analysis of programs to estimate their approximate run-time behavior or approximate intermediate run-time values. It is an integral part of modern language specifications and compilers. In the specification of static semantics of programming languages, the concept of data-flow allows the description of well-formedness such as definite assignment of a local variable before its first use. In the implementation of compiler back-ends, data-flow analyses inform optimizations.

Data-flow analysis has an established theoretical foundation. What lags behind is implementations of data-flow analysis in compilers, which are usually ad-hoc. This makes such implementations difficult to extend and maintain. In previous work researchers have proposed higher-level formalisms suitable for whole-program analysis in a separate tool, incremental analysis within editors, or bound to a specific intermediate representation.

In this paper, we present FlowSpec, an executable formalism for specification of data-flow analysis. FlowSpec is a domain-specific language that enables direct and concise specification of data-flow analysis for programming languages, designed to express flow-sensitive, intra-procedural analyses. We define the formal semantics of FlowSpec in terms of monotone frameworks. We describe the design of FlowSpec using examples of standard analyses. We also include a description of our implementation of FlowSpec.

In a case study we evaluate FlowSpec with the static analyses for Green-Marl, a domain-specific programming language for graph analytics.



中文翻译:

FlowSpec:一种用于过程内流的声明性规范语言-敏感数据流分析

数据流分析是对程序的静态分析,以估计程序的近似运行时行为或近似中间的运行时值。它是现代语言规范和编译器的组成部分。在编程语言的静态语义规范中,数据流的概念允许描述格式良好的对象,例如在首次使用局部变量之前对其进行明确分配。在编译器后端的实现中,数据流分析有助于优化。

数据流分析具有确定的理论基础。滞后的是编译器中数据流分析的实现,通常是临时的。这使得这样的实现难以扩展和维护。在先前的工作中,研究人员提出了适合于使用单独工具进行全程序分析,在编辑器中进行增量分析或绑定到特定的中间表示形式的高级形式主义。

在本文中,我们介绍了FlowSpec,这是一种用于规范数据流分析的可执行形式。FlowSpec是一种特定于域的语言,可为编程语言提供直接而简明的数据流分析规范,旨在表达对流敏感的过程内分析。我们根据单调框架定义FlowSpec的形式语义。我们使用标准分析示例来描述FlowSpec的设计。我们还包括对FlowSpec实现的描述。

在一个案例研究中,我们使用Green-Marl(一种用于图形分析的领域特定编程语言)的静态分析来评估FlowSpec

更新日期:2019-11-23
down
wechat
bug