程序编译之初——词法分析

程序编译之初——词法分析

一、程序编译的起步——词法分析(论文文献综述)

王聪冲[1](2021)在《面向JavaScript解析引擎的模糊测试技术研究》文中研究说明JavaScript引擎是浏览器的重要组成部分,为网页添加各式各样丰富的动态界面,给用户提供流畅美观的浏览效果,是整个浏览器动态显示的基础。当前,针对JavaScript引擎发起的攻击层出不穷,攻击者通过JavaScript引擎来劫持用户浏览器进行挂马、XSS、Cookie劫持等攻击,甚至获取整个系统权限。为此,针对JavaScript引擎的安全测试或漏洞挖掘技术是当前工业界与学术界的热点。然而,JavaScript引擎具有代码量大,逻辑结构复杂等特点,给JavaScript引擎安全测试造成了严重的困难。现有的JavaScript引擎漏洞挖掘方法面临测试速度慢、生成测试用例有效率低、覆盖率低等问题,无法满足JavaScript引擎的漏洞挖掘需求。针对上述问题,本文研究了面向JavaScript解析引擎的模糊测试技术。具体而言,本文主要研究内容包括:1)提出一种基于语法树粒度的种子变异模型Tree Model,该模型基于覆盖率制导,通过语法树变异对JavaScript引擎进行模糊测试。首先使用语法分析工具对初始种子进行语法分析生成抽象语法树,然后获取语法树的子树构建子树池。在变异阶段从测试用例队列中挑选出种子进行语法分析生成抽象语法树,随机从子树池中挑选出子树在该语法树上进行子树替换变异,生成新的测试用例进行测试。与AFL在比特级上的变异不同,该模型在语法树层次对种子进行变异,能更有效的生成测试用例。实验表明:与其他JavaScript引擎漏洞挖掘工具进行对比,Tree Model在漏洞发现能力和路径覆盖率上均有一定的提升,证明了该模型的有效性。2)针对如何降低JavaScript代码生成错误率的问题,在1)的研究基础上进一步提出一种子树类型敏感的种子变异增强策略,并实现了模型ILS。ILS在路径反馈的模糊测试框架上,对JavaScript代码进行语法分析,对语法树子树进行类型识别和分类构建同类型子树池,在变异阶段使用同类型子树替换变异形成子树类型敏感的变异策略。该模型能够大幅提升测试种子的有效率,从而驱动更高的代码覆盖率和漏洞发现能力。通过将ILS和多个主流JavaScript引擎漏洞挖掘工具Superion、Code Alchemist进行性能对比,在Jerry Script、Chakra Core和JavaScript Core等典型JavaScript引擎对象上的测试实验表明,ILS能有效降低JavaScript种子生成错误率,并且能大幅提高JavaScript引擎的代码覆盖能力,具有更高的漏洞发现能力。3)针对JavaScript引擎模糊测试中变异能量分配问题,在2)的研究基础上提出了一种子树类型敏感的种子能量分配策略。该策略赋予运行时间短、覆盖路径多、新生成和路径深度高的测试种子更多的能量,并在子树变异过程中赋予能发现新路径的子树类型更多的能量,使优秀的种子具有更高的变异能量,从而提高对目标程序的代码覆盖能力。最后与其他JavaScript漏洞挖掘工具进行实验对比,实验结果证明该方法具有更高的代码覆盖率及漏洞发现能力。最终在JavaScript引擎中发现了68个之前未被发现的新Bug,并得到厂商的确认和修复。

任路遥[2](2020)在《面向对象程序的自动化单元测试框架研究与设计》文中进行了进一步梳理单元测试是对软件中的基本组成单位(如模块、过程、函数或类)进行的测试,在保障软件质量的过程中发挥重要作用。面向对象语言是一类以对象作为基本程序结构单位的程序设计语言。面向对象程序中涉及到复杂逻辑结构的单元测试具有一定的难度,是单元测试方向研究的热点之一。面向对象程序的自动化单元测试框架,能提高面向对象程序的单元测试效率,减轻测试人员繁重的单元测试任务,有效的降低面向对象软件开发的成本。面向对象程序自动化单元测试框架的研究有很大的技术难度,目前国内此类单元测试框架较少,且多为在国外成熟的测试框架基础上进行的二次设计。本文调研了国外成熟的面向对象程序的自动化单元测试框架设计,以及传统的面向过程程序的自动化单元测试框架设计,总结了面向对象程序的自动化单元测试框架的设计原则与原型设计。在此基础上做了两点研究:一、对面向对象程序的单元测试中存在的问题进行了研究,分析了面向对象程序自动化单元测试框架要解决的功能和性能两类需求。功能方面,研究了面向对象语言中常见的权限访问、类属性、函数重载等特性引入的单元测试问题。性能方面,研究了自动化测试框架常见的多程序测试内存性能问题以及实际执行环境的平台适应性问题。由于面向对象语言的丰富度颇多,本文选取C++这一流行的面向对象语言,作为研究面向对象语言的切入点。二、在原型设计的基础上,结合上述需求,本文设计了一种面向对象程序的自动化单元测试框架(Code Test System for Cpp,CTSCpp),用以对C++程序进行自动化的单元测试。功能方面,该测试框架可以自动化的为C++程序进行预处理、静态分析、构建测试环境,自动的生成测试用例,并动态执行获得覆盖率信息。性能方面,采用前后端分离的形式,运用序列化的技术手段,用硬盘资源换取内存资源,防止测试框架执行过程中发生内存溢出;并采用适配器模式,针对预处理、动态执行等操作,设计了适配器模块,丰富了测试框架的拓展性。作者在实际工程中实现了上述面向对象程序的自动化单元测试框架,并通过实际程序进行了验证检验。结果表明,本文研究与设计的面向对象程序的自动化单元测试框架具有可行性。其能够实现对面向对象程序进行自动的程序解析、单元提取、覆盖率测试等功能。

