全球旧事资料 分类
前端编译器,实现编译过程中的词法分析,语法分析,类型检查,中间代码生成。Cla
g对用户进行前端插件的开发提供了很好的支持,前端操作的切入点是抽象类Fro
te
dActio
,此接口支持在前端编译过程中执行插件定制的操作。AST消费者的切入点是抽象类ASTCo
sumer,此接口支持对抽象语法树的访问。
本文是研究在编译过程中从抽象语法树提取结构体定义相关的信息,面向AST消费者前端操作的抽象接口类为Fro
te
dActio
的子类ASTFro
te
dActio
,插件中前端操作基类选择ASTFro
te
dActio
的子类Plugi
ASTActio
。自定义的AST消费者基类选择ASTCo
sumer。
211编写Cla
g插件
1)定义继承自Plugi
ASTActio
的自定义类StructFro
te
dActio
。重载三个成员函数:①用于创建抽象语法树的Co
sumer类。
ASTCo
sumerCreateASTCo
sumer(CompilerI
sta
ceCI,llvm::Stri
gRef);②用于分析此插件执行命令传入的参数。
boolParseArgs(co
stCompilerI
sta
ceCI,co
ststd::vectorargs);③用于打印输出此插件执行的help信息。
voidPri
tHelp(llvm::raw_ostreamros);
2)定义继承自ASTCo
sumer的抽象语法树ASTStructCo
sumer类。
重载virtualboolHa
dleTopLevelDecl(DeclGroupRefDG),实现从抽象语法树节点中提取所需信息。为了将分析AST过程中得到的信息组织成XML文件,可在此类的构造函数中创建XML文件,并构造初始的节点框架,在析构函数中完成文件的保存与关闭。
3)注册插件
staticFro
te
dPlugi
Registry::AddX(
好听全球资料 返回顶部