- 编译原理的课设题目,自行设计
C
语言的文法,设计并实现编译器的源代码,最终通过自定样例进行验证。 - 使用
C++
面向过程(?)开发,由于编写时候语言基础还比较薄弱,代码可读及美观性均不是特别好(现在看起来好耻辱)。
- 词法分析,将给定样例程序(
C
语言代码)分解为单词串。 - 语法分析,首先读入设计的
C
语言文法,通过生成first
集→生成follow
集→生成select
集最终得到LL1
语法分析表。然后依次读入词法分析模块中识别出的单词串,进行语法正确与否的分析。 - 语义分析,在语法分析的过程中识别文法单词对应的语义动作,进行处理,生成四元式,填写符号表。
- 代码优化,进行基本块的划分,针对每一个基本块内利用
DAG
无向关联图进行冗余优化。 - 目标代码生成,利用优化后的代码生成
x86
汇编代码。
- 所有源代码文件均在
src
文件夹中。 - 打开
output
文件夹,双击The C Language Compiler.exe
即可运行。样例程序会输出词法分析、语法分析、中间代码生成、代码优化、目标代码生成这五个过程中所有的运行期结果。