用于示波器分析仪的良好API

时间:2008-12-19 22:28:19

标签: programming-languages code-generation scope lexical-analysis

我正在研究一些代码生成工具,而且很多复杂性来自于进行范围分析。 我经常发现自己想知道像

这样的事情
  1. 函数或块的自由变量是什么?
  2. 这个符号在哪里宣布?
  3. 这个宣言掩盖了什么?
  4. 在初始化之前是否可能出现符号的这种用法?
  5. 这个变量是否可能逃脱?
  6. 我认为是时候重新考虑我的范围界限了。

    我可以做所有这些分析,但我试图找到一种方法来构建API,以便它易于使用,理想情况下,可以懒得做足够的工作。

    熟悉这些工具的人,以及他们在API中做对错的是什么?

1 个答案:

答案 0 :(得分:2)

我对这个问题感到有些惊讶,因为我已经完成了大量的代码生成,并且很少出现范围问题(除了偶尔希望生成唯一名称)。 / p>

要回答您的示例问题,需要严格的计划分析,而不是范围界定。逃逸分析本身并不重要。初始化之前使用可能很简单或非常重要,具体取决于目标语言。

根据我的经验,用于程序分析的API 难以设计且经常是语言特定的。如果您定位的是低级语言,您可以从Machine SUIF API中学到一些有用的东西。

在你的位置,我很想窃取别人的程序分析框架George Necula和他的学生建立了CIL,这似乎是分析C代码的当前标准。 Laurie Hendren的小组已经构建了一些很好的工具来分析Java。

如果我不得不推出自己的,我会更少关注API,而更多的是关于抽象语法树的真正好的表示。

在非常有限的数据流分析领域(包括未初始化变量的问题),JoãoDias和我调整了一些nice work by Sorin Lerner, David Grove, and Craig Chambers。只发布了我们的preliminary results

最后,如果你想以多种语言生成代码,这是一个完整的蠕虫病毒。我做了好几次。如果您创建自己喜欢的内容,请将其发布!