基于Clang的AST提取结构体数据库插件的实现.docVIP

基于Clang的AST提取结构体数据库插件的实现.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Clang的AST提取结构体数据库插件的实现   摘要:在嵌入式系统调试环境下,需将大量的结构体变量输出到诊断软件,进行解析与呈现,而结构体数量庞大,且容易变化。在软件快速迭代开发阶段,迫切需要使结构体解析过程自动化。最关键的一步,是实现结构体定义数据库的提取。此文主要研究基于Clang编译器,实现从前端编译结构体定义文件生成的抽象语法树中提取结构体定义信息。实验结果表明,该方法能准确的实现从结构体定义文件提取结构体定义XML数据库。   关键词: Clang编译器;抽象语法树;信息提取;结构体定义   中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)06-0019-03   Abstract: In the debugging environment of the embedded system, the structure variables which are very large in quantity and mutable, should be output to the diagnostic software to be parsed and presented. In the rapidly iteration development phase, it is an urgent need to make the structure parsing process automation. It is the most crucial step to realize the extraction of structure definition database. This paper mainly studies how to extract structure definition information from the abstract syntax tree generated by the fronted compiler Clang. The experimental results show that this method can realize the structure XML database form the definition files accurately.   Key words:Clang compiler; abstract syntax tree (AST); information extraction; structure definition   1 概述   在嵌入式软件开发过程中,为了快速分析软件运行过程,定位问题,将系统运行中的各类诊断信息输出到诊断软件解析,而大量的诊断信息是基于结构体类型,在嵌入式系统开发前期,采用手工编写解析结构体的函数来实现。但结构体定义在开发调试过程中会经常发生变更,结构体解析库就需要同步更新维护,随着系统工程模块化程度提高,规模也越来越大,涉及的人员越来越多,结构体定义与解析库之间更新不同步的问题越来越频繁,维护成本越来越高,严重影响了软件开发迭代进度。   本文在开源编译框架LLVM的前端编译器Clang的基础上,通过开发一个Clang前端插件,实现从抽象语法树AST(Abstract Syntax Tree)中进行结构体数据库提取。相比于手工编写解析函数,将繁重的开发和维护工作量降到0,大大提高了工作效率。   本文第二节介绍Clang 前端插件的编写、编译与执行方法;给出结构体数据库提取插件的实现方法;第三节对本文?M行总结。   2 相关工作   2.1 Clang 前端插件开发介绍   Clang作为LLVM开源编译框架的一种前端编译器,实现编译过程中的词法分析,语法分析,类型检查,中间代码生成。Clang对用户进行前端插件的开发提供了很好的支持,前端操作的切入点是抽象类FrontendAction,此接口支持在前端编译过程中执行插件定制的操作。AST消费者的切入点是抽象类ASTConsumer,此接口支持对抽象语法树的访问。   本文是研究在编译过程中从抽象语法树提取结构体定义相关的信息,面向AST消费者前端操作的抽象接口类为FrontendAction的子类ASTFrontendAction,插件中前端操作基类选择ASTFrontendAction的子类PluginASTAction。自定义的AST消费者基类选择ASTConsumer。   2.1.1 编写Clang插件   1) 定义继承自PluginASTAction的自定义类StructFrontendAction。重载三个成员函数:   ①用于创建抽象语法树的Consumer类。   ASTC

文档评论(0)

heroliuguan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档