本资源提供基于C语言的编译器设计方案,涵盖词法分析、语法分析、语义分析和中间代码生成等内容,并附带完整源码。适合华中科技大学《编译原理》课程学习使用。
华中科技大学 编译原理 面向过程的C语言编译器设计 功能包括:词法分析、语法分析、语义分析以及中间代码生成。
题目:自定义 C-- 语言编译器的设计与实现
源语言定义:
- 可采用教材中的 Decaf 语言或部分关键规则来自 C/C++/C#/Java 等。
- 源语言至少应包括以下成分:
- 数据类型:char 类型、int 类型和 float 类型
- 基本运算符:算术运算、比较运算、自增自减以及复合赋值等
- 控制语句:if 语句与 while 循环
实验内容包括一个完整的可运行的编译器,具体分为四个部分:
- 实验一:词法和语法分析器的设计与实现。建议使用专业工具如 LEX/FLEX 和 YACC/BISON 等。
- 实验二:符号表设计及属性计算。需要设计并管理符号表的数据结构,并展示其动态变化过程,无论是否采用自动化的语法解析工具,都需完成此步骤;此外还可以通过语义子程序实现属性的计算工作。
- 实验三:进行语义分析与中间代码生成。这一阶段要构建抽象语法树、执行类型检查和控制流程的目标地址确定,并依照自定义的形式来创建中间表示形式。
- 实验四:基于前三个实验的基础,完成目标代码的编写任务;也可以选择使用像 LLVM 这样的工具来进行此操作。