抽象语法树论文_焦秀秀

导读:本文包含了抽象语法树论文开题报告文献综述、选题提纲参考文献及外文文献翻译,主要关键词:语法,抽象,代码,词法,分析器,算法,重构。

抽象语法树论文文献综述

焦秀秀[1](2019)在《基于抽象语法树的C编程题自动评分方法研究及应用》一文中研究指出随着计算机技术的飞速发展,互联网+教育深刻地影响着教育教学方式和课程考试方式。编程题的自动评分是程序设计类课程在线考试中的一个重大需求,实现编程题的在线实际测试是程序设计语言课程考试的最有效形式。由于程序设计题主观因素强、解决方式多、评分标准不完善,因此,如何实现高效合理的编程题自动评分,一直是程序设计类课程在线考试领域研究的难点和热点问题。基于对编程题评测特点的研究,本文依据人工评分思想,设计了一个改进的动静结合评分模型。该模型的动态评分部分依赖于POJ(Peking Online Judge)内核实现,静态评分部分基于抽象语法树实现。改进的动静结合评分模型依据学生程序编译是否通过,分别对学生程序应用不同的评分规则,同时加入了程序是否满足要求的知识点评测。对编译通过的学生程序同时进行动态评分和基于抽象语法树的静态评分。对于编译未通过的学生程序,先按照预先设置的评分规则扣除语法分,之后只进行基于抽象语法树的静态评分。研究并实现了基于抽象语法树的C编程题静态分析方法,该方法首先借助GCC编译命令生成抽象语法树(Abstract Syntax Tree,AST),并依据本文给出的抽象语法树预处理原理及算法实现对生成的抽象语法树进行解析和标准化,采用树编辑距离(Tree Levenshtein)算法计算学生程序抽象语法树与模板程序抽象语法树之间的最小编辑距离,并依据相似度计算公式得出两者之间的相似度。取学生程序抽象语法树和模板程序库中模板程序抽象语法树的最大相似度作为学生程序与模板库程序的相似度,最后依据预先设定的评分规则计算学生程序的静态得分。针对本文设计的动静结合评分模型,以本校2018-2019第一学年的C语言考试数据为数据源,选取42个代表性的学生程序进行实验分析,实验结果表明本文的评分方案较本校现有系统的评分方案更贴近人工评分,且准确率平均可以达到80%,具有很高的可用性。本文以基于抽象语法树的C编程题静态分析方法为核心,借助改进的动静结合评分模型,设计并实现了C语言在线考试系统。该系统减轻了教师评阅试卷的负担且保证了对学生程序评判公平合理。(本文来源于《西安理工大学》期刊2019-06-30)

张志浩,杨春花[2](2019)在《基于代码变更块和抽象语法树的两种重构模式识别》一文中研究指出内联函数(Inline method)和替换算法(Substitute algorithm)是2种在代码重构中常用的重构手法,本文提出一种基于代码变更块和抽象语法树的重构模式识别算法,首先筛选出变更前后2个文件的代码变更块,找到可能属于这2种重构模式的代码变更块,再建立抽象语法树对这些变更块中的代码进行准确的语法分析,对其是否属于此2种模式进行判定。该算法在4个开源项目上进行了实验验证,表明了其具有较高的准确率。(本文来源于《智能计算机与应用》期刊2019年03期)

赵凤荣,姚永婷,张丽萍,赵俊奇[3](2018)在《基于抽象语法树和最优映射算法的克隆代码映射研究》一文中研究指出以具有嵌套结构的克隆代码为研究对象,使用NiCad检测工具获取克隆代码的检测结果,然后将检测出的克隆代码转换为抽象语法树,利用递归函数返回最优子树,筛选出具有相同嵌套结构的克隆代码;再利用最优映射算法对具有相同嵌套结构的克隆对进行映射.此方法更好地支持了Type-3类型克隆代码的映射,为进一步研究克隆代码重构奠定了基础.(本文来源于《内蒙古大学学报(自然科学版)》期刊2018年05期)

辛艳艳,吴海涛[4](2018)在《基于抽象语法树的C克隆代码重构应用与研究》一文中研究指出为了缩短软件工程生命周期,引入组件、复制的概念,利用抽象语法树(AST)将相同功能的代码设计为一个函数,保留充足的接口参数,利用过程调用开发软件程序,可以提高软件开发效率.(本文来源于《上海师范大学学报(自然科学版)》期刊2018年04期)

