项目简介
本项目是基于C语言的编译原理实验项目,通过实现简化的编译器前端和后端,帮助开发者深入理解编译原理的基本概念和技术。项目覆盖词法分析、语法分析、语义分析、中间代码生成、代码优化和代码生成等编译主要环节。
项目的主要特性和功能
- 词法分析:借助Flex工具构建词法分析器,可拆分源代码为标记,能识别二元组、多种数据类型及对应正则表达式、关键字,支持多维数组识别,处理多种运算符,剔除注释。
- 语法分析:利用Bison工具生成语法分析器,识别并解析C语言风格语法。
- 语义分析:遍历抽象语法树,进行符号表设计、语义错误定义和检查,包含类型检查、变量定义和初始化检查、函数参数匹配等操作。
- 中间代码生成:生成三地址代码,支持数组、多种语句的中间代码生成,完成基本块划分,并进行简单优化。
- 代码生成:将中间代码转换为MIPS汇编代码,为程序最终执行做准备。
安装使用步骤
环境准备
确保开发环境支持C语言编译,如Ubuntu 18.04.3 LTS或Windows 10 1909 64位。
工具安装
安装Flex和Bison工具,用于生成词法分析器和语法分析器。
编译过程
- Lab1词法分析:在Ubuntu 18.04.3 LTS 64 - bit环境下,执行
flex lex.l
,bison -d -v parser.y
,gcc ast.c parser.tab.c lex.yy.c -lfl -o test
,运行./test test.c > result.log
进行测试。 - Lab2语义分析:在Ubuntu 18.04.3环境下,执行
flex lex.l
生成lex.yy.c
,bison -d -v parser.y
生成parser.tab.h
和parser.y
,gcc ast.c analysis.c parser.tab.c lex.yy.c -lfl -o test
生成可执行文件,运行./test test.c > output.txt
进行测试。 - Lab3中间代码生成:在Windows10 1909 64位家庭版环境下,直接运行
lab3.bat
,默认输入文件为test.c
。 - Lab4最终代码生成:在Windows10 1909 64位家庭版环境下,直接运行
lab4.bat
,默认输入文件为GCD.c
。
测试
运行每个Lab提供的测试代码,验证编译器功能的正确性。
代码理解
查看每个Lab中提供的代码文件,理解编译过程中各个步骤的实现细节。
注意:本项目是教学项目,未提供完整的C语言编译器,仅实现编译关键步骤,实际使用时可能需结合其他工具或资源构建完整编译器。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】