语义分析后拦截编译
Posted
技术标签:
【中文标题】语义分析后拦截编译【英文标题】:Intercept compilation after semantic analysis 【发布时间】:2016-05-31 12:04:27 【问题描述】:我正在寻找一种拦截编译过程的方法(C++ 程序,在 Visual Studio 中,但我也对其他工具感兴趣)。
我愿意
(1)得到某种树形结构的语义分析结果
(2) 自动插入一些新语句并
(3) 将其交还给编译器以继续其工作。
我会用它来检查和验证我的多线程程序是如何工作的(c) 执行实际的语句。
由于我想在每条语句之前插入这段代码,我需要一个自动方法。但是,使用正则表达式或一些类似的简单技术不会考虑语言的所有规则,例如if 语句可以包含单个语句,而没有 和 指示代码块的开始和结束 - 在这种情况下,在 if 语句之前插入代码将完全改变源的原始含义。区分函数和结构也可能很困难。
所以,请向我推荐一些工具/技术来做到这一点。
【问题讨论】:
不要认为微软会记录任何类似的东西。一个不同的起点可能是clang,但它可能会大量工作。 @BoPersson:嗯,这正是 LLVM 设计允许的那种工作,不是吗? (OP:LLVM 是支持 clang 的编译器基础结构)。 【参考方案1】:据我所知,微软编译器不开放做这样的转换。 也许使用 Clang 编译器会更好,你可以参考这个有趣的article 来了解如何更改树。
【讨论】:
以上是关于语义分析后拦截编译的主要内容,如果未能解决你的问题,请参考以下文章