高峰,吴海涛[5](2018)在《简化GNU编译器套件抽象语法树的算法研究》一文中研究指出提出了一种消除抽象语法树文本中冗余的方法,借助Knuth-Morris-Pratt(KMP)算法,设计核心算法,对抽象语法树进行简化,并选出几个经典的代码片段进行实验,对算法的性能做了相应验证.实验结果表明,算法在消除冗余方面的简化率达到90%以上.(本文来源于《上海师范大学学报(自然科学版)》期刊2018年04期)

方登辉[6](2018)在《基于抽象语法树的代码静态缺陷检测工具开发》一文中研究指出当前软件开发火爆的同时也暴露出越来越多的安全问题。高质量的软件系统是保证系统稳定运行的关键。软件测试是保证软件质量的重要手段。静态代码检测技术作为软件测试重要组成部分,能够在不执行代码的情况下挖掘潜在缺陷,具有发现问题早、检测快速等优点,受到越来越多关注。本文研究了如何从抽象语法树提取信息用于静态代码检测,完成了一个基于抽象语法树的静态代码检测工具的开发。该工具首先使用Clang编译器将源代码转化为抽象语法树,分析缺陷代码和正常代码的差异性,记录区分这些差异性的关键信息如上下文信息、程序结构信息、数据流信息或控制流信息等,然后利用这些关键信息基于GJB安全规范和PVS缺陷库构建检测规则,之后遍历语法树,在遍历过程中调用规则检测,记录违反规则的代码片段及错误信息,最后生成测试报告。本文提出了基于抽象语法树挖掘缺陷的方案设计,用户可基于此框架二次开发扩展规则集,丰富代码缺陷检测能力。本文对github上七个开源项目做了测试,实验发现每个软件都不同程度存在缺陷漏洞。实验结果验证了本工具的有效性,也暴露出当前大部分软件存在编码问题。(本文来源于《北京邮电大学》期刊2018-03-12)

王杰[7](2018)在《基于抽象语法树的SQL注入防御研究》一文中研究指出基于数据库作为存储介质的Web应用程序已经普及到各个领域的业务系统中。由于Web应用程序的开发人员在编码时的一些不规范的操作,导致这些应用程序中存在着潜在的注入风险。潜在的SQL注入漏洞一旦被攻击者发现,对网站系统将会造成巨大的损失。所以在应用程序中构建一个SQL注入攻击防御系统,对非法的用户请求进行拦截,是保障系统免受注入攻击危害的必要措施。由于SQL注入攻击语句本身就是正确的SQL语句,即使系统执行了攻击语句,也不会出现任何异常。本文从SQL语句语法结构上进行分析,通过比较SQL注入攻击与正常SQL语句的结构上的差异来判断用户的输入是否包含攻击载荷。针对SQL注入攻击的检测与防御,本文做了如下工作:(1)SQL语法分析器的实现。SQL语句的精确解析是保证数据库安全的基石。本文通过对SQL语法和词法规则的学习,使用EBNF范式描述SQL语言词法规则和语法规则,最后利用ANTLR自动化构建工具实现了SQL语法分析器。(2)SQL语言抽象语法树的构建。本文首次提出利用抽象语法树来判断SQL注入攻击。抽象语法树是SQL语句的一种形式化表示。相比于具体语法树而言,抽象语法树去除了树中的冗余节点,即对最终判定结果没有影响的节点,所以在树节点的比对过程中拥有更好的性能。本文通过重写树规则完成了抽象语法树的构建。(3)基于抽象语法树判定SQL注入攻击应用逻辑的实现。本文提出了基于AST的hash值的比对方法来判断SQL注入攻击。并基于ANTRL的监听器机制完成了抽象语法树判定SQL注入攻击的应用逻辑。(4)语法分析模块和抽象语法树模块在SQL注入防御系统中的应用。在本文中主要实现了SQL语法分析模块和抽象语法树判决模块,并将这两个模块应用到了SQL注入防御系统中。在最后还对本防御系统进行了漏报率、误报率以及响应时间的测试。实验结果表明本文提出的基于抽象语法树hash值的比对方法,在SQL注入攻击防御上能有较好的效果。(本文来源于《武汉邮电科学研究院》期刊2018-01-01)

