Intel C++ Compiler - 大家都知道是高端的代言人, 但实际使用它的人并不多
而在llvm出现后, 整个c++ compiler的生态系统发生了巨大的改变, 先不说利用llvm工具链开发的各种语言的..., c++并不是这块的佼佼者.
libclang默认使用callback的方式对AST进行访问, 复杂应用场景需要对节点进行反复操作时比较不便.
4.2 使用语言 - python
llvm库自带了...Python Binding
这个是官方的一个比较原始的版本, 利用llvm自带的libclang python wrapper, 和模板引擎Cheetah - python实现的一个小众模板引擎...注意因为c++是编译执行的静态语言, 所以如果编译生成的过程出错, 就不会产生正确的CXTranslationUnit对象, 首先我们要保证编译这步是正确执行的, 后续的操作才有意义....libclang本身并没有直接提供最终的Api, 但利用ClangSharp本身, 实现类似的功能并不复杂, 利用上一节中介绍过的遍历一个Cursor所有子节点的方式, 我们就能完成相关功能的封装了.