关键词:
编译器
虚拟机
自定义目标代码
摘要:
本课题主要目的是基于“编译原理”的教学现状,定义了类C教学语言。该类C教学语言类似于C语言的一个子集,具有清楚的词法和语法定义,具备一般高级编译语言的必需部分(如函数、指针、数组、数据类型等),并且语言功能简单、结构清晰、便于应用。考虑到“编译原理”课程教学的需要,以及作为教学语言的实验性与可扩展性,所以该教学语言规模适中。此外,该教学语言的编译程序采用一遍扫描结构,实现了词法分析、语法分析、语义分析、汇编目标代码生成、机器代码生成、符号表管理、机器代码解释执行等编译程序的基本过程,从而使学生对编译程序的实现建立起整体的概念。
选择此课题的原因主要有下几个方面。首先,当前最为流行的“编译原理”教学语言PL/O是PACAL的子集,而学生又对PSCAL很陌生,从而加大了学生学习“编译原理”的难度。其次,编译器是一个相当复杂又非常重要的程序。通过一个类C编译器开发程序的探索,将会对编译的各个环节有深刻的理解,从而减轻学生学习“编译原理”课程的难度。再次,C是一种常用的过程式语言,当前对象式语言的载体基本上是过程式的,因此掌握过程式语言的编译技术,就不难实现对象式语言的编译程序。最后,设计一个专用的语言虚拟机解释程序,执行上述自定义的目标代码集。这个技术可以保证类C编译器基于平台的无关性并使类C教学语言不再是纸上谈兵,而成为真正的教学语言。
本论文最后实现的是一个教学语言及其编译系统。在该语言编译程序中,要体现出“编译原理”课程的基本内容,适于学生学习;在实现中不宜单纯追求运行效率而使用过于复杂的算法;为便于学生理解和进一步扩充,程序规模必须适度;为了便于学生学习,要在程序的关键部分加入注释。