周颖娟[3](2020)在《面向大型船舶外立面的喷涂机器人离线编程与仿真系统》文中研究说明将机器人引入大型船舶喷涂作业是目前船舶制造业发展的必然趋势。现有的机器人应用主要以人工示教的方式进行,而人工示教方式存在着对大型工件示教操作难度大、效果差等缺点,限制了机器人在大型船舶喷涂任务中的应用。一种有效的解决方式是采用离线编程进行喷涂机器人轨迹规划,然而目前已有的离线编程系统大多只适用于中小型简单喷涂场景,面向大型复杂场景的轨迹规划能力较弱,无法解决大面积、变曲率的大型船舶外立面喷涂问题。有鉴于此,本文针对大型船舶外立面喷涂作业离线编程方法展开研究,构建了一套面向大型船舶外立面的喷涂机器人离线编程与仿真系统,实现了对复杂船舶表面的喷涂轨迹规划。具体研究内容如下:针对大型船舶喷涂场景的导入及处理问题,引入半边(Half-Edge)结构表示船舶网格模型的拓扑信息。首先在半边结构的基础上提出了一种快速拓扑重建算法,该算法在STL文件读取过程中,通过哈希表去除冗余顶点,同时为每个顶点建立入射半边表完成半边合并,从而实现大数据量条件下三角网格拓扑快速重构;然后基于半边结构对船舶外立面一些重要几何特征进行提取。通过半边结构快速高效的邻域查询能力解决大场景处理困难问题,同时为后续轨迹规划奠定基础。针对大型复杂船舶外立面的喷涂轨迹规划问题,基于对船舶喷涂详细的需求分析提出了一种面向大型复杂船舶外立面的分段喷涂解决方案。首先基于船舶外立面的喷涂工艺特点进行区域初分割;然后针对其几何形状特点,提出了基于二面角的半边扩展生长算法进行区域再分割,通过两次区域分割将复杂船舶外立面分割为若干面积较小、喷涂工艺一致且几何形状简单的子区域;最后对具有不同特征的子区域使用不同的轨迹生成算法:接近平面的区域采用切片轨迹生成算法,曲率稍大的部位采用基于基准曲线的轨迹生成法;针对轨迹生成中的截平面与待喷涂曲面的求交问题,提出了基于半边拓扑结构的交点求解算法,加快了交线生成的速度。最后本文在课题组现有研究成果的基础上,完成了面向大型船舶外立面的喷涂机器人离线编程与仿真软件系统的设计与实现。除了喷涂轨迹规划子系统外,还包括对喷涂机器人进行正运动学建模、逆运动学求解的运动学计算子系统,基于机器人编程语言国家标准设计的中间语言子系统,完成中间语言和目标机器人语言之间的转换的程序转换子系统。以此系统为实验平台,对本文提出的分段喷涂解决方案以及轨迹规划相关算法进行了相应的仿真与实验,验证了本文方法的有效性与实用性。

操旺根[4](2020)在《Java并发程序中数据竞争的静态检测工具的设计与实现》文中指出随着云计算、大数据的兴起和各种分布式系统的应用,并发编程也变得越来越流行。然而并发程序编写容易出错,数据竞争就是并发程序中典型的缺陷,它是指多个线程在没有经过同步的情况下同时对共享内存变量进行了访问,并且其中至少有一个写访问。数据竞争在并发程序中经常出现且不易觉察、隐藏较深、难以复现。为了保证系统稳定安全地运行,实习公司提出要设计一款检测Java并发程序中数据竞争问题的检测工具。本文在阅读大量国内外文献的基础上,通过综合运用多种静态分析技术提出了一种能够检测Java并发程序中数据竞争缺陷的静态检测方法,并实现了相应的检测工具。首先,使用soot分析框架将被检测代码转换成易于分析的Jimple中间形式;其次,使用控制流分析和数据流分析对程序执行流程进行建模,构造线程内和线程间的控制流图和函数调用图;再次,定义和提取线程中变量的内存访问事件;然后,使用数据竞争形成条件算法对生成的内存变量访问事件集合进行笛卡尔积运算,判定可能会产生数据竞争的内存变量访问事件。在判定数据竞争的同时对变量访问事件进行并发性分析和别名分析,以降低工具的误报率和漏报率。最后,本文设计和实现了该检测工具,并选取了八个包含数据竞争缺陷的程序作为实验对象,经过实验验证,本论文工具在漏报率、误报率和检测效率上均表现良好,可以有效地检测出Java并发程序中的数据竞争缺陷。

高云云[5](2019)在《C语言编译系统的研究与实现》文中提出相比于其他自然科学,计算机科学算是较新的科学体系,还有很多技术领域有待学者进一步探索。编译技术是系统软件的设计学科,作为计算机技术发展的基石,学习编译器设计的目的不仅在于其本身的理论和技术,其解决问题的思路与方法更值得学者学习借鉴。本文基于C++编程语言采用面向对象的思想,系统的实现了一个C语言编译器MiniC,并结合MiniC的源代码,从前端和后端两个角度出发,详细介绍了编译器各个模块数据结构和算法框架的设计实现。论文的研究工作主要体现在如下几个方面:前端部分实现包括词法分析、语法分析及与语义分析。词法分析部分采用有穷状态自动机进行单词识别,然后采用哈希表结构实现单词的插入与查找。采用语法制导翻译,在语法分析的过程中直接驱动语义分析,并采用栈式结构组织符号表,实现符号的存储及作用域管理。后端部分实现包括汇编与链接。汇编过程采用直接翻译方式将源语言翻译为机器指令,着重阐述了寄存器的分配算法、程序运行时的存储管理及目标文件生成。链接过程对符号进行分析及重定位,将符号引用与定义相关联,最终生成Windows系统下PE文件格式的可执行文件。错误管理贯穿整个编译系统,统计编译及链接过程中发生的错误,然后向用户输出。最终对编译系统的测试结果表明,本文实现的C编译器能够将源程序经过编译、汇编生成目标文件,再通过链接生成可执行文件,并在目标机器上成功运行得到正确的结果。

