一个简单的 C 语言编译器
二.运行方式
在 DOS 环境下运行:
Cminus.exe <filename> -h
三.概述
经过一段时间的学习,我们在初步掌握了编译器的基本原理以后,设计了
一个具有基本编译功能的编译器。该编译器接受类 C 语言语法的源代码输入,输
出结果是 PC 机的汇编源代码。在捆绑了宏汇编编译器 Masm 后,即可直接生成
MSDOS 下的二进制可执行文件。为方便起见,以下简称为 C—语言编译器。
本编译器实现了基本高级语言所必须的语法要素,包括 简单变量声明、函数
的实现、整数和字符串运算、条件判断语句和循环语句及跳转语句、基本代数运算、
赋值等,还支持汇编语言嵌入。本编译器是利用编译器生成器 Parse Generator 和
VC6.0 在 Windows 平台上实现的,并开发了一个基于 Windows 平台的 32 位编译
集成开发环境 CompilerMan
, 提供了关键字彩色提示、出错同屏提示、出错代码跳
转等较为完善方便的功能。
由于编译程序本身涉及到词法分析、语法分析、代码生成、错误恢复和优化等
诸多模块,要在实验中做到面面俱到不太可能,所以本编译器不可避免的会存在
各种问题,但作为一个具有基本功能的、可扩充的系统,完全达到了巩固编译原
理的理论知识,并将其运用于实践的目的。
四.背景
编译程序,就是一种具有编撰和翻译功能的程序。人们要用计算机来解决问
题,首先面临的一个问题,就是要告诉计算机解决什么问题,或者告诉计算机如
何解决这个问题。这就涉及到用什么样的语言来描述的问题,人所习惯的自然语
言和计算机认识的机器语言有很大的差别,用机器语言来描述人想解决的问题十
分不便,因而,计算机科学家设计一些人们比较习惯的语言来描述要解决的问题,
称之为高级语言。用语言来描述的问题,统称为程序。然而,用高级语言写的程
序,不能被计算机所直接认识和理解,必须经过等价的转换,变成机器能理解并
执行的机器语言的程序。进行这种等价转换工作的工具,就是编译程序。