我想知道如何使用 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/