我需要能够解析一些带有注释的相对简单的C++文件,并从中生成额外的源文件。
例如,我可能会有这样的代码:
//@ service
struct MyService
{
int getVal() const;
};
我需要找到//@ service注释,并获取其后面的结构描述。
我考虑使用LLVM/Clang,因为它似乎支持在第三方应用程序中嵌入编译器/解析功能的库。但是,对于解析源代码,我真的很无知,所以我不确定我需要寻找什么,或者从哪里开始。
我了解AST是语言表示的核心,并且在Clang中有生成AST的库支持。但是,注释实际上不会成为AST的一部分,对吗?那么,如何找到特定注释标记后面结构的表示方式呢?
我不太担心处理注释出现在不适当位置的情况,因为它只用于解析专门为此应用程序编写的C++文件。但是,如果我能使其更加健壮,那就更好了。
#define service
和service struct MyService
或#define service struct
和service MyService
。Qt扩展就是这样工作的。 - Jan Hudec