Clang的API发展十分迅速,其中也包括libclang和Python绑定。因此,本次推送中的示例可能不再起作用。如果想要那些基于最新的Clang的工作示例,请检查我在Github上的llvm-clang-samples repository仓库。
对于那些需要在Python中去解析和分析C代码的人,在发现pycparser后一定会很兴奋。然而,如果变成是去解析C++,pycparser并不是好的解决办法。当我被问及关于在pycparser中增加支持C++的计划时,我的回答通常是 -- 没有这样的计划,你应该去别处找找。尤其地,是在Clang中。
Clang是一款针对C,C++和Object C的编译器前端。它是由Apple支持的一款具有自由协议的开源项目,并使用它们自己的工具。连同它的父项目 -- LLVM编译器后端,Clang渐渐成为一款gcc的强大替代品。在Clang(包括LLVM)身后有着一流的开发团队,并且它的代码在开源环境下也是C++代码中设计最好的之一。Clang的发展十分积极,密切关注着最新的C++标准。
于是当我被问关于解析C++的问题的时候,我的回答总是Clang。诚然,它还存在着一些小问题。人们喜欢pycparser因为它是Python实现的,而Clang的API接口是C++,并不是最极客并友好的语言,退一步来说。