张刘毅[8](2017)在《基于抽象语法树和改进粒子群算法的代码同源性分析》一文中研究指出随着计算机和互联网的发展,社会对软件开发人员的需求量逐年增加,但庞大的代码量使得人工审核代码变得不可能,同时便捷的互联网使得代码抄袭情况越来越严重,而源代码的同源性分析能比较两个软件从源代码到软件功能之间的差别,找出它们之间的相似之处或相同之处,从而有效分辨代码抄袭情况,因此源代码的同源性分析对于代码的知识产权保护显得特别重要。常见的同源性分析主要有叁种:基于文本的同源性分析、基于令牌(token)的同源性分析以及基于语法树的同源性分析。其中基于语法树的同源性分析被广泛采用。本文提出一种基于抽象语法树和改进粒子群算法的代码同源性分析方法。该方法先对程序代码进行预处理得到中间代码,然后进行词法语法分析并利用抽象语法树存储语法结构信息,最后利用改进后的粒子群算法进行迭代优化。具体做了以下几个方面的工作。一、基于ANTLRV4工具,研究了 ANTLRV4构造词法分析器和语法分析器的过程。词法分析主要读入源代码,把构成源程序的字符流进行识别并转化成记号流作为语法分析的输入。语法分析主要接受来自词法分析器输出的记号流并将其转化为抽象语法树。二、针对C++语言特性,进行了表达式抽象语法树结构的描述以及语句的抽象语法树结构的描述。为了避免语法分析时匹配失败提出了增加虚拟节点的改进思路,利用ANTLR自带的Listener监听器进行语法树的遍历以及遍历完将其写入文件进行存储,从而为粒子群算法的应用提供了数据来源。叁、针对基本粒子群算法容易陷入局部最优的缺点提出了叁点改进思路,即粒子编码方式的改进、通过变异策略增加粒子的多样性以及收敛因子的优化。四、建立和分析了反抄袭检测系统的开发环境和开发平台,该系统主要是由输入模块、预处理模块、AST分析模块、相似度计算模块和输出模块构成。输入模块主要实现源文件和对比文件的输入;预处理模块的主要功能是删除程序代码中不影响程序代码生成AST的部分;AST分析结果模块是将所有树节点信息,包括哈希值,节点类型,节点名称,节点信息量输出出来;相似度计算模块是将每次迭代中得到的哈希值,节点类型和节点信息量的相似度值展示,输出模块是将最后得到的相似度值进行展示。五、基于JAVA和springMVC设计了代码的同源性分析的实验过程。实验证明,利用改进后的粒子群算法可以提高识别源代码抄袭的准确率和效率。(本文来源于《东南大学》期刊2017-06-03)

李清言[9](2016)在《Pyreview:一个基于抽象语法树差异提取的Python源代码分析工具》一文中研究指出在软件开发维护过程中,代码差异分析是一个非常重要的内容。通过代码差异分析,开发者可以更好地理解版本间代码的变更,追踪软件的演化,也可以检测克隆代码块,进而做好软件的维护和后续的开发工作。Python语言作为使用最为广泛的动态语言之一,针对它的这方面的工作却极为匮乏。为此,本文设计实现了Pyreview,一个基于抽象语法树差异提取的Python源代码分析工具。本文的主要工作包括:·提出了改进的字符串距离计算和语法树结点列表匹配方法,提高了已有的基于抽象语法树差异提取的代码变更分析方法的性能。对GIT仓库中的9个Python项目的实验分析表明,Pyreview的差异代码分析结果的准确率和召回率都在98%以上。相比已有的算法,Pyreview平均可以缩短20%的运行时间。·通过对Python语言中语法规则的分析,分类总结了Python的代码变更类型,并提出了相应的自动分类方法。Pyreview中的代码变更类型分析模块可以有效应对Python语言中特殊的语法糖和动态特性的使用。·提出了一种针对gapped clone code的检测方法,该方法在一定程度上对克隆代码块中语句的插入和删除操作免疫。Pyreview作为一个Python源代码分析工具,可以应用在代码比较、代码变更模式提取、软件演化分析、克隆代码块检测等领域,为相关的研究工作提供一种技术实现和数据获取方式。(本文来源于《南京大学》期刊2016-05-27)