杨勇[6](2019)在《基于虚拟现实的数控车床切削过程动态仿真研究》文中研究指明近年来,随着“工业4.0”以及“中国制造2025”战略的提出,促进了传统制造方式的深刻变革。基于虚拟现实技术的数控仿真技术为生产加工提供了新的解决策略,优化了发现生产问题到寻找解决方案的途径,最终提高生产效率、节约成本。该方案已经成为研究加工过程的最优手段,具有极大的研究意义。本课题针对现有数控仿真系统存在的不足,主要从仿真系统的切削效率和仿真环境的真实感方面进行改进。利用虚拟现实技术,以Unity 3D为虚拟开发平台,C#作为开发语言;利用Creo2.0、3DMAX为几何建模工具,构建数控机床及场景组成模块的三维几何模型;利用Unity UGUI框架与脚本编程,实现机床运动仿真及切削动态仿真研究。最终,以BRT5085型数控车床为加工原型代表,结合HTC VIVE虚拟设备,成功设计了一套全新的虚拟数控仿真系统。其主要工作如下:(1)虚拟数控车床三维模型及NC系统框架的构建结合常用的几何建模方法,利用现有的Creo2.0和3DMAX几何建模软件,按照真实尺寸和结构,构建BRT5085数控车床的1:1静态模型。为使虚拟数控系统便于保持扩展,采用设计模式的思想,建立GSK980TD虚拟NC系统。(2)虚拟仿真系统关键算法研究与分析针对各数控模块之间的碰撞问题,采用基于OBB类型的层次包围盒检测法实现数控加工系统的碰撞检测。通过研究现有切削算法的优缺点,设计了一种结合车刀扫描多边形和扫描体求交运算的新型切削算法。(3)NC代码解析和编译利用.NET Framework提供的Regex匹配技术,设计了通用的数控代码编译模块,实现NC代码的词法分析和语义分析等,并编译为规范形式的数据结构,最终转化成机床运动信息。(4)虚拟数控系统移植至Android移动平台将数控系统移植到Android 4.4平台,利用Socket远程通信技术,对PC端和Android实现NC代码和加工信息的传递和显示。

谢超[7](2019)在《基于QT的跨平台嵌入式运动控制系统研究》文中研究表明运动控制系统的设计是实现数控机床进行自动加工的重要技术,是衡量一个国家工业发展水平的重要标志。近年来随着嵌入式计算机软硬件性能迅速提升,出现了功能丰富、性能高可定制性的嵌入式数控软件系统。这类低成本、低功耗的软硬件组合系统大大扩展了传统数控技术的应用领域,成为当前运动控制技术应用领域内的一个热点。本文在研究运动控制系统的基础之上,利用“嵌入式工控机+嵌入式NC模块”对系统结构进行构建,搭建了系统的硬件平台。这种系统结构设计,具有较高的开放性、体积小、成本低、开发周期短、且功能易扩展。在这种硬件结构基础上,以面向对象的C++语言和Qt开发环境,在Windows和Linux系统下开发出一套可跨平台的嵌入式运动控制软件系统。该软件系统划分为五大功能模块,分别为人机交互模块、数控代码预处理模块、运动控制模块、刀具管理模块和刀具路径仿真模块。各个模块相互独立、通过接口进行数据交互,能够根据系统的不同需求,实现功能的添加和卸载。数控代码预处理模块中,使用了正则表达式对加工代码进行词法、语法分析和错误代码定位,提取正确代码的指令和数据以及对模态代码进行处理,利用正则表达式处理字符的优势,设计出兼容多种不同格式的数控代码解析器。对解析后的代码再建立刀具补偿模型,将代码加工轨迹转换成刀具中心加工轨迹。同时利用Qt的开发框架,设计和开发了人机交互模块;根据运动控制器提供插补功能进行二次开发,设计出运动控制功能模块;基于数据库技术建立起刀具管理模块;运用OpenGL图形仿真技术,对加工路径进行三维仿真验证加工代码的正确性;最后将Windows系统下设计的程序代码移植到嵌入式工控机的Linux系统下,验证了系统的跨平台执行能力。

刘正[8](2014)在《工程机械嵌入式PLC即时编译系统的研究与实现》文中研究说明编译系统是嵌入式PLC研发的关键核心环节,一个良好的编译系统的研发对整个嵌入式PLC运行性能起着决定性作用。目前市场大部分PLC编译系统都是封闭的且具有产权保护,价格昂贵。因此本文针对工程机械控制器产品研究PLC编译系统技术。本文分析传统PLC编译系统方法的优缺点,结合最近几年编译系统领域出现的编译新思想,提出采用编译与解释相结合的PLC即时编译方法,解决传统编译系统在上位机和下位机资源消耗和运行速度之间的矛盾,达到适合工控需求和软件研发的有效平衡。针对编译系统工作量繁多问题,采用解释后端的方式简化了系统的编译目标代码阶段,大幅降低了整个编译系统的开发工作量。针对PLC语法语义复杂等价变换问题,采用了中间语言的方式,能够表述PLC源语言所包含的任何语义。同时通过精简PLC源语言指令集,减轻了底层处理命令的压力,提高底层解释效率,便于移植、修改、优化。针对编译系统对准确性的苛刻要求,通过建立完善的出错处理机制,能够及时准确发现源程序错误,保证用户可以准确定位错误,方便修改。针对目标机体系结构的异构性,通过配置GCC后端,得到适合特定机型的系统解释后端。针对工程机械实际需求,建立维护可靠的符号表,满足工控机的端口以及其他特性要求。本文针对山河智能装备集团的工程机械控制器,基于上位机Windows系统和VS2005开发环境,采用C++开发语言,实现了编译系统的编译前端和上位机解释器。通过配置GCC后端,实现编译系统解释后端向PowerPC体系结构的目标机移植工作。最终实现一个嵌入式PLC最小编译系统,为上位机PLC集成开发平台提供编译环境。

