Mini-C编译器设计与实现 文档+任务书+评价表+PPT+项目源码

本文介绍了构建一个基于C语言简化版的Mini-C编译器的过程,涵盖了词法分析、语法解析、语义检查、中间代码生成及汇编代码生成等关键步骤。实验旨在深化对编译原理的理解,并通过实际操作提升系统软件开发技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

  1. 概述

  2. 系统描述

2.1. 自定义语言概述

2.2. 单词文法与语言文法

2.3. 符号表结构定义

2.4. 错误类型码定义

2.5. 中间代码结构定义

2.6. 目标代码指令集选择

  1. 系统设计与实现

3.1. 词法分析器

3.2. 语法分析器

3.3. 符号表管理

3.4. 语义检查

3.5. 报错功能

3.6. 中间代码生成

3.7. 代码优化

3.8. 汇编代码生成

  1. 系统测试与评价

4.1. 测试用例

4.2. 正确性测试

4.3. 报错功能测试

4.4. 系统的优点

4.5. 系统的缺点

  1. 实验小结或体会

  2. 参考文献

附件:源代码

  1. 概述

本次实验是构造一个高级语言的子集的编译器,目标代码是汇编语言。按照任务书,实现的方案可以有很多种选择。

可以根据自己对编程语言的喜好选择实现。建议大家选用decaf语言或C语言的简单集合SC语言。

实验的任务主要是通过对简单编译器的完整实现,加深课程中关键算法的理解,提高学生系统软件研发技术。

系统描述

2.1. 自定义语言概述

自定义语言是基于C语言的简化语言,具有C语言中最为基础的内容,包括基本的运算操作、if-else、for、while循环语句,自定义函数和变量等。

2.2. 单词文法与语言文法

Mini-C的文法如下:

G[program]:

program → ExtDefList

ExtDefList → ExtDef ExtDefList | ε

ExtDef → Specifier ExtDecList ;| SpecifierFunDecCompSt

Specifier → int | float | char | StructSpecifier

ExtDecList → VarDec | VarDec , ExtDecList

VarDec → ID | VarDec ( Exp )

FucDec → ID ( VarList ) | ID ()

VarList → ParamDec ,VarList | ParamDec

ParamDec → Specifier VarDec

CompSt → { DefList StmList }

StmList → Stmt StmList | ε

Stmt → Exp ; | CompSt | returnExp ; | FOR ( Exp ; Exp ; Exp ) Stmt | if ( Exp )Stmt | if( Exp ) Stmt else Stmt| while ( Exp ) Stmt

DefList → Def DefList | ε

Def →Specifier DecList ;

DecList → Dec | Dec ,DecList

Dec → VarDec | VarDec =Exp

Exp → Exp=Exp | Exp && Exp | Exp | |Exp | Exp < Exp| Exp <= Exp | Exp == Exp | Exp != Exp | Exp > Exp | Exp >= Exp | Exp +Exp| Exp -Exp | Exp *Exp | Exp /Exp | INT | FLOAT | CHAR | VarDec | Exp ++ | Exp – | ++ Exp | --Exp | VarDec += Exp | VarDec -= Exp | VarDec *= Exp | VarDec /= Exp | BREAK | CONTINUE | Exp . ID | ( Exp ) | -Exp | ! Exp | ID ( Args ) | ID ()

Args → Exp , Args | Exp

StructSpecifier → STRUCT StructName { ExtDefList } | STRUCT ID

StructName → ID | ε

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文转载自:http://www.biyezuopin.vip/onews.asp?id=15506

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值