项目简介
本项目名为“tzlC”,是一个基于C语言实现的编译器。该编译器的主要目标是将C语言代码转换为MIPS汇编代码,具备词法分析、语法分析、语义分析、中间代码生成和目标代码生成等完整的编译流程。同时,它支持多种C语言特性,并能进行静态语义检查,及时检测并报告多种语义错误。
项目的主要特性和功能
- 词法分析和语法分析:借助Flex和Bison工具完成词法与语法分析,生成抽象语法树(AST),支持C语言基本语法结构,如变量声明、函数定义、控制流语句等。
- 语义分析:进行静态语义检查,可检测未定义变量、未声明函数、类型不匹配、变量重复定义、函数参数不匹配等多种错误。
- 中间代码生成:把抽象语法树转换为中间代码(IRCode),为目标代码生成做准备,支持多种表达式和控制流语句的中间代码生成。
- 目标代码生成:将中间代码转换为MIPS汇编代码并生成可执行的目标文件,支持基本的MIPS指令集,包含数据加载、存储、控制流指令等。
- 错误处理:提供详细的错误报告机制,能记录并显示语法和语义错误,支持错误恢复、错误提示等多种错误处理策略。
安装使用步骤
环境准备
确保开发环境满足以下要求: - 操作系统:Ubuntu 22.04 - 依赖工具:Flex、Bison、GCC、G++、SPIM(MIPS模拟器)
安装依赖
在终端中运行以下命令安装所需的依赖工具:
bash
sudo apt-get install flex bison gcc g++ spim
复制项目
复制tzlC项目到本地:
bash
cd tzlC
运行编译器
执行以下命令运行编译器:
bash
bash run.sh
./parser test1.c
spim
load "ObjectFile.s"
run
exit
测试代码
项目中包含多个测试文件(如test1.c
、test2.c
等),可使用编译器对这些文件进行编译和测试。
查看输出
编译器将生成MIPS汇编代码文件ObjectFile.s
,可使用SPIM模拟器加载并运行该文件,查看编译结果。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】