gcc用于解析代码

zei*_*tue 5 c c++ parsing gcc

我想知道如何使用GCC作为库来解析我的程序的C/C++/Java/Objective C/Ada代码.我想绕过预处理并为用户使用前缀My编写的所有函数添加前缀.像这样Print();变得MyPrint();我也希望用变量做到这一点.

fgh*_*ghj 4

您可以在这里查看:
http://codesynthesis.com/~boris/blog/2010/05/03/parsing-cxx-with-gcc-plugin-part-1/

这是如何使用 gcc 插件接口解析 C++ 代码的描述。其他语言也应以同样的方式处理。

您也可以尝试来自 mozilla 的猪肉: https:
//wiki.mozilla.org/Pork

当我尝试它(猪肉)时,我花了大约一个小时来修复编译问题,但随后我可以编写如下脚本:

rewrite SyncPrimitiveUpgrade {
  type PRLock* => Mutex*
  call PR_NewLock() => new Mutex()
  call PR_Lock(lock) => lock->Lock()
  call PR_Unlock(lock) => lock->Unlock()
  call PR_DestroyLock(lock) => delete lock
}
Run Code Online (Sandbox Code Playgroud)

所以它找到了所有类型的 PRLock 并用 Mutex 重新电镀它,它还搜索 PR_NewLock 等函数的调用并将其替换为“new Mutex”。