c++ - gcc 用于解析代码

标签 c++ c parsing gcc

我想知道如何使用 GCC 作为库来为我的程序解析 C/C++/Java/Objective C/Ada 代码。 我想绕过预处理并为用户编写的所有函数添加前缀 My。 就像这样 Print(); 变成了 MyPrint(); 我也希望对变量执行此操作。

最佳答案

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

这是关于如何使用gcc插件接口(interface)解析C++代码的说明。其他语言同理。

你也可以试试 mozilla 的 pig 肉:
https://wiki.mozilla.org/Pork

当我尝试它(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
}

所以它找到了所有类型的 PRLock 并用 Mutex 替换它,它还搜索函数调用 喜欢 PR_NewLock 并将其替换为“新互斥体”。

关于c++ - gcc 用于解析代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8144793/

相关文章:

json - 使用 to 将大型 XML 文件转换为 JSON 以存储在 MongoDB 中

c++ - strlen 未在此范围内声明 - C++

C++ 返回对动态分配对象的引用

c++ - 每次启动我的 C++ 程序时,如何将我的数据输出到一个新的 csv 文件中?

c - 链表C编程错误插入新元素

c - 该程序在我的电脑上运行良好,但当我将其提交到编码站点时,它说存在段错误。有错误请指出

c - 如何在 C 中动态分配一个字符串数组?

javascript - 使用 Date.parse 对有效日期的确定不一致

java - 由 DefaultMutableTreeNode 制作的遍历树

c++ - 设计一个可以在 if 语句中测试的类?