1、 本本 科科 毕毕 业业 设设 计计 第 1 页 共 43 页 1 1 绪论绪论 编译技术是理论与实践并重的课程,在大学本科计算机科学与技术系的学生的培养 教育中有非常重要的地位。而其实验课程要综合运用一年级、二年级和三年级所学的多 门课程的内容和知识,用来完成一个小型编译程序的设计和实现。从而巩固和加强对词 法分析、语法分析、语义分析、代码生成和报错处理等理论的认识和理解;培养在校大 学生对一个完整的编译系统的独立分析和设计开发的能力,进一步的培养当代大学生动 手实践能力以及独立自主的开发设计能力。 完整的编译器设计开发和实现是一个非常复杂的过程,为了简洁明了的说明编译器 的基本原理,本程序
2、采用了自定义一种类高级语言的高级语言的方法,先定义了该类高 级语言的语法规则,然后再设计与实现了该语言的编译器前端,并且分别从词法分析, 语法分析和语义分析等三个方面进行了详细的开发和设计。希望可以让学生可以更加清 楚直观的认识和理解编译原理的各个方面的知识。 从以往的日常教学经验来看, 我们大学课程中接触和学习的最多的就是C语言和C+ 语言。C 语言是计算机科学与技术等信息类专业的基础必修课,大部分同学都掌握的比 较扎实,所以,本程序所写的词法分析器,语法分析器,语义分析器大部分所用的语言 都是 C 语言,C 语言是面向过程的结构化语言,程序设计结构清晰,逻辑严谨,能让让 学生很好的理解和接
3、受。C+语言也是计算机科学与技术等专业的基础课程,是 C 语言 在面对对象思想方面的改进版,它继承了 C 语言的结构化设计思路,逻辑层次感强,同 时又具备了面向对象设计的能力,也是一门非常优秀的语言,很多学生对这门语言很感 兴趣,所以本程序也设计了几个用 C+语言编写的词法分析器,语法分析器,语义分析 器,以备那些在 C+语言方面熟练掌握的学生学习和借鉴。 1.1 1.1 选题背景选题背景 21 世纪是飞速发展的高科技时代。在日常的生活和工作中各行各业都离不开计算机 技术的运用。学好计算机技术可以让你在以后的工作和生活中对电脑的使用得心应手。 所以计算机科学与技术成为了在大学里非常热门的专业。
4、但是大部分学生往往注重高级 语言和软件设计运用方面的学习, 对计算机的底层运用却不是特别在意, 往往不求甚解, 马马虎虎。其实这些都是不好的学习习惯,像计算机原理,操作系统和编译原理都是非 本本 科科 毕毕 业业 设设 计计 第 2 页 共 43 页 常重要的课程,学好并且掌握它们能让你在遇到计算机硬件方面的问题的时候能够轻松 解决,了解计算机的底层运行原理更可以帮助我们在设计和开发软件的时候避免一些很 棘手的问题,使开发出来的软件更健壮,运行效率更高。所以,为了增强大家对编译原 理课程的学习理解和动手实践能力,本课题整理和设计了一些和编译器有关的程序,方 便大家学习和参考。 1.2 1.2
5、选题意义选题意义 目前世界上的发达国家普遍都非常重视发展以计算机科学和通信技术为核心的信息 技术、信息产业和信息技术的应用,大部分经济比较发达的国家的信息产业的发展都非 常迅速。当前,我国正处于国民经济的高速发展时期。与此相伴随着的,必然有信息技 术应用方面的高速发展,各行各业都将面临着信息技术研究与发展的大课题以及信息化 技术改造的大任务与大工程。所以,很多高校都非常重视学生在计算机科学技术方面的 学习。信息技术基础更是成为了大部分学校的公共基础课。 当然,编译原理作为一门比较复杂的计算机技术,对非计算机专业的学生要求不是 那么高,但是计算机科学与技术专业的学生就应该好好学习和掌握。要求学生
6、不但要学 习课堂上的理论知识,也要加强动手实践能力,所以,编译原理的课程设计和实践就显 得非常重要了,但是目前来说,很多学生的动手实践能力很差,实验课上设计的程序往 往会遇见各种各样的问题,比如程序的语法总是有问题,或者逻辑不严谨,又或者经常 报错,结果不符合设计要求等等。 在这个教学实践背景下,本课题决定整理和设计一些编译原理实践课程中常用的程 序,方便学生更好的学习和理解编译原理这门课程,同时提高他们的动手实践的能力, 能让他们在自己设计编译程序的时候少犯错误,少走弯路,更好的完成学校既定的教学 任务和目标。希望同学们能把本课题设计的程序当做一个参考,更好的掌握编译原理这 门课的精髓,更好的提高自己。 1.3 1.3 资料来源资料来源 在设计过程之中曾多次对编译原理的课程设计和编译器的设计实现收集资料,在互 联网上和图书馆中查找编译原理的相关信息, 力求使本课题设计的程序能够充分的贴近 现实,满足同学们的实践需求。由于在收集资料的时候很多资料的内容互相重复,有资 料中的程序也有互相借鉴,所以该课题所编写的程序代码可能有的也会互相类似,但是 本本 科科 毕