章善财[9](2014)在《数控系统通用代码编译系统的研究与开发》文中提出数控系统通用代码编译系统在数控系统中有着重要作用,它的最终目的是报告NC代码中存在的错误,生成正确的刀具中心轨迹文件,提取NC代码中包含的刀具运动信息、控制信息和辅助信息等,并将其转换成数控机床控制系统能够识别的数据格式。本文研究的代码编译系统是针对标准G代码设计的通用代码编译系统,是合肥工业大学CIMS研究所研发的专用型齿轮机床数控系统和基于PMAC+工控机的高性能智能化数控系统的重要组成部分。本文的主要内容有:⑴系统将计算机编译技术引入NC代码的处理过程中,并结合数控加工原理将系统的编译过程分为预处理、词法分析、语法分析、刀具半径补偿和代码转换等过程。⑵本文通过对标准G代码的研究,并结合计算机编译原理,提出了数控系统通用代码编译系统的功能需求,确定了系统的设计思想和整体架构。系统采用模块化的设计思想,即将系统分为不同的功能模块,主要有预处理模块、词法分析模块、语法分析模块、刀补模块、编译模块、程序管理模块、刀具管理模块和参数设置模块等,不同的功能模块实现不同的功能。⑶本文详细介绍了各功能模块的具体实现,并就一些关键技术进行了详细分析,如代码信息的提取、缓冲区代码信息的读取、超前搜索识别、宏程序和子程序的实现、系统的出错处理、符号表的管理等。⑷本文重点阐述了系统刀具半径补偿功能的实现,并详细分析了刀具半径补偿原理、常用方法和执行过程,建立了刀具半径补偿的数学模型,提出了刀具半径补偿的具体算法,并就刀具半径补偿的过切判断进行了分析。此外,文章详细阐述了刀具半径补偿在数控系统通用代码编译系统中的具体实现。⑸系统采用规范的标准C语言进行设计,并运用面向对象编程技术,在Windows操作系统上采用Visual C++中的MFC模块作为开发工具。并在基于ARM+DSP+FPGA嵌入式硬件平台的齿轮加工数控系统和基于PMAC+工控机的高性能智能化数控系统进行各功能模块测试和系统测试,测试结果显示,系统基本符合预期的设计要求,能够实现NC代码检错、刀具半径补偿、代码转换、程序管理、刀具管理和参数设置等功能。

郭欣[10](2012)在《数控切割机控制系统的程序编译及图形变换》文中研究说明随着科技的不断发展,当前各种先进的制造技术也得到了迅猛发展,而这一过程离不开数控技术的支持。我国一些发展较快的大型企业,不仅有先进的制造技术,而且在数控技术方面,具有自主研发的能力,拓宽了企业发展的空间。而一些中小企业,尤其是民营企业,由于资金方面的限制,使得其无法投入更多的精力从事数控技术的研发工作,他们多采用将自己的产品搭建在从其他企业购买的数控控制系统之上的生产模式,这不仅局限了企业的对核心技术的掌握,而且也增加了产品的成本。本文以开发经济型数控切割机控制系统为背景,对数控切割机控制系统软件设计中的程序编译和图形变换进行了重点研究。全文研究的内容主要包括:(1)分别对数控技术和数控切割技术的国内外发展现状和趋势进行了分析,明确数控切割机的应用在当下数控加工中的重要作用;分析了数控软件系统的特点及结构模式;介绍了数控软件系统中人机界面的重要作用及设计原则;并在前面分析的基础上,提出了本文的研究意义。(2)研究了数控切割机控制系统的硬件结构,对硬件系统各部分的功能及组成进行了描述;在数控切割机的软件开发环境中,分别对DOS操作系统、‘Turbo C和DJGPP进行了介绍。(3)研究了数控加工的方法,数控加工程序的组成及代码意义;并从程序编译模块需求分析、数控程序存储方式、词法分析和语法分析等方面,阐述了数控加工程序编译的软件设计与实现方法。(4)根据算法,研究了在二维坐标中,对数控加工器件的图形进行各种几何变换,如图形文件物理上的平移、缩放、翻转和旋转,及视觉上的缩放操作。程序设计采用模块化的设计方法。(5)研究了控制系统的各功能模块工作情况;并对系统测试情况进行了分析。通过本文的研究,成功协助其他组员开发出了具有自主知识产权的、国产化经济型数控切割机控制系统。开发产品通过现场测试表明,其控制系统符合设计要求,软件运行稳定,使用方便。目前,数控切割机控制系统已进入试生产阶段。

二、程序编译的起步——词法分析(论文开题报告)

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

此处内容要求:

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

写法范例:

本文主要提出一款精简64位RISC处理器存储管理单元结构并详细分析其设计过程。在该MMU结构中,TLB采用叁个分离的TLB,TLB采用基于内容查找的相联存储器并行查找,支持粗粒度为64KB和细粒度为4KB两种页面大小,采用多级分层页表结构映射地址空间,并详细论述了四级页表转换过程,TLB结构组织等。该MMU结构将作为该处理器存储系统实现的一个重要组成部分。

(2)本文研究方法

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

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

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

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

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

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

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

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

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

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

三、程序编译的起步——词法分析(论文提纲范文)

(1)面向JavaScript解析引擎的模糊测试技术研究(论文提纲范文)

摘要
Abstract
第一章 绪论
    1.1 研究背景及意义
    1.2 国内外研究现状及面临的问题
        1.2.1 基于生成的模糊测试方法
        1.2.2 基于变异的模糊测试方法
    1.3 主要研究内容
    1.4 论文结构
第二章 JavaScript引擎漏洞挖掘相关技术分析
    2.1 引言
    2.2 JavaScript引擎介绍
        2.2.1 JavaScript引擎架构
        2.2.2 JavaScript引擎运行信息
    2.3 JavaScript引擎漏洞介绍
        2.3.1 缓冲区溢出
        2.3.2 释放后重利用
        2.3.3 类型混淆
        2.3.4 JIT漏洞
    2.4 漏洞挖掘技术概述
        2.4.1 数据流分析
        2.4.2 污点分析
        2.4.3 符号执行
        2.4.4 模糊测试
    2.5 本章小结
第三章 基于语法树粒度的种子变异模型
    3.1 引言
    3.2 Tree Model模型与已有方法区别
    3.3 整体工作流程
    3.4 基于AFL覆盖率反馈方法
        3.4.1 基本块信息介绍
        3.4.2 覆盖率反馈方法
    3.5 语法树子树变异策略
        3.5.1 抽象语法树介绍
        3.5.2 子树池构建
        3.5.3 子树替换变异
    3.6 实验设计与评估
        3.6.1 实验设置
        3.6.2 漏洞发现能力提升
        3.6.3 代码覆盖率提升
        3.6.4 执行性能对比
    3.7 本章小结
