| 设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计 | |||||
|
|||||
|
|||||
|
|||||
本实验指导教程作为编译原理课程的课程实验和课程设计的参考,对编译器的构造给出了一些参考性的指导意见。本文档不是一个完整使用手册,所以在阅读时,还需要阅读参考文献,并上网查询相关的资料,最后根据自己的理解,选择一种适合自己的技术线路,完成自定义的高级语言编译器的构造。目录1定义高级语言 21.1 mini-c语言的文法 31.1语言的扩展 32词法分析与语法分析 62.1 词法分析 72.1.1 词法分析的任务 72.1.2 FLEX代码结构 82.1.3 正则表达式形式 92.2 语法分析 122.2.1 声明部分 122.2.2 辅助定义部分 122.2.3 规则部分 152.3 报错与容错 162.4 抽象语法树(AST) 182.5 Flex与Bison的安装 202.6语法分析器的构造 223语义分析 263.1 符号表的管理 273.2 静态语义分析 273.3 语义程序架构 283.3.1 AST遍历 283.3.2 作用域与符号表操作 294中间代码的生成 324.1 中间语言的定义 324.2 翻译模式 335目标代码的生成 445.1 目标语言的指令定义 445.2 寄存器的分配 465.3 目标代码的生成 46附录1: 词法分析的程序文件lex.l 49附录2: 语法分析的程序文件parser.y 51附录3: 有关定义文件def.h 55附录4: 抽象语法树的建立与显示ast.c 57附录5: 语义分析与中间代码生成 61参考文献 791定义高级语言编译课程的实验,第一个需要完成的工作,就是要定义一个待实现其编译器的语言,用上下文无关文法定义该语言,并给该语言起一个有意义的名称。后续的工作就是完成该语言的编译器。1.1 mini-c语言的文法本节给出的是一个简化的C语言的文法,不妨将其称为mini-c。在后续的章节中,主要介绍mini-c的编译过程,给出mini-c语言编译程序构造各阶段实现的指导建议,借此理掌握解编译实现的主要技术线路。Mini-c文法如下:G[program]:program → ExtDefListExtDefList→ExtDef ExtDefList | εExtDef→Specifier ExtDecList ; |Specifier FunDec CompStSpecifier→int | floatExtDecList→VarDec | VarDec , ExtDecListVarDec→IDFucDec→ID ( VarList ) | ID ( )VarList→ParamDec , VarList | ParamDecParamDec→Specifier VarDecCompSt→{ DefList StmList }StmList→Stmt StmList | εStmt→Exp ; | CompSt | return Exp ;| if ( Exp ) Stmt | if ( Exp ) Stmt else Stmt | while ( Exp ) StmtDefList→Def DefList | εDef→Specifier DecList ;DecList→Dec | Dec , DecListDec→VarDec | VarDec = ExpExp →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以上只是给出了一个很简单的语言文法,数据类型只支持整型和浮点;函数只有定义,没有原型声明;以及不支持数组,结构等等。





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