设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计
 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>理工论文 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopin QQ:2922748026   
mini-c语言编译原理实验指导教程
文章来源:www.biyezuopin.vip   发布者:毕业作品网站  

本实验指导教程作为编译原理课程的课程实验和课程设计的参考,对编译器的构造给出了一些参考性的指导意见。本文档不是一个完整使用手册,所以在阅读时,还需要阅读参考文献,并上网查询相关的资料,最后根据自己的理解,选择一种适合自己的技术线路,完成自定义的高级语言编译器的构造。
目录
1定义高级语言 2
1.1 mini-c语言的文法 3
1.1语言的扩展 3
2词法分析与语法分析 6
2.1 词法分析 7
2.1.1 词法分析的任务 7
2.1.2 FLEX代码结构 8
2.1.3 正则表达式形式 9
2.2 语法分析 12
2.2.1 声明部分 12
2.2.2 辅助定义部分 12
2.2.3 规则部分 15
2.3 报错与容错 16
2.4 抽象语法树(AST) 18
2.5 Flex与Bison的安装 20
2.6语法分析器的构造 22
3语义分析 26
3.1 符号表的管理 27
3.2 静态语义分析 27
3.3 语义程序架构 28
3.3.1 AST遍历 28
3.3.2 作用域与符号表操作 29
4中间代码的生成 32
4.1 中间语言的定义 32
4.2 翻译模式 33
5目标代码的生成 44
5.1 目标语言的指令定义 44
5.2 寄存器的分配 46
5.3 目标代码的生成 46
附录1: 词法分析的程序文件lex.l 49
附录2: 语法分析的程序文件parser.y 51
附录3: 有关定义文件def.h 55
附录4: 抽象语法树的建立与显示ast.c 57
附录5: 语义分析与中间代码生成 61
参考文献 79
1定义高级语言
编译课程的实验,第一个需要完成的工作,就是要定义一个待实现其编译器的语言,用上下文无关文法定义该语言,并给该语言起一个有意义的名称。后续的工作就是完成该语言的编译器。
1.1 mini-c语言的文法
本节给出的是一个简化的C语言的文法,不妨将其称为mini-c。在后续的章节中,主要介绍mini-c的编译过程,给出mini-c语言编译程序构造各阶段实现的指导建议,借此理掌握解编译实现的主要技术线路。Mini-c文法如下:
G[program]:
  program → ExtDefList
  ExtDefList→ExtDef  ExtDefList | ε
  ExtDef→Specifier  ExtDecList ; |Specifier  FunDec  CompSt
  Specifier→int | float
  ExtDecList→VarDec | VarDec , ExtDecList
  VarDec→ID
  FucDec→ID ( VarList )  | ID ( )
  VarList→ParamDec , VarList   |   ParamDec
  ParamDec→Specifier VarDec
  CompSt→{ DefList  StmList }
  StmList→Stmt  StmList | ε
  Stmt→Exp ;  |  CompSt  | return Exp ;
       | 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 | ID | INT | FLOAT
| ( Exp ) | - Exp  |  ! Exp  | ID ( Args )  | ID ( )
  Args→Exp , Args  | Exp
以上只是给出了一个很简单的语言文法,数据类型只支持整型和浮点;函数只有定义,没有原型声明;以及不支持数组,结构等等。






  全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026     返回首页 如转载请注明来源于www.biyezuopin.vip  

                 

打印本页 | 关闭窗口
本类最新文章
悬架的机械设计对动态加载过程的影 选择榨汁机的诚实指南 通用回归神经网络在声呐目标分类中
工艺规程制订与并行工程 储油罐的变位识别与罐容表标定 DVD租赁优化方案
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:biyeshejiba@163.com 微信号:biyezuopin QQ:2922748026  
本站毕业设计毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!