第四章 子树类型敏感的种子变异增强策略
    4.1 引言
    4.2 整体工作流程
    4.3 同类型子树变异策略设计与实现
        4.3.1 初始种子预处理
        4.3.2 同类型子树变异
    4.4 实验设计与评估
        4.4.1 实验设置
        4.4.2 漏洞发现能力提升
        4.4.3 代码覆盖率提升
        4.4.4 生成测试用例有效率提升
        4.4.5 执行性能对比
    4.5 本章小结
第五章 子树类型敏感的种子能量分配策略
    5.1 引言
    5.2 整体工作流程
    5.3 能量分配策略设计与实现
        5.3.1 种子能量分配策略
        5.3.2 子树能量分配策略
        5.3.3 整体能量分配策略
    5.4 实验设计与评估
        5.4.1 实验设置
        5.4.2 漏洞发现能力提升
        5.4.3 代码覆盖率提升
        5.4.4 生成测试用例有效率对比
        5.4.5 执行性能对比
    5.5 漏洞统计与分析
        5.5.1 漏洞统计
        5.5.2 漏洞分析
    5.6 本章小结
第六章 结论与展望
    6.1 结论
    6.2 不足之处及未来展望
致谢
参考文献
附录:作者在攻读硕士学位期间发表的论文

(2)面向对象程序的自动化单元测试框架研究与设计(论文提纲范文)

摘要
ABSTRACT
第一章 绪论
    1.1 研究背景
    1.2 研究内容
    1.3 论文章节安排
第二章 相关研究
    2.1 单元测试
    2.2 面向对象程序测试
    2.3 面向对象程序单元测试
        2.3.1 面向对象程序单元测试理论
        2.3.2 面向对象程序单元测试工具
        2.3.3 面向对象程序单元测试现状分析
    2.4 本章小结
第三章 面向对象程序的自动化单元测试框架需求分析
    3.1 面向对象程序单元测试框架研究
        3.1.1 框架设计原则
        3.1.2 框架的原型设计
    3.2 测试框架的功能需求
    3.3 测试框架的性能需求
        3.3.1 多程序测试后JVM内存溢出的工程问题
        3.3.2 平台适应性
    3.4 本章小结
第四章 面向对象程序的自动化单元测试框架设计
    4.1 面向对象自动化单元测试框架
        4.1.1 设计原理
        4.1.2 系统概述与框架流程图
        4.1.3 总体框架
    4.2 针对C++程序的功能设计
        4.2.1 相关模块的变更
        4.2.2 私有成员函数的测试
        4.2.3 函数重载
    4.3 多程序测试JVM内存溢出问题的性能设计
        4.3.1 JVM内存垃圾回收机制
        4.3.2 序列化和反序列化
        4.3.3 界面架构变更
    4.4 适配器模块的设计
        4.4.1 跨平台的需求
        4.4.2 适配器设计模式
        4.4.3 CTSCpp适配器设计
    4.5 本章小结
第五章 实验结果及分析
    5.1 实验环境
    5.2 实验结果及分析
        5.2.1 功能测试
        5.2.2 性能测试
    5.3 本章小结
第六章 总结与展望
    6.1 研究工作总结
    6.2 进一步研究工作
参考文献
附录
致谢

(3)面向大型船舶外立面的喷涂机器人离线编程与仿真系统(论文提纲范文)

摘要
Abstract
第一章 绪论
    1.1 课题研究背景
    1.2 国内外研究现状
        1.2.1 大型船舶外立面喷涂机器人的研究现状
        1.2.2 针对复杂曲面的喷涂轨迹规划研究现状
        1.2.3 机器人离线编程软件研究现状
        1.2.4 现有方法存在的问题
    1.3 本文的主要工作
    1.4 本文的章节安排
第二章 大规模船舶喷涂场景的导入及处理加速技术
    2.1 STL格式文件分析
    2.2 船舶外立面模型存储结构的优化设计
        2.2.1 基于半边结构表示拓扑信息
        2.2.2 拓扑重建算法优化
    2.3 船舶外立面模型的几何特征提取
    2.4 测试实例与算法分析
        2.4.1 拓扑重建
        2.4.2 船舶外立面几何特征提取
    2.5 本章小结
第三章 基于大型船舶外立面的喷涂机器人轨迹生成和优化
    3.1 船舶喷涂工艺分析
    3.2 基于船舶喷涂工艺需求的区域初分割
    3.3 基于船舶外立面几何特征的区域再分割
        3.3.1 生长原则
        3.3.2 基于二面角的半边扩展生长算法
    3.4 喷涂轨迹生成算法
        3.4.1 切片轨迹生成算法
        3.4.2 基于基准曲线的轨迹生成算法
        3.4.3 基于半边拓扑结构的交点求解
    3.5 仿真实例与算法分析
        3.5.1 区域分割
        3.5.2 轨迹生成
        3.5.3 喷涂质量评估
    3.6 本章小结
第四章 面向大型船舶立面喷涂的离线编程与仿真系统实现
    4.1 离线编程与仿真系统设计
        4.1.1 需求分析
        4.1.2 系统结构
    4.2 喷涂机器人运动学计算子系统
        4.2.1 喷涂机构形式选择
        4.2.2 正运动学建模
        4.2.3 逆运动学求解
        4.2.4 川崎喷涂机器人运动学求解实例
    4.3 基于机器人编程语言国家标准的中间语言子系统
        4.3.1 中间语言设计规则
        4.3.2 机器人中间语言编译系统
    4.4 程序转化子系统
    4.5 系统应用效果
    4.6 本章小结
第五章 总结与展望
    5.1 总结
    5.2 展望
致谢
参考文献
作者在攻读硕士期间的研究成果

(4)Java并发程序中数据竞争的静态检测工具的设计与实现(论文提纲范文)

摘要
Abstract
第一章 绪论
    1.1 课题背景
    1.2 研究背景与意义
    1.3 国内外研究现状
        1.3.1 国外研究现状
        1.3.2 国内研究现状
    1.4 论文的主要工作
    1.5 本文的组织结构
