语义分析后拦截编译

Intercept compilation after semantic analysis

本文关键字:编译 语义分析      更新时间:2023-10-16

我正在寻找一种方法来拦截编译过程(C++程序的编译过程,在Visual Studio中,但我也对其他工具感兴趣)。

我想

(1)得到某种树结构中的语义分析结果

(2)自动插入一些新语句,

(3)将其返回给编译器以继续其工作

我会用它来检查和验证我的多线程程序是如何工作的,方法是在每条语句之前插入一些代码,以(a)发出到达代码行的信号(b)等待来自外部程序的信号(例如事件),以及(c)执行实际语句。

由于我想在每条语句之前插入这段代码,所以我需要一个自动方法。然而,使用正则表达式或一些类似的简单技术不会考虑语言的所有规则,例如,if语句可以包含一个没有{和}指示代码块的开始和结束的语句-在这种情况下,在if中的语句之前插入代码将完全改变源代码的原始含义。区分函数和结构可能也很困难。

因此,请向我推荐一些工具/技术来完成此操作

据我所知,Microsoft编译器还不能进行这样的转换。也许使用Clang编译器更好,您可以参考这篇有趣的文章来了解如何更改树。