【问题标题】: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 的编译器基础结构)。

标签: c++ multithreading visual-c++ compilation


【解决方案1】:

据我所知,微软编译器不开放做这样的转换。 也许使用 Clang 编译器会更好,你可以参考这个有趣的article 来了解如何更改树。

【讨论】:

    猜你喜欢
    • 2012-02-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    相关资源
    最近更新 更多