第二章 相关技术与理论
    2.1 多线程并发技术
        2.1.1 多线程概念
        2.1.2 多线程实现方式
        2.1.3 Java多线程及内存模型
    2.2 数据竞争
    2.3 静态检测技术及特点
    2.4 静态分析方法
        2.4.1 基本分析方法
        2.4.2 形式化分析方法
        2.4.3 其他分析方法
    2.5 本章小结
第三章 Java并发程序数据竞争静态检测方法
    3.1 静态检测方法设计
    3.2 中间代码转换
    3.3 程序建模
        3.3.1 控制流图构建
        3.3.2 函数调用图构建
    3.4 访问事件生成
    3.5 并发性分析
    3.6 别名分析
    3.7 本章小结
第四章 工具设计与实现
    4.1 工具总体架构
    4.2 程序建模模块
    4.3 访问事件生成模块
    4.4 竞争判定模块
    4.5 检测报告生成模块
    4.6 工具执行
    4.7 本章小结
第五章 实验及分析
    5.1 实验环境与实验对象
    5.2 实验内容
        5.2.1 度量标准
        5.2.2 实验结果及分析
    5.3 本章小结
第六章 总结与展望
致谢
参考文献

(5)C语言编译系统的研究与实现(论文提纲范文)

摘要
abstract
专用术语注释表
第一章 绪论
    1.1 C语言简介
    1.2 论文的研究背景及意义
    1.3 国内外研究现状
    1.4 主流C语言编译器
    1.5 论文的主要工作及结构安排
第二章 编译系统设计原理概述
    2.1 词法分析
        2.1.1 正则表达式
        2.1.2 有穷状态自动机
        2.1.3 从正则表达式到有穷自动机的转换
        2.1.4 单词识别
    2.2 语法分析
        2.2.1 上下文无关法
        2.2.2 FIRST、FOLLOW集合
    2.3 语义分析
        2.3.1 语法制导翻译
        2.3.2 符号表
    2.4 汇编生成目标文件
    2.5 链接生成可执行文件
        2.5.1 PE文件格式
        2.5.2 可选文件头
    2.6 主流编译器及相关工具实现技术对比
    2.7 本章小结
第三章 编译系统前端设计与实现
    3.1 词法分析
        3.1.1 分词算法框架
        3.1.2 单词编码规则
        3.1.3 DFA实现
        3.1.4 单词表数据结构
        3.1.5 哈希冲突解决方法
    3.2 语法分析及语义分析
        3.2.1 文法定义
        3.2.2 类型信息
        3.2.3 符号表设计实现
    3.3 错误管理
    3.4 模块间关系及类结构设计
    3.5 本章小结
第四章 编译器后端设计与实现
    4.1 目标机器
        4.1.1 汇编指令
        4.1.2 寄存器分配
    4.2 运行时的存储管理
        4.2.1 过程活动记录
        4.2.2 栈式存储管理
    4.3 生成目标文件
        4.3.1 节数据存储
        4.3.2 Obj文件生成
    4.4 生成可执行文件
        4.4.1 导入库文件
        4.4.2 外部符号解析及重定位
    4.5 模块间关系及类结构设计
    4.6 本章小结
第五章 系统分析及测试
    5.1 实验环境
    5.2 系统分析
    5.3 词法分析器功能测试
    5.4 语法分析器功能测试
        5.4.1 基本运算测试
        5.4.2 语句测试
    5.5 目标文件生成测试
    5.6 可执行文件测试
    5.7 错误管理测试
    5.8 本章小结
第六章 总结与展望
    6.1 总结
    6.2 展望
参考文献
附录1 攻读硕士学位期间申请的专利
致谢

(6)基于虚拟现实的数控车床切削过程动态仿真研究(论文提纲范文)

摘要
abstract
第一章 绪论
    1.1 课题研究背景与意义
        1.1.1 课题研究背景
        1.1.2 课题研究意义
    1.2 虚拟数控仿真技术概述
        1.2.1 虚拟数控仿真技术简介
        1.2.2 虚拟数控仿真技术的划分
        1.2.3 虚拟数控仿真技术研究现状
    1.3 论文主要研究工作和结构
第二章 虚拟数控仿真系统的方案设计
    2.1 仿真系统的功能分析
        2.1.1 仿真系统需求分析
        2.1.2 仿真系统功能设计
    2.2 仿真系统的开发工具和平台
        2.2.1 三维模型建立工具
        2.2.2 Unity3D虚拟开发平台
        2.2.3 Android系统开发平台
        2.2.4 VR头显交互设备
    2.3 仿真系统的整体架构设计
    2.4 本章小节
第三章 虚拟数控仿真系统基础模块开发
    3.1 仿真系统场景模块的构建
        3.1.1 场景基本模型的建立
        3.1.2 场景基本模型的渲染和优化
    3.2 虚拟环境操作模块的设计
    3.3 虚拟数控系统操作模块的设计
        3.3.1 引言
        3.3.2 数控系统操作面板的设计
        3.3.3 数控系统软件框架的设计
    3.4 仿真系统通讯模块的实现
        3.4.1 Socket通信概述
        3.4.2 通信模块工作原理
    3.5 仿真系统NC代码解析模块设计
        3.5.1 NC代码解析技术概述
        3.5.2 NC代码的结构组成
        3.5.3 NC代码解析模块的设计
    3.6 本章小节
第四章 车削过程物理仿真模型
    4.1 引言
    4.2 仿真系统切削力和切削温度模型
    4.3 切削力和切削温度的计算过程
    4.4 本章小节
第五章 动态切削过程关键算法研究
    5.1 碰撞检测技术
        5.1.1 碰撞检测算法分类
        5.1.2 碰撞检测算法的检测流程
        5.1.3 碰撞检测算法的改进
    5.2 动态切削过程仿真技术研究
        5.2.1 切削算法研究现状
        5.2.2 切削算法理论基础
        5.2.3 动态切削算法设计实现
    5.3 本章小节
第六章 虚拟数控仿真系统加工实例测试
    6.1 虚拟仿真系统硬件平台
    6.2 碰撞检测算法测试
    6.3 NC代码解析效果测试
    6.4 典型切削加工实例测试
        6.4.1 阶梯轴类加工测试
        6.4.2 轴套类加工测试
        6.4.3 螺纹轴类加工测试
        6.4.4 仿真系统性能研究分析
    6.5 虚拟仿真系统沉浸效果体验
    6.6 本章小结
