编译程序词法分析核心算法在线评测子系统的设计与实现文献综述
2020-04-15 09:38:36
编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、中间代码生成、存储管理、代码优化和目标代码生成。编译原理是计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。编译程序在线评测系统力求在整体上展现整个编译过程的实现,它将编译过程拆分成一个个模块(阶段),各个模块之间又有着紧密联系,提供一套完整的编程接口和模板供用户进行调用与调试,以实现编译程序的编写和实现。
通常编译程序分为词法分析,语法分析,语义分析,中间代码生成和目标代码生成几个部分,每个部分又有不同的实现方法和算法。词法分析器是编译系统的第一个阶段,是编译器的重要组成部分。本论文编制编译程序在线评测系统之一--词法分析核心算法的在线评测子系统软件,设计词法分析各核心算法的编程接口和模板,供用户进行调用与调试。
目前国内外已经有大学研究和开发了这样的程序平台,大部分用来实践和教学所用,例如北京大学将在线测评用于“数据结构”的教学,北京航空航天大学用于“c语言”的教学和实践。但是目前在线测评在教学中的应用还仅限于算法类课程,无法应用于其他课程。如在线测评编译原理课程实践教学中的应用目前尚属空缺,其主要原因是:编译程序是中大型软件,较为复杂,一般都是由于多个程序模块组成,程序模块之间关系紧密,且各模块的执行结果不一定具有唯一性,这些因素都造成编译程序在线评测的困难。
"编译原理"是计算机专业的核心专业课程之一,其主要任务是使学生掌握高级语言的编译技术和高级编程程序的设计原理和构造技术,并能够依据编译的基本原理进行一些编译程序的设计和实现。因此,编译程序在线评测系统的开发具有重要的实际意义,一方面,可以将复杂的编译程序简单化、小型化、独立化,使编译程序的实现能够从小到大,从易到难,循序渐进;另一方面,它为学习和使用编译程序提供了一个完整的实践模式,有助于帮助学生树立编写复杂程序的信心,对课程教学起到极大的促进作用。
{title}2. 研究的基本内容与方案
{title}本论文的主要研究内容包括:
(1)对已有词法分析各核心算法程序进行编程接口和模板设计,并依据完成这些核心算法程序的改造;
(2)合并编译功能的实现。合并编译将用户提交的某个核心算法程序模块与系统提供的词法分析其它模块集成在一起进行编译连接,生成可执行程序,进而为后续测试提供保障。合并编译在评测环节一共需要进行2次。第一次合并编译中,用户所提交代码会与桩模块以及驱动模块一起编译,用于测试用户代码的完整性;第2次合并编译中,用户所提交的代码会与系统提供的前序模块一起编译,生成一个可执行的编译程序模块,进而使用测试数据。
(3)正确性评测。在正确性评测环节,评测子系统将用户提交程序输出得到的结果与参考程序的执行结果进行比较,判断用户结果的正确性。评测是系统将用户提交的模块和系统事先构建实现的后继模块进行组合,直至结果唯一的模块为止,然后进行联合编译,接下来就可以用现有评测技术继续评测
(4) 健壮性评测。健壮性评测环节,主要是对软件的质量进行进一步的评测。再次环节中,评测子系统会对用户代码中的所有方法逐一测试。
3. 参考文献[1] 尤枫,史晟辉,赵瑞莲. 编译程序在线评测系统的实现[J]. 实验室研究与探索,2010,29(12):69-72.