[发明专利]基于关键词Trie树消除GCC抽象语法树冗余的方法在审
申请号: | 201911136042.7 | 申请日: | 2019-11-19 |
公开(公告)号: | CN110928550A | 公开(公告)日: | 2020-03-27 |
发明(设计)人: | 韩磊;胡建鹏 | 申请(专利权)人: | 上海工程技术大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 上海唯智赢专利代理事务所(普通合伙) 31293 | 代理人: | 刘朵朵 |
地址: | 201620 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 关键词 trie 消除 gcc 抽象 语法 冗余 方法 | ||
本发明公开了基于关键词Trie树消除GCC抽象语法树冗余的方法,步骤为:通过GCC编译器编译源码文件得到原始数据;对原始数据进行文本预处理即对原始数据进行数据清洗后根据GCC抽象语法树节点自上而下递增存储的逻辑结构将一节点的数据存储为一单元;用有用节点信息关键词Trie树对上步所得数据进行检索输出有效节点及其子节点信息,完成GCC抽象语法树冗余消除;关键词Trie树是依据有用节点关键词词库建立的,有用节点关键词词库是通过对基准文本库中的文本进行文本预处理后构造得到的,其包括GCC抽象语法树文本文件的编译产生的有效节点类型。本发明的处理过程简单,数据处理量小,处理速度快,去除冗余效率及查准率高。
技术领域
本发明属于计算机应用技术领域,涉及一种基于关键词Trie树消除GCC抽象语法树冗余的方法。
背景技术
GCC(GNU Compiler Collection)编译器是由GNU开发的编程语言编译器,能够支持C、C++、Fortran、Java等主流程序设计语言,被多种Unix操作系统如Linux、Mac OS X等采纳为标准编译器。抽象语法树(Abstract Syntax Tree,AST)是编译系统中最常见的一种以树形结构为表现形式的中间表示,用来对前端语言的源代码进行规范化的抽象表示。GCCAST作为一种良好的中间表示,包含有显示源程序结构所需的全部静态信息,并且具有较高的存储效率。抽象语法树的用途十分广泛,在编程语言的词法语法分析阶段、静态代码抄袭检测、程序切片算法提取特征、检测缓冲区溢出漏洞等程序分析领域占据着至关重要的地位。
GCC抽象语法树文本文件是指C语言源文件经过GCC编译器编译后产生的以文本结构进行存储的语法树文件。在GCC对源码的编译过程中,会对每一个源文件生成一个抽象语法树文本文件,使用编译指令“gcc–fdump-translation-unit-C”或者“gcc–fdump-tree-all”均可得到以“源码文件名001t.tu”为文件名的抽象语法树文件。
由于GCC编译源码生成抽象语法树文本文件是为了完成语法结构以及寄存器转移语言的转化过程,因此在设计之初就考虑到底层优化等功能,也因此增加了大量中间节点。此举虽然提高了一定的完备性及优化性,但是随之而来的大量冗余信息却导致该文本不利于直接分析以及生成AST。在实际实验中,一个6行的打印“Hello World”的C语言源码会生成514KB的抽象语法树文件,这其中包含了大量编译中间节点信息用以辅助编译,如抽象语法树文件会默认引入预处理指令#include中的全部函数、结构体、变量等编译信息,其中多数信息在源码中没有涉及也不利于代码的后续分析,增加了对源代码分析时的内存消耗,降低了分析效率。因此为了方便后续的数据分析以及降低源码分析时的内存消耗、减少时空消耗,对GCC抽象语法树文件进行消除冗余信息就显得必不可少了。
因此,开发一种消除GCC抽象语法树冗余的方法极具现实意义。
发明内容
本发明的目的在于克服现有技术源码分析的内存消耗大且分析效率低的缺陷,提供基于关键词Trie树消除GCC抽象语法树冗余的方法,进而降低源码分析的内存消耗,提高分析效率。Tire树(又称字典树、关键词查找树)是实现网络信息检索的一种有效算法,其优点是能够最大限度地减少重复的字符串前缀或后缀的比较,从而节省了时空开销。本发明首先构造GCC抽象语法树文本文件的编译产生的有效节点类型以及与源文件相关的有用节点关键词词库(通用库),然后构建一棵基于有用信息关键词词库的Trie树算法,接着对已进行文本预处理的GCC抽象语法树文本(待处理文本)进行有效信息关键词检索,将检索到包含有效信息字段的节点进行输出,最后将上一步输出的节点中子节点信息也输出,得到消除冗余后的GCC抽象语法树文本。
为实现上述目的,本发明提供如下技术方案:
基于关键词Trie树消除GCC抽象语法树冗余的方法,应用于电子设备,其步骤如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海工程技术大学,未经上海工程技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911136042.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种脱硫石膏基复合胶凝材料及其应用
- 下一篇:一种滚筒洗衣机门体