在计算机科学的课程中,编译原理占有非常重要的位置,它是每个优秀的计算机专业人员必修的一门课程。它主要介绍编译程序的基本构造、一般设计方法和常用实现技术,讲解编译程序自动构造的原理和工具。具体内容包括:形式语言、有穷自动机原理及词法分析程序的自动构造、自上而下和自下而上的语法分析、语法制导翻译及中间代码生成,目标程序运行时的存储组织策略及代码生成等等。并结合教授内容,安排学生在剖析一个简单的编译程序的基础上,完成编译程序的有关实验。经过本课程的学习,要求学生不但掌握一般高级语言编译程序的初步的基本技能,并能为不同模式和不同领域的语言的实现方案寻找解决途径,另外还能运用编译程序构造的原理和技术完成相关软件工具的设计和开发工作。
词法分析阶段的任务是对构成源程序的字符串从左到右进行扫描和分解,根据语言的词法规则,识别出一个一个具有独立意义的单词( 也称单词符号, 简称符号 )。语法分析的任务是在词法分析的基础上, 根据语言的语法规则从单词符号串中识别出各种语法单位( 如表达式、说明、语句等 ) ,并进行语法检查,即检查各种语法单位在语法构上的正确性。语义分析与中间代码的生成。语义分析的任务是首先对每种语法单位进行静态的语义审查,然后分析其含义,并用另一种语言形式 (比源语言更接近于目标语言的一种中间代码或直接用目标语言 ) 来描述这种语义。代码优化的任务是对前阶段产生的中间代码进行等价变换或改造,以期获得更为高效即省时间和空间的目标代码。编译程序在工作过程中需要建立一些表格,以登记源程序中所提供的或在编译过程中所产生的一些信息,编译各个阶段的工作都涉及到构造、查找、修改或存取有关表格中的信息,因此,在编译程序中必须有一组管理各种表格的程序。
本课题的名称为:编程考试机器评卷系统。编程考试是计算机等相关专业的常见考试,其具体要求为对指定的题目设计算法并使用考试所规定的编程语言(如:C语言、JAVA语言、python语言)编写程序实现其设计的算法以完成题目的要求。由此我们可以把本课题按照要求分为两大功能模块来完成:某种编程语言的解析(语法分析、词法分析等);评分系统的设计(如何针对错误来打分、分数如何存储与显示给用户)。
a) 某种语言的解析:本模块是系统中最重要的模块也是最难实现的模块是其他模块的基础。在这里选用最熟悉的、使用也最为广泛的C语言进行解析。C语言有着较为复杂的语法与词法规则。在本课题中拟模仿微软的经典编译器VC++的设计,来完成对C语言的解析,包括语法词法分析、关键字的高亮现实、输出程序中出现的错误等等。显示风格模拟VC++6.0的界面设计。