龙源期刊网httpwwwqika
comc
基于Cla
g的AST提取结构体数据库插件的实现
作者:张红来源:《电脑知识与技术》2017年第06期
摘要:在嵌入式系统调试环境下,需将大量的结构体变量输出到诊断软件,进行解析与呈现,而结构体数量庞大,且容易变化。在软件快速迭代开发阶段,迫切需要使结构体解析过程自动化。最关键的一步,是实现结构体定义数据库的提取。此文主要研究基于Cla
g编译器,实现从前端编译结构体定义文件生成的抽象语法树中提取结构体定义信息。实验结果表明,该方法能准确的实现从结构体定义文件提取结构体定义XML数据库。
关键词:Cla
g编译器;抽象语法树;信息提取;结构体定义
中图分类号:TP393文献标识码:A文章编号:10093044(2017)06001903
Abstract:I
thedebuggi
ge
viro
me
toftheembeddedsystem,thestructurevariableswhichareverylargei
qua
titya
dmutable,shouldbeoutputtothediag
osticsoftwaretobeparseda
dprese
tedI
therapidlyiteratio
developme
tphase,itisa
urge
t
eedtomakethestructureparsi
gprocessautomatio
Itisthemostcrucialsteptorealizetheextractio
ofstructuredefi
itio
databaseThispapermai
lystudieshowtoextractstructuredefi
itio
i
formatio
fromtheabstractsy
taxtreege
eratedbythefro
tedcompilerCla
gTheexperime
talresultsshowthatthismethodca
realizethestructureXMLdatabaseformthedefi
itio
filesaccurately
Keywords:Cla
gcompiler;abstractsy
taxtree(AST);i
formatio
extractio
;structuredefi
itio
1概述
在嵌入式软件开发过程中,为了快速分析软件运行过程,定位问题,将系统运行中的各类诊断信息输出到诊断软件解析,而大量的诊断信息是基于结构体类型,在嵌入式系统开发前期,采用手工编写解析结构体的函数来实现。但结构体定义在开发调试过程中会经常发生变更,结构体解析库就需要同步更新维护,随着系统工程模块化程度提高,规模也越来越大,涉及的人员越来越多,结构体定义与解析库之间更新不同步的问题越来越频繁,维护成本越来越高,严重影响了软件开发迭代进度。
本文在开源编译框架LLVM的前端编译器Cla
g的基础上,通过开发一个Cla
g前端插件,实现从抽象语法树AST(AbstractSy
taxTree)中进行结构体数据库提取。相比于手工编写解析函数,将繁重的开发和维护工作量降到0,大大提高了工作效率。
f龙源期刊网httpwwwqika
comc
本文第二节介绍Cla
g前端插件的编写、编译与执行方法;给出结构体数据库提取插件的实现方法;第三节对本文进行总结。
2相关工作
21Cla
g前端插件开发介绍
Cla
g作为LLVM开源编译框架的一种r