第七章 总结与展望
    7.1 总结
    7.2 展望
致谢
参考文献

(7)基于QT的跨平台嵌入式运动控制系统研究(论文提纲范文)

摘要
ABSTRACT
第1章 绪论
    1.1 引言
    1.2 国内外运动控制系统研究与发展
        1.2.1 运动控制技术的研究现状
        1.2.2 国外运动控制系统发展概况
        1.2.3 国内运动控制系统发展概况
        1.2.4 跨平台运动控制系统研究
    1.3 本文的主要研究内容
第2章 系统整体方案设计
    2.1 运动控制系统需求分析
    2.2 运动控制系统的结构类型与选择
        2.2.1 基本结构类型
        2.2.2 结构类型选择
    2.3 运动控制系统的设计
        2.3.1 硬件系统设计
        2.3.2 软件系统设计
    2.4 运动控制系统硬件平台搭建
        2.4.1 系统硬件选型
        2.4.2 系统硬件平台搭建
    2.5 本章小结
第3章 运动控制系统软件设计分析
    3.1 系统开发环境介绍
        3.1.1 Qt简介
        3.1.2 Qt开发优点
    3.2 运动控制系统软件结构分析
        3.2.1 系统加工流程分析
        3.2.2 系统功能划分
    3.3 运动控制模块分析
        3.3.1 运动控制模块功能分析
        3.3.2 自动加工实现过程
    3.4 刀具管理模块分析
    3.5 刀具路径仿真分析
        3.5.1 刀具路径仿真功能分析
        3.5.2 OpenGL
    3.6 本章小结
第4章 数控加工代码预处理
    4.1 数控代码结构分析
        4.1.1 代码功能定义及组成
        4.1.2 数控代码文件的解析过程
        4.1.3 数控代码错误类型
    4.2 数控代码解析器的设计
        4.2.1 正则表达式
        4.2.2 词法分析
        4.2.3 语法分析
        4.2.4 数据提取
        4.2.5 模态代码的处理
        4.2.6 数控代码解析器程序设计
    4.3 刀具补偿研究与设计
        4.3.1 刀具补偿的基本概念
        4.3.2 刀具半径补偿的研究
        4.3.3 刀具半径补偿的设计
    4.4 本章小结
第5章 系统功能实现与验证
    5.1 人机交互界面和主程序设计实现
    5.2 运动控制功能设计实现
        5.2.1 运动控制器初始化
        5.2.2 回原点方式设置
        5.2.3 连续轨迹运动
    5.3 刀具管理功能设计实现
        5.3.1 刀具数据表的建立
        5.3.2 刀具管理功能操作
    5.4 刀具路径仿真设计实现
        5.4.1 图形变换操作设计
        5.4.2 绘制实时路径
        5.4.3 刀具路径仿真显示
    5.5 跨平台功能设计实现
    5.6 系统功能测试
    5.7 本章小结
第6章 总结与展望
    6.1 本文主要工作的总结
    6.2 进一步工作的展望
致谢
参考文献
作者在校期间参加的科研项目

(8)工程机械嵌入式PLC即时编译系统的研究与实现(论文提纲范文)

摘要
Abstract
目录
1 绪论
    1.1 论文研究背景
    1.2 国内外研究现状
        1.2.1 编译系统的研究现状
        1.2.2 工程机械编译系统的研究现状
        1.2.3 PLC技术的研究现状
    1.3 论文主要内容与组织结构
        1.3.1 研究内容
        1.3.2 论文组织结构
2 编译与解释相结合的PLC即时编译
    2.1 传统PLC编译方法研究与分析
        2.1.1 编译型PLC
        2.1.2 解释型PLC
        2.1.3 PLC转换C语言型
    2.2 编译与解释相结合的PLC即时编译思想
        2.2.1 编译与解释相结合的思想
        2.2.2 编译与解释相结合的PLC即时编译方案
        2.2.3 方案特色分析
    2.3 PLC下位机工作机制
    2.4 编译器需求分析和难点
        2.4.1 底层执行模块分析
        2.4.2 系统核心需求分析
        2.4.3 编译系统实现难点
    2.5 本章小结
3 编译系统的整体方案设计与理论基础
    3.1 整体方案设计
        3.1.1 编译前端的流程
        3.1.2 解释后端的流程
    3.2 编译系统的理论基础
    3.3 源语言处理准备工作
    3.4 本章小结
4 编译系统的开发与实现
    4.1 开发工具和平台选择
    4.2 系统数据结构设计与实现
        4.2.1 PLC结点数据结构
        4.2.2 PLC操作命令符表
        4.2.3 栈元素数据结构
        4.2.4 中间语言数据结构
        4.2.5 错误报告结构体
        4.2.6 符号表系统
    4.3 编译前端的开发与实现
        4.3.1 设计流程
        4.3.2 词法分析器
        4.3.3 语法分析器
        4.3.4 语义分析器
        4.3.5 中间代码生成
        4.3.6 错误管理机制
    4.4 解释后端开发与实现
        4.4.1 上位机解释器的构造设计
        4.4.2 中间语言的编码实现
        4.4.3 目标机的体系结构
        4.4.4 目标机器描述和GCC配置
    4.5 本章小结
5 编译系统的仿真与测试
    5.1 编译前端的测试
    5.2 上位机解释后端测试
    5.3 下位机解释后端测试
    5.4 本章小结
总结与展望
参考文献
攻读硕士学位期间的主要研究成果
致谢

(9)数控系统通用代码编译系统的研究与开发(论文提纲范文)

致谢
摘要
ABSTRACT
目录
插图清单
表格清单
第一章 绪论
    1.1 论文来源及选题意义
        1.1.1 论文来源
        1.1.2 选题意义
    1.2 数控技术发展现状
    1.3 数控代码编译技术研究现状
        1.3.1 数控代码编译技术概况
        1.3.2 国外数控代码编译技术发展概况
        1.3.3 国内数控代码编译技术发展概况
    1.4 本文的研究内容及章节安排
        1.4.1 本文的研究内容
        1.4.2 本文的章节安排
    1.5 本章小结
