中文

避免捕获且卫生的程序变换(含证明)

编程语言 2014-04-24 v1

摘要

基于抽象语法树的程序变换会因引入变量捕获而损害引用完整性。当生成程序中的变量声明意外遮蔽了变量引用的预期目标时,就会发生变量捕获。现有的变换系统要么不能保证避免变量捕获,要么会妨碍变换的实现。我们提出了一种名为 name-fix 的算法,该算法通过系统地重命名变量,自动消除生成程序中的变量捕获。name-fix 由程序绑定结构的图表示引导,并需要变换源语言和目标语言的名称解析算法。name-fix 具有通用性,适用于任何支持名称起源追踪的变换系统中的任意变换。我们验证了 name-fix 的正确性,并确定了一类 name-fix 能提供卫生性的有趣变换。我们展示了 name-fix 在实现避免捕获的代入、内联、lambda 提升以及两种领域特定语言编译器中的适用性。

关键词

引用

@article{arxiv.1404.5770,
  title  = {Capture-Avoiding and Hygienic Program Transformations (incl. Proofs)},
  author = {Sebastian Erdweg and Tijs van der Storm and Yi Dai},
  journal= {arXiv preprint arXiv:1404.5770},
  year   = {2014}
}

备注

In Proceedings of European Conference on Object-Oriented Programming (ECOOP) 2014