论文部分内容阅读
本课题针对于“数据结构”的教学现状,规范了类C语言的定义,并在此基础上设计实现了将类C语言源算法翻译成可执行的C语言目标程序的编译器——LC/C编译器。定义的类C语言,其实是一个C语言的子集,但是拥有自身的词法和语法规则。定义的类C语言,包括了一个高级语言所必须的如函数、指针、数组和数据类型等基本部分。定义类C语言的目标是语言功能简单、结构清晰,能够方便的应用到“数据结构”课程的教学中。在LC/C编译器的设计中,包括了词法分析、语法分析、语义分析、中间代码生成以及目标代码生成等编译器设计所必要的部分。 本文实现的是一个教学语言及其编译系统。现在几乎每本“数据结构”课程的教材都采用了类C语言作为描述语言,但是现在的类C语言并没有一种统一的定义。同时,到目前为止,还没有一种编译器可以直接编译类C语言写出的算法或程序。本文中的解决方法是将类C源算法通过LC/C编译系统,编译得到可在VC++平台上执行的C语言源程序,通过运行C语言源程序得到类C源算法的实验结果。本文的主要工作是定义了一种规范的类C语言,并设计实现LC/C编译器。 本文的主要内容分为两个部分:第一部分是对类C语言进行定义,另一部分是LC/C编译器的设计与实现。在类C语言的定义中,选取了一个C语言的核心子集,并对其做了若干的扩充,以增强类C语言的描述功能。针对于LC/C编译器的设计,编译器的实现目标是准确率高,易于用于我们的“数据结构”课程的教学中。同时,由于编译器还拥有较大的扩充空间,为了方便进一步的扩充,编译器代码程序规模比较适度,没有非常复杂的算法,编译器的各个环节清晰,并在程序的关键部分加入了必要的注释。 本文详细阐述了编译器的组织形式以及设计方法,并将编译器分为三遍扫描来完成。第一遍扫描时对我们的类C算法进行词法分析,将词法分析得到的输出作为语法和语义检查的输入。第二遍扫描是语法、语义扫描。语法、语义扫描完成后,将处理输出的符号作为代码生成部分的输入。第三遍扫描首先是扫描输入,将单词符号用四元组的形式表示出来,形成中间代码,由代码生成函数进行处理,输入到各个代码区,最后将代码区的代码汇总,得到目标代码——C语言代码,同时完成整个编译过程。 设计出来的LC/C编译器具有通用性好,准确率高,简单易学,使用方便等优点,可以广泛的应用于我们的“数据结构”课程的教学中,有助于学生的学习效率的提高。