GCC抽象语法树的解析及控制依赖子图的建立方法研究

GCC抽象语法树的解析及控制依赖子图的建立方法研究

论文摘要

在程序设计语言考试中,编程题自动评分是一项具有实用价值的应用,它是实现在线考试功能的一个关键技术,由于它涉及到多方面的理论和知识,因而成为一个难点。目前,还有一些技术问题需要解决。一是无法对有语法错误的程序进行自动评分;二是分析规模较大程序能力较弱。针对这两个问题,在深入研究已出现的评分模型和现有评分系统的基础上,通过引入当前功能比较强大的编译器GCC(GNU C complier)改善现有系统前端的方式来解决以上两个问题。本文首先对GCC的输出——文本抽象语法树做了详细的研究并提出了GCC抽象语法树解析的定义和与之相关的定义,这一部分是本文的理论基础;其次,在深入研究了几种常见的静态编程题自动评分模型的基础上,提出了基于GCC的C程序自动评分模型;再次,提出了消除文本抽象语法树中冗余信息的算法并给出了算法复杂性分析,实验结果证明该算法取得了提高了GCC抽象语法树解析的时空效率。最后提出了将文本抽象语法树转化为邻接表形式的抽象语法树的算法和控制依赖子图的构建算法,较好完成了系统前端的构建。实验部分的目标是将新前端和原系统的后端连接形成一个新系统,本文给出了连接过程的总体流程和阶段性的结果,然后针对若干实验程序给出了新前端产生的控制依赖子图,实验证明新前端具有良好的适用性。

