# 类 C 编译器设计与实现
## 一、功能描述
基本功能:类 C 语言编译为汇编语言
支持语法:加减乘除转换 print 输出转换 if 条件转换 赋值语句转换
使用方法:打开.exe 文件后输入待编译文件(与.exe 文件在同一文件夹),即可得到等价同名.asm 文件
## 二、具体实现
### 1.基本框图
源文件——词法分析——语法分析——三元式生成——目标代码生成
词法分析——预处理(识别)——分类——得到结果
语法分析——基本转换——相关语法分析
### 2.主要模块
词法分析模块-词法分析.cpp
语法分析模块-语法分析.cpp
使用模块-源.cpp
函数声明-header.h
### 3. 功能函数
//主函数
int main
//词法分析
void lexical_analysis
//添加分词结果
void add_keywords
//判断单词类型
int word_token
//是否为运算操作符
int is_operator
//是否为大括号、小括号、分号
int is_bracket
//是否为空白
int is_blank
//语法分析
void syntax_analysis
//字符字符串
string char_to_str
//运算符优先级
int level
//相关语句转换
//加减法转换
void addsub_asm
//乘法转换
void mul_asm
//除法转换
void div_asm
//赋值运算转换
void sign_asm
//输出转换
void print_asm
//if 语句转换
void if_asm
//输出分析
void printf_analysis
//表达式分析
void expression
//分析 if 语句
void if_analysis
//创建目标代码文件
string asmfile
//写入目标代码
void create_asm
## 三、执行界面和运行结果
初始界面:
![](https://www.writebug.com/myres/static/uploads/2022/1/1/3995b09290f6168f6cba988cea9a6295.writebug)
初始文本:
![](https://www.writebug.com/myres/static/uploads/2022/1/1/ac9b995666e56572eff74ebb09395ffc.writebug)
执行界面:
![](https://www.writebug.com/myres/static/uploads/2022/1/1/3e9ecbd298795047c17729710828a811.writebug)
编译后文本:
![](https://www.writebug.com/myres/static/uploads/2022/1/1/c6de411fbe8075ee598833fee86730a3.writebug)
## 四、心得体会
通过该课程设计,掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解。通过把该算法的内容,算法的执行顺序在计算机上实现,知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有了更加深刻的理解。通过自己动手做实验,从实践上认识了操作系统是如何处理命令的,如何协调计算机内部各个部件运行,对计算机编译原理的认识更加深刻。