首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 78 毫秒
1.
消除GCC抽象语法树文本中冗余信息的算法研究   总被引:1,自引:0,他引:1  
由GCC编译器对C语言源程序进行语法分析产生的抽象语法树文本存在大量的冗余信息,如果直接对其进行解析,则会产生解析效率低、产生的抽象语法树会占用大量的存储空间的问题.针对此问题,在深入研究(GDC抽象语法树文本结构和解析过程的基础上,提出了一种高效消除冗余的算法,通过实验证明了算法的正确性和适用性,并提出了GCC抽象语法树解析的数学定义.  相似文献   

2.
规范抽象语法与抽象语法树的直接生成   总被引:1,自引:0,他引:1  
张幸儿 《计算机学报》1990,13(12):926-933
抽象语法树在很多应用领域中是一个重要的工具,但是在概念上不一致与不规范。本文提出了抽象语法(树)的设计准则,并引进规范抽象语法的概念。本文还给出了为一个源程序从文法直接生成改进的规范抽象语法树的算法。改进的规范抽象语法树结点数远比通常语法分析树少。内存需求量的剧降与应用软件运行的加速,使语法树有实际的应用价值,也可扩大其应用范围。  相似文献   

3.
一种解析GCC抽象语法树的方法   总被引:6,自引:0,他引:6  
石峰  刘坚 《计算机应用》2004,24(3):115-116
介绍了GCC抽象语法树的结构及在编译过程中的作用。给出解析抽象语法树所使用的词法规则和语法规则,提出了解析GCC抽象语法树的方法。  相似文献   

4.
基于抽象语法树分析的版本控制分支合并算法   总被引:1,自引:0,他引:1  
在软件开发中,并行开发已经成为了现实中标准的开发模式,因此软件开发的版本控制在开发过程中得到了非常广泛的应用.虽然大多数的版本控制工具都能完成分支合并以及将不同版本的更改合并起来,但这些工具往往是以一行一行的代码为单位进行文本比较的合并,在遇到某行被同时修改时,则不能给出满意的合并结果.给出了一种新的合并算法,用来解决文本比较分支合并中的问题,它在传统工具的文本比较出现冲突的代码行,对该代码块建立抽象语法树,根据抽象语法树的分析比较,完成不同分支版本代码的自动合并,减少分支合并中的代码冲突及手动合并的工作量,提高开发效率.  相似文献   

5.
基于抽象语法树的软件度量工具的设计与实现   总被引:4,自引:0,他引:4  
为了提高软件质量和控制,改善软件开发过程,文中提出了以抽象语法树为核心的软件度量工具(ASTMT)的体系结构图,介绍了度量工具的功能及特点,详细论述了工具中各个模块的设计与实现方法,着重讨论了抽象语法树的组成及其节点设计。介绍该工具在软件开发中的实际应用,进而验证了工具的实用性与有效性。  相似文献   

6.
基于抽象语法树的数组越界的静态检测方法   总被引:1,自引:0,他引:1  
徐明昌  刘坚 《计算机工程》2006,32(1):108-109,205
针对数组访问越界这一类安全漏洞,以源程序的抽象语法树作为分析对象,提出了一种新的静态解决方案。该方案通过分析数组访问越界安全漏洞的表现,抽象出安全模式,然后根据安全模式以及遍历ast过程中记录的节点属性构建安全规则,最后在安全规则的指导下实现对安全漏洞的检测。  相似文献   

7.
GCC(GNU Compiler Collection)编译器编译C语言源程序所生成的抽象语法树文本中包含大量与源代码无关的冗余信息,若直接进行解析,会严重影响分析效率,降低分析精确度,同时会占用大量存储空间。针对此问题,提出一种基于关键词Trie树的GCC抽象语法树消除冗余算法,其根据包含抽象语法树文本有用信息节点的关键词建立Trie树,可实现对抽象语法树文本无用节点的过滤,从而达到优化编译的效果。相比传统KMP消除冗余算法,关键词Trie树算法可以有效避免去冗余过程中常量、变量等有用信息节点的丢失,确保数据的完整性;同时,关键词Trie树算法可以最大限度地减少重复前缀或后缀字符串的比较次数,节省了时空开销。挑选不同长度的C语言源码文件进行去冗余实验,测试该算法的性能,并将其与传统KMP算法进行对比。实验结果表明,所提算法的去冗效率和查准率均得到了极大的提高。  相似文献   

8.
抽象语法树(abstract syntax tree,AST)作为程序一种重要的中间表示形式,在代码分析领域中有着广泛的应用。如何针对Java程序生成其抽象语法树是在进行代码静态分析前必不可少的工作。分析抽象语法树的构建算法,通过JavaCC解析工具完成对Java文件抽象语法树的构建,该方法可实现代码树状形式的可视化呈现。  相似文献   

9.
抽象语法树(AST)作为程序的一种中间表示形式,在程序分析等诸多领域有广泛的应用。传统的建立AST的方法是通过词法和语法分析的方法。该文提出了一种利用GCC前端结果建立AST的方法,这种方法将GCC编译源程序产生的AST文件,经过一定的格式转换变为XML文档,然后使用XML文档解析器读取该文档,重新建立AST。  相似文献   

10.
源代码漏洞的自动检测是一个重要的研究课题。目前现有的解决方案大多是基于线性模型,依赖于源代码的文本信息而忽略了语法结构信息,从而造成了源代码语法和语义信息的丢失,同时也遗漏了许多漏洞特征。提出了一种基于结构表征的智能化漏洞检测系统Astor,致力于使用源代码的结构信息进行智能化漏洞检测,所考虑的结构信息是抽象语法树(Abstract Syntax Tree,AST)。首先,构建了一个从源代码转化而来且包含源码语法结构信息的数据集,提出使用深度优先遍历的机制获取AST的语法表征。最后,使用神经网络模型学习AST的语法表征。为了评估Astor的性能,对多个基于结构化数据和基于线性数据的漏洞检测系统进行比较,实验结果表明Astor能有效提升漏洞检测能力,降低漏报率和误报率。此外,还进一步总结出结构化模型更适用于长度大,信息量丰富的数据。  相似文献   

11.
随着C++语言标准的不断演进,词法语法解析工具如JavaCC等对于很多扩充的新特性以及复杂的语法结构不能做到完全支持,这可能会导致抽象语法树生成错误且不完整;针对这一问题,提出一个针对抽象语法树生成错误的处理框架;首先,通过对JavaCC的扩充,实现一套可以解析C++语言的词法语法分析器,生成抽象语法树并记录报错行;其次,根据报错行寻找所在函数区间即不支持或不匹配的语法片段;最后,通过注释函数区间的方式来跳过不支持或不匹配的语法片段进行错误处理并迭代生成抽象语法树;实验结果表明,对抽象语法树生成进行错误处理后可以更全面的分析代码,抽象语法树完成率上升37.8%,分析行数提高3.9倍。  相似文献   

12.
文章对基于文本、Token和抽象语法树的同源性检测技术进行探讨,详细介绍了关于抽象语法树的同源性检测技术。同时,在对实际应用大量研究的基础上,文章着重介绍了源代码同源性检测系统的架构设计,以及引擎比对、比对结果分析和比对结果输出等主要功能模块,并对开发的系统进行了系统测试和分析,验证了算法的可行性。  相似文献   

13.
在软件开发的过程中,开发人员通过复制粘贴式的开发方式或者模块化的开发方式来完成需求是十分常见的,这两种开发方式可以提高开发效率,但同时会导致软件系统中出现大量的相同代码或者相似代码,大量的相似代码会给软件维护等方面带来很大的困难,这也是最常见的重构对象。源代码相似性度量是指利用一定的检测方法分析程序源代码间的相似程度。该技术被应用于代码抄袭检测、代码克隆检测、软件知识产权保护、代码复用等多个领域。为了提高代码相似性度量的准确性,提出了一种基于多特征值的源代码相似性检测技术。构建了源代码注释、型构、代码文本语句与结构中特征提取的方法,并给出了源代码相似度检测的度量模型。通过与权威的代码相似检测系统Moss进行对比实验,结果表明该方法可以更准确地检测出相似代码。  相似文献   

14.
源代码注释生成旨在为源代码生成精确的自然语言注释,帮助开发者更好地理解和维护源代码.传统的研究方法利用信息检索技术来生成源代码摘要,从初始源代码选择相应的词或者改写相似代码段的摘要;最近的研究采用机器翻译的方法,选择编码器-解码器的神经网络模型生成代码段的摘要.现有的注释生成方法主要存在两个问题:一方面,基于神经网络的方法对于代码段中出现的高频词更加友好,但是往往会弱化低频词的处理;另一方面,编程语言是高度结构化的,所以不能简单地将源代码作为序列化文本处理,容易造成上下文结构信息丢失.因此,本文为了解决低频词问题提出了基于检索的神经机器翻译方法,使用训练集中检索到的相似代码段来增强神经网络模型;为了学习代码段的结构化语义信息,本文提出结构化引导的Transformer,该模型通过注意力机制将代码结构信息进行编码.经过实验,结果证明该模型在低频词和结构化语义的处理上对比当下前沿的代码注释生成的深度学习模型具有显著的优势.  相似文献   

15.
一种改进的决策树后剪枝算法磁   总被引:1,自引:0,他引:1  
当深度和节点个数超过一定规模后,决策树对未知实例的分类准确率会随着规模的增大而逐渐降低,需要在保证分类正确率的前提下,用剪枝算法对减小决策树的规模。论文在对现有决策树剪枝算法优缺点进行分析的基础上,提出了一种综合考虑分类精度、分类稳定性以及决策树规模的后剪枝改进算法,并通过实验证明了该算法在保证模型判别精度和稳定性的前提下,可以有效地减小了决策树的规模,使得最终的自动判别模型更加简洁。  相似文献   

16.
源程序静态信息的提取是实现对源程序静态分析的基础,提取的静态信息的完整性、信息的规范性是静态分析的关键点。文章基于GCC编译器产生的AST(AbstractSyntaxTree)中间文件,给出了一种从AST文件中提取源程序的静态信息的方法,以XML(ExtensibleMarkupLanguage)标准格式输出,最后树形化地显示出源程序的结构关系。  相似文献   

17.
陈平  王成耀 《微计算机信息》2007,23(24):189-190,120
本文给出了以抽象语法树为基础的软件静态分析工具的体系结构,介绍了该工具中各个模块的设计与实现方法,着重于规则库的设计,以及利用定义好的规则实现自动化的代码检测的过程。  相似文献   

18.
为了提高Web开发效率,开发人员常常复用已有系统框架或成熟项目中现有的代码,但因此也导致了Web应用中总存在大量的冗余代码,冗余代码不仅影响程序的可读性和运行效率同时还会隐藏软件缺陷。通过研究Web应用源代码逻辑和框架的特性,提出了Web应用系统中基于源代码分析的冗余代码检测方法。从应用程序入口开始,根据代码之间的逻辑调用关系构建Web应用调用树,进而得到有效页面集、有效类与方法节点集;然后根据冗余检测算法检测出Web应用系统中冗余页面、冗余处理类与处理方法。为了评估冗余检测方法的有效性,包括漏检率与误检率,对两个JavaWeb应用进行冗余检测并通过人工注入冗余实验验证检测的有效性。实验结果证明,提出的冗余代码检测方法可以达到较高的检测效率。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号