




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验5 中间代码生成器一、实验目的掌握语法制导定义和翻译的原理和技术,在语法分析器的基础上,加上语义分析,构造一个中间代码生成器。二、实验内容在实验四用Yacc生成的语法分析器基础上加入语义动作,编写一个中间代码生成程序。1文法(见教材附录 A.1,p394)program blockblock decls stmts decls decls decl | edecl type id ;type type num /数组可以不做 | basic /四种基本数据类型 int | float | char | boolstmts stmts stmt | e stmt id = expr ; |if ( bool ) stmt|if ( bool) stmt else stmt|while (bool) stmt |do stmt while (bool ) ; |break ; /break可以不做|blockbool bool | join | joinjoin join & equality | equalityequality equality = rel | equality != rel | relrel expr expr | expr expr | expr = expr | exprexpr expr + term | expr - term | termterm term * unary | term / unary | unary unary !unary | - unary | factorfactor ( expr ) | id | num2中间代码的形式见教材p221222,若有必要,可以适当扩展(加以说明)。三、实验过程3.1符号表的定义和相关函数struct SymbolElemstruct SymbolListSymbolList CreateSymbolList( SymbolList PrevList, int StartAddr )/*创建并返回一个新的符号表(SymbolList就是书上的Env),PrevList是其的上一层符号表*/void DestroySymbolList( SymbolList List )struct SymbolElem * LookUpSymbolList( SymbolList List, char * IdName )/*在符号表List中查找是否存在标识符IdName,如果存在,则返回该结点指针,否则返回空*/struct SymbolElem * LookUpAllSymbolList( SymbolList List, char * IdName )/*从符号表List开始并不断地往上一层符号表中查找是否存在标识符IdName,如果存在,则返回该结点指针,否则返回空*/struct SymbolElem * AddToSymbolList( SymbolList List, char * IdName,int IdType, int Width )/*创建一个新的符号结点,并添加到符号表中,而后返回该结点指针*/3.2常数表的定义和相关函数union ConstVal/*存放一个常数*/struct ConstElem/*常量表*/struct ConstList/*创建并返回常量表*/void CreateConstList( int StartAddr )void DestroyConstList( void )/*在常量表ConstList中查找是否存在常量,如果存在,则返回该结点指针,否则返回空*/struct ConstElem * LookUpConstList( int ConstType, union ConstVal ConstValue, int Width )/*创建一个新的常数结点,并添加到常数表中,而后返回该结点指针*/struct ConstElem * AddToConstList( char * Str, int ConstType, union ConstVal ConstValue, int Width )3.3四元式的定义和函数/*四元式数据结构*/struct Quadruple /*四元式表*/struct QuadTablevoid CreateQuadTable(int StartAddr)void DestroyQuadTable( void )/*当Arg1是变量或临时变量时,Arg1Name是该变量的名称,用于演示时使用,其余参数类同 */int Gen( int Op, int Arg1, int Arg2, int Arg3, char *Arg1Name, char *Arg2Name, char *Arg3Name )/*把四元式所对应的三地址代码写入到文件中*/void WriteQuadTableToFile( const
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年郑州空中丝路文化传媒有限公司社会公开招聘6人模拟试卷完整参考答案详解
- 域名注册代理合同
- 2025年河北承德医学院附属医院招聘工作人员20名模拟试卷及答案详解(名校卷)
- 2025年工业互联网平台联邦学习隐私保护在智慧能源领域的应用报告
- 2025年有色金属资源循环利用产业链上下游协同发展报告
- 同学聚会代表发言稿
- 密码档案柜买卖合同5篇
- 2025年年中材科技(酒泉)风电叶片有限公司招聘220人笔试参考题库附带答案详解
- 2025航天智能院校园招聘笔试历年参考题库附带答案详解
- 寒假周记范文集合六篇
- 第1课 从食物采集到食物生产 课件-高二历史统编版(2019)选择性必修2 经济与社会生活
- 生涯拍卖会课件高一上学期主题班会
- 中医形神兼养
- GB/T 44241-2024虚拟电厂管理规范
- SYT 6680-2021 石油天然气钻采设备 钻机和修井机出厂验收规范-PDF解密
- 实用美术基础中职全套教学课件
- 子宫内膜癌的预防和早期发现
- 债权债务法律知识讲座
- 个人停车位租赁合同模板
- 食品保质期检测记录表
- 基于教育培训行业的客户关系营销研究
评论
0/150
提交评论