我正在研究一些代码生成工具,而且很多复杂性来自于进行范围分析。 我经常发现自己想知道像
这样的事情我认为是时候重新考虑我的范围界限了。
我可以做所有这些分析,但我试图找到一种方法来构建API,以便它易于使用,理想情况下,可以懒得做足够的工作。
熟悉这些工具的人,以及他们在API中做对错的是什么?
答案 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。
最后,如果你想以多种语言生成代码,这是一个完整的蠕虫病毒。我做了好几次。如果您创建自己喜欢的内容,请将其发布!