刘昌松[10](2016)在《基于抽象语法树的软件缺陷自动分类》一文中研究指出软件在开发过程中会受到许多内部和外部因素的影响,很难保证软件系统不出现缺陷。在企业里,人们比较关注软件缺陷的发现和处理,很少对软件缺陷进行分类。然而,对软件缺陷进行分类意义重大。软件缺陷分类后,项目管理人员可以知道各种类型软件缺陷的分布情况和出现的频率。软件质量控制人员可以更准确地发现软件产品中的问题,了解各个模块在开发过程中所处的质量状况,从而可以采取措施来更好地控制软件的质量。现有的软件缺陷分类方法大多是人工分类,人工分类过程中需要很多人员参与分析,分析人员主观因素对软件缺陷分类的结果影响非常大。而且,人工分类耗时费力。因此,本文提出一种自动分类方法,该方法可以有效地对软件缺陷进行自动分类。本文提出的软件缺陷自动化分类方法通过分析缺陷修复前后两个版本的源代码,将其转换为抽象语法树,然后对比两个抽象语法树来提取代码的修改特征,最后将软件缺陷分类到数据类型缺陷、计算类型缺陷、结构类型缺陷、和控制逻辑类型缺陷这4种类型中。本文从项目代码版本控制系统SVN和缺陷追踪系统中收集Tomcat6、Mapreduce和Solr这叁个开源项目的软件缺陷相关信息。利用本文提出的自动分类方法,我们对Tomcat6、Mapreduce和Solr叁个项目中的1174个软件缺陷进行分类。实验结果表明,本文提出的软件缺陷自动分类方法对结构类型缺陷、控制逻辑类型缺陷的分类效果较好。在对叁个开源项目的软件缺陷分类中,结构类型缺陷的分类精度为72%-86%,控制逻辑类型缺陷的分类精度为70%-78%。基于本文提出的软件缺陷分类方法,通过对Tomcat6、Mapreduce和Solr叁个开源项目的软件缺陷进行分类和分析,我们发现大部分软件缺陷在修复时需要修改的模块数不大于3,涉及3个模块以上的软件缺陷比例为7%-22%。相对于模块中间位置而言,70%的软件缺陷模块的第一行修复代码的位置出现在模块的前面。Mapreduce和Solr项目中的缺陷代码规模和模块规模存在弱相关。(本文来源于《南京大学》期刊2016-05-01)

抽象语法树论文开题报告

(1)论文研究背景及目的

此处内容要求:

首先简单简介论文所研究问题的基本概念和背景,再而简单明了地指出论文所要研究解决的具体问题,并提出你的论文准备的观点或解决方法。

写法范例:

内联函数(Inline method)和替换算法(Substitute algorithm)是2种在代码重构中常用的重构手法,本文提出一种基于代码变更块和抽象语法树的重构模式识别算法,首先筛选出变更前后2个文件的代码变更块,找到可能属于这2种重构模式的代码变更块,再建立抽象语法树对这些变更块中的代码进行准确的语法分析,对其是否属于此2种模式进行判定。该算法在4个开源项目上进行了实验验证,表明了其具有较高的准确率。

(2)本文研究方法

调查法:该方法是有目的、有系统的搜集有关研究对象的具体信息。

观察法:用自己的感官和辅助工具直接观察研究对象从而得到有关信息。

实验法:通过主支变革、控制研究对象来发现与确认事物间的因果关系。

文献研究法:通过调查文献来获得资料,从而全面的、正确的了解掌握研究方法。

实证研究法:依据现有的科学理论和实践的需要提出设计。

定性分析法:对研究对象进行“质”的方面的研究,这个方法需要计算的数据较少。

定量分析法:通过具体的数字,使人们对研究对象的认识进一步精确化。

跨学科研究法:运用多学科的理论、方法和成果从整体上对某一课题进行研究。

功能分析法:这是社会科学用来分析社会现象的一种方法,从某一功能出发研究多个方面的影响。

模拟法:通过创设一个与原型相似的模型来间接研究原型某种特性的一种形容方法。

抽象语法树论文参考文献

[1].焦秀秀.基于抽象语法树的C编程题自动评分方法研究及应用[D].西安理工大学.2019

[2].张志浩,杨春花.基于代码变更块和抽象语法树的两种重构模式识别[J].智能计算机与应用.2019

[3].赵凤荣,姚永婷,张丽萍,赵俊奇.基于抽象语法树和最优映射算法的克隆代码映射研究[J].内蒙古大学学报(自然科学版).2018

[4].辛艳艳,吴海涛.基于抽象语法树的C克隆代码重构应用与研究[J].上海师范大学学报(自然科学版).2018

[5].高峰,吴海涛.简化GNU编译器套件抽象语法树的算法研究[J].上海师范大学学报(自然科学版).2018

[6].方登辉.基于抽象语法树的代码静态缺陷检测工具开发[D].北京邮电大学.2018

[7].王杰.基于抽象语法树的SQL注入防御研究[D].武汉邮电科学研究院.2018

[8].张刘毅.基于抽象语法树和改进粒子群算法的代码同源性分析[D].东南大学.2017

[9].李清言.Pyreview:一个基于抽象语法树差异提取的Python源代码分析工具[D].南京大学.2016

[10].刘昌松.基于抽象语法树的软件缺陷自动分类[D].南京大学.2016

论文知识图

冗余消除后的文本抽象语法树消除冗余前的文本抽象语法树抽象语法树中表达式结构基于BLOCK结构的抽象语法树抽象语法树文本示例邻接表存储的抽象语法树

标签:;  ;  ;  ;  ;  ;  ;  

抽象语法树论文_焦秀秀
下载Doc文档

猜你喜欢