论文目录

  • 摘要
  • Abstract
  • 第1章 绪论
  • 1.1 课题来源、研究背景和意义
  • 1.2 国内外研究现状
  • 1.3 本文的主要研究内容和章节安排
  • 第2章 GCC 文本抽象语法树
  • 2.1 GCC 及其工作流程
  • 2.2 文本抽象语法树的结构特性
  • 2.2.1 GCC 语法分析输出—抽象语法树
  • 2.2.2 文本抽象语法树中的结点
  • 2.2.3 重要字段说明
  • 2.2.4 文本抽象语法树的结构特性
  • 2.2.5 文本抽象语法树解析的含义
  • 2.2.6 抽象语法树相关定义及补充
  • 2.3 本章小结
  • 第3章 GCC 文本抽象语法树的解析及控制依赖子图的生成
  • 3.1 基于GCC 的C 程序自动评分模型
  • 3.2 GCC 文本抽象语法树中冗余信息消除算法
  • 3.2.1 消除冗余的原因
  • 3.2.2 算法的基本思想
  • 3.2.3 算法的详细描述
  • 3.2.4 算法的复杂度分析
  • 3.2.5 实验分析
  • 3.3 邻接表形式的抽象语法树的建立算法及实现
  • 3.3.1 编号映射
  • 3.3.2 消除字段冗余
  • 3.3.3 存储结构设计
  • 3.3.4 算法的基本思想与详细描述
  • 3.3.5 算法的复杂度分析
  • 3.3.6 实验分析
  • 3.4 程序的中间表示——系统依赖图
  • 3.5 控制依赖子图的生成算法及实现
  • 3.5.1 算法的基本思想
  • 3.5.2 算法的详细描述
  • 3.5.3 算法复杂性分析
  • 3.5.4 实验分析
  • 3.5.5 完成对整个程序控制依赖子图的构建
  • 3.6 系统依赖图的构建算法及实现
  • 3.6.1 建立系统依赖图的一般步骤
  • 3.6.2 求到达-定值信息
  • 3.6.3 REF 集合和DEF 集合
  • 3.6.4 求GEN 集合和KILL 集合
  • 3.6.5 求IN 集合和OUT 集合
  • 3.6.6 建立数据流边
  • 3.6.7 实验分析
  • 3.7 本章小结
  • 第4章 系统测试与分析
  • 4.1 新旧系统的连接
  • 4.2 实验数据
  • 4.3 对新前端进行测试
  • 4.4 本章小结
  • 结论
  • 参考文献
  • 攻读学位期间发表的学术论文
  • 致谢
  • 相关论文文献

    • [1].基于抽象语法树分析的版本控制分支合并算法[J]. 计算机系统应用 2015(03)
    • [2].一种改进的基于抽象语法树的软件源代码比对算法[J]. 信息网络安全 2014(01)
    • [3].抽象语法树在属性计算中的应用[J]. 安庆师范学院学报(自然科学版) 2008(04)
    • [4].基于抽象语法树的数据泥团自动检测研究[J]. 计算机应用与软件 2017(01)
    • [5].基于抽象语法树的修改影响分析方法[J]. 长春工业大学学报(自然科学版) 2012(04)
    • [6].基于代码变更块和抽象语法树的两种重构模式识别[J]. 智能计算机与应用 2019(03)
    • [7].基于抽象语法树的C克隆代码重构应用与研究[J]. 上海师范大学学报(自然科学版) 2018(04)
    • [8].基于线索抽象语法树的程序依赖图自动生成算法[J]. 武汉大学学报(理学版) 2015(02)
    • [9].Ckit系统分析及应用[J]. 电脑知识与技术 2017(27)
    • [10].基于中文语法树的概念图挖掘研究[J]. 大连海事大学学报 2012(04)
    • [11].基于语法树的程序相似度判定方法[J]. 吉林大学学报(信息科学版) 2014(01)
    • [12].C程序控制流程模型的提取技术与实现[J]. 计算机科学 2014(05)
    • [13].使用抽象语法树和静态分析的克隆代码自动重构方法[J]. 小型微型计算机系统 2009(09)
    • [14].克隆代码自动重构的抽象语法树及静态分析[J]. 数字技术与应用 2016(02)
    • [15].基于抽象语法树的Javascript混淆器[J]. 硅谷 2015(02)
    • [16].简化GCC抽象语法树的新型算法[J]. 计算机科学 2015(S1)
    • [17].建立抽象语法树模型评测C++代码[J]. 计算机应用 2015(S1)
    • [18].基于抽象语法树和最优映射算法的克隆代码映射研究[J]. 内蒙古大学学报(自然科学版) 2018(05)
    • [19].一种优化GCC抽象语法树的方法[J]. 电子技术与软件工程 2017(06)
    • [20].基于JavaCC的抽象语法树的构建与实现[J]. 计算机工程与设计 2016(04)
    • [21].一种基于GCC抽象语法树的程序特征提取方法[J]. 电子技术与软件工程 2013(20)
    • [22].消除GCC抽象语法树文本中冗余信息的算法研究[J]. 计算机科学 2008(10)
    • [23].基于语法树和JavaCC的程序题自动评分系统[J]. 计算机技术与发展 2012(01)
    • [24].使用抽象语法树匹配分析Java程序演化[J]. 计算机应用与软件 2011(08)
    • [25].简化GNU编译器套件抽象语法树的算法研究[J]. 上海师范大学学报(自然科学版) 2018(04)
    • [26].CPCC抽象语法树的三地址码生成[J]. 电脑知识与技术 2013(34)
    • [27].静态测试中C/C++抽象语法树的生成[J]. 长春工业大学学报(自然科学版) 2008(03)
    • [28].基于软件历史仓库和抽象语法树的相似缺陷识别方法[J]. 系统工程与电子技术 2020(10)
    • [29].基于语法树高度的汉语韵律短语预测[J]. 计算机工程与应用 2010(36)
    • [30].基于符号执行的软件静态测试研究[J]. 计算机技术与发展 2013(06)

    标签:;  ;  ;  ;  

    GCC抽象语法树的解析及控制依赖子图的建立方法研究
    下载Doc文档

    猜你喜欢