目录

  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

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

  1. 基于spring boot的邮件微服务消息中间件设计与实现 毕业论文+系统功能图v1.0.vsdx+项目源码

    下载地址:https://download.csdn.net/download/m0_63680064/36065411 项目介绍: 基于spring boot的邮件微服务消息中间件设计与实现 毕业论 ...

  2. vue process.env获取不到_从文档开始,重学vue(下)源码级别

    此篇文章主要是从应用及源码层面讲解vue部分常用api,阅读起来可能略有难度,新手可以看<从文档开始,重学vue(上)> 示例代码均在vue-cli3中完成 Vue.extend() 可以 ...

  3. 基于Python的电影数据可视化分析系统 设计报告+答辩PPT+项目源码

    目录 引言 2 1.1 编写目的 2 1.2 读者对象 2 1.3 软件项目概述 2 1.4 文档概述 2 1.5 定义 2 1.6 参考资料 3 软件的一般性描述 4 2.1软件产品与其环境之间的关 ...

  4. 基于html5+Java+MySQL的健身俱乐部网站设计与实现 文档+任务书+开题报告+答辩PPt+项目源码及数据库文件

    全套资料下载地址:https://download.csdn.net/download/sheziqiong/85593638 目 录 引言 1 系统分析 2 2.1可行性分析 2 2.2需求分析 2 ...

  5. 基于QT的五子棋人机博弈问题设计与实现 文档+任务书+答辩PPT+演示视频+项目源码

    资源下载地址:https://download.csdn.net/download/sheziqiong/85948720 资源下载地址:https://download.csdn.net/downl ...

  6. 含文档+PPT+源码等]精品基于SSM企业人力资源管理系统的设计与实现包运行成功]计算机毕设Java项目源码

  7. 基于Vue的医院内部管理系统(医生、患者、挂号、药房)文档+答辩PPt+项目源码+演示视频

    [摘要]随着大数据时代的发展,医院信息化作为医院运用信息技术及其产品的代表运用于流程管理和经营管理.而由于医院本身的性质决定,医院信息系统属于现存企业及信息系统中较为复杂的一类,不同类型用户可通过该系 ...

  8. 基于大数据(Hadoop+Java+MySQL)的数码商城购物推荐系统设计与实现 文档+任务书+开题报告+文献综述+答辩PPT+项目源码及数据库文件

    摘 要 基于大数据的推荐系统的实现主要基于hadoop的mapreduce程序,利用数学上的共线矩阵算法,来求出商品之间的亲密度,这个是要由用户购买的历史数据,经过分析求出来的.现在大数据时代已经到来 ...

  9. 基于Html+AngularJS+Java+MySQL的果蔬店商城系统设计与实现 文档+任务书+开题报告+答辩PPT+项目源码及数据库文件+演示视频

    资源下载地址:https://download.csdn.net/download/sheziqiong/85639126 资源下载地址:https://download.csdn.net/downl ...

  10. 精易模块保存html文档,精易模块6.60源码

    资源介绍: 精易模块 V6.6.0 what's new: (20180801) 一.新增 1.新增"数组_寻找数组"查找一个数组里有没有该元素或者该元素的下标:感谢[@挥剑い为红 ...

最新文章

  1. sqlconnection,sqlcommand,SqlDataAdapter ,ExecuteNonQuery,ExecuteScalar
  2. 083 HBase的完全分布式的搭建与部署,以及多master
  3. 电脑与人脑,信息与知识
  4. 操作系统:进程间通信与线程间同步
  5. PWN-PRACTICE-BUUCTF-5
  6. svr预测出来是一条直线_不看错过好几亿!5分钟学会用Python预测美股价格
  7. 关于某题左列定宽右列宽度自适应布局的学习
  8. Java爬虫 手机号段 归属地 处理后输出sql文件
  9. VS.net2005的稳定性真的很差劲
  10. 【C】循环淘汰 (用结构体完成; 头文件不要加malloc.h 或 alloc.h)
  11. 微信小程序开发--虎年头像制作、虎头帽制作
  12. python修改文件内容_Python之文件处理-批量修改md文档内容-Go语言中文社区
  13. 8小时浓度均值即连续8个小时浓度的平均值
  14. 路由器和交换机的区别?
  15. js vue 设置excel单元格样式_vue+elementui 项目纯前端Export2Excel导出excel,并利用xlsx-style设置单元格样式...
  16. Android一键锁屏,去除锁屏密码
  17. 微信小程序中background-attachment:fixed兼容问题
  18. FXS(le88266)工作原理介绍
  19. XP SP3桌面IE图标不见了,如何找回?
  20. Linux openssl 搭建CA、签名证书

热门文章

  1. 坚果云+Typora+vscode 参考notion 进行个人知识管理
  2. 带你走进P2P平台网站推广
  3. Android JS交互-记录我所遇到的
  4. 重心法例题matlab,重心法--例子.ppt
  5. C/C++求职者必备的20道面试题
  6. 二叉树非递归程序c语言,二叉树非递归遍历C语言实现
  7. 党建管理系统开发,组织部干部人事任免平台建设方案
  8. 智能道路中几个问题的探讨
  9. Transformations in signals and systems DSP
  10. 神经网络模型应用实例SPSS - 典型的神经网络模型 - 神经网络模型的应用