第二章 代码编译原理和通用代码编译系统的总体设计
    2.1 NC 代码编译原理概述
        2.1.1 编译原理概述
        2.1.2 通用 NC 代码编译过程
    2.2 数控系统通用 NC 代码概述
        2.2.1 通用 NC 代码的简单介绍
        2.2.2 数控加工程序的组成和基本结构
        2.2.3 通用 NC 代码的错误分析
        2.2.4 通用 NC 代码的常用处理方法
    2.3 数控系统通用代码编译系统的功能需求
    2.4 数控系统通用代码编译系统的整体架构
        2.4.1 系统的设计思想
        2.4.2 系统的整体架构
    2.5 数控系统通用代码编译系统的开发环境
    2.6 本章小结
第三章 通用代码编译系统各功能模块的开发与实现
    3.1 预处理
    3.2 词法分析
        3.2.1 词法分析概述
        3.2.2 词法分析的实现
        3.2.3 代码信息的提取
    3.3 语法分析
        3.3.1 语法分析概述
        3.3.2 语法分析的实现
    3.4 代码转换
        3.4.1 宏程序的实现
        3.4.2 子程序的实现
        3.4.3 模态代码的实现
    3.5 出错处理
    3.6 符号表管理
        3.6.1 符号表概述
        3.6.2 符号表的逻辑结构
    3.7 本章小结
第四章 数控系统刀具半径补偿功能的研发实现
    4.1 刀具半径补偿概述
        4.1.1 刀具半径补偿的基本原理
        4.1.2 刀具半径补偿的常用方法
        4.1.3 C 刀补的转接类型
        4.1.4 C 刀补的执行过程
    4.2 刀具半径补偿的数学模型和算法
        4.2.1 方向矢量
        4.2.2 刀具半径矢量
        4.2.3 转接形式判断
        4.2.4 刀具中心轨迹转接点的计算
    4.3 系统刀具半径补偿的实现
    4.4 刀具半径补偿的过切判断
        4.4.1 刀具半径补偿的过切削条件
        4.4.2 系统的过切处理
    4.5 本章小结
第五章 通用代码编译系统的集成与测试
    5.1 系统测试
        5.1.1 系统软件测试概述
        5.1.2 系统测试过程
    5.2 系统的界面设计
    5.3 系统测试实例
        5.3.1 系统的主要模块测试实例
        5.3.2 系统的其它模块测试实例
    5.4 系统应用实例
    5.5 本章小结
第六章 总结与展望
    6.1 总结
    6.2 展望
参考文献
攻读硕士学位期间的学术活动及成果情况

(10)数控切割机控制系统的程序编译及图形变换(论文提纲范文)

摘要
Abstract
第1章 绪论
    1.1 本文的研究意义
        1.1.1 本文提出的背景
        1.1.2 本文研究的意义
    1.2 本文的研究现状及趋势
        1.2.1 数控技术发展现状及趋势
        1.2.2 数控切割机发展、应用现状及趋势
        1.2.3 数控软件系统的发展及人机界面
        1.2.4 程序编译和图形变换的研究现状
    1.3 本文研究的主要内容、目标与方法
第2章 数控切割机控制系统分析
    2.1 数控切割机控制系统的硬件构造
        2.1.1 工控PC单元
        2.1.2 运动控制单元
    2.2 数控切割机软件开发环境分析
        2.2.1 DOS操作系统的使用
        2.2.2 Turbo C的使用
        2.2.3 DJGPP开发环境使用
    2.3 本章小结
第3章 程序编译的软件设计与实现
    3.1 程序编译原理
    3.2 数控加工程序简介
        3.2.1 主要数控加工功能指令分析
        3.2.2 数控加工程序格式
    3.3 数控加工程序编译的软件设计与实现
        3.3.1 数控加工程序编译需求分析
        3.3.2 数控加工程序编译模块设计与实现
    3.4 本章小结
第4章 图形变换的软件设计与实现
    4.1 图形仿真在数控加工中的应用
    4.2 二维图形的几何变换
        4.2.1 图形的基本元素
        4.2.2 图形空间参数的获取
        4.2.3 图形的平移
        4.2.4 图形的缩放
        4.2.5 图形的旋转
        4.2.6 图形的对称变换
    4.3 三维图形的几何变换
    4.4 本章小结
第5章 系统总体情况分析
    5.1 数控切割机控制功能分析
    5.2 测试情况分析
    5.3 小结
总结与展望
    总结
    展望
致谢
参考文献
附录1
附录2
附录3
附录4
攻读硕士学位期间发表的论文及科研成果

四、程序编译的起步——词法分析(论文参考文献)

  • [1]面向JavaScript解析引擎的模糊测试技术研究[D]. 王聪冲. 江南大学, 2021(01)
  • [2]面向对象程序的自动化单元测试框架研究与设计[D]. 任路遥. 北京邮电大学, 2020(05)
  • [3]面向大型船舶外立面的喷涂机器人离线编程与仿真系统[D]. 周颖娟. 东南大学, 2020(01)
  • [4]Java并发程序中数据竞争的静态检测工具的设计与实现[D]. 操旺根. 东南大学, 2020(01)
  • [5]C语言编译系统的研究与实现[D]. 高云云. 南京邮电大学, 2019(02)
  • [6]基于虚拟现实的数控车床切削过程动态仿真研究[D]. 杨勇. 电子科技大学, 2019(01)
  • [7]基于QT的跨平台嵌入式运动控制系统研究[D]. 谢超. 杭州电子科技大学, 2019(01)
  • [8]工程机械嵌入式PLC即时编译系统的研究与实现[D]. 刘正. 中南大学, 2014(03)
  • [9]数控系统通用代码编译系统的研究与开发[D]. 章善财. 合肥工业大学, 2014(06)
  • [10]数控切割机控制系统的程序编译及图形变换[D]. 郭欣. 西南交通大学, 2012(03)

标签:;  ;  ;  ;  ;  

程序编译之初——词法分析
下载Doc文档

猜你喜欢