北京大学编译原理实习MiniJava 实验报告.docx

北京大学编译原理实习MiniJava 实验报告.docx

  1. 1、本文档共90页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
编译原理实习报告 张弛December 13,2010 1 Contents 1 类型检查 3 1.1 符号表 4 1.1.1 符号表结构 4 1.1.2 变量类型 6 1.2 重定义错误和循环继承 8 1.2.1 符号表功能实现 8 1.2.2 构造符号表 10 1.3 未定义错误和类型不匹配 11 1.3.1 具体的检查项目 12 1.3.2 表达式节点的分析 12 1.3.3 未定义错误 14 1.3.4 类型匹配错误 15 1.4 未初始化变量和未使用变量 16 2 Piglet中间代码17 2.1 Piglet简介 17 2.1.1 文法BNF 17 2.1.2 语言细节 18 2.2 数组的表示 19 2.3 类结构表示 20 2.3.1 数据和过程分离 20 2.3.2 过程的转换 21 2.3.3 处理维承 22 2.3.4 实现细节 23 2.4 翻译模式 25 2 编译原理实习报告 张弛2.4.1 读变量和写变量 26 2.4.2 多于20个参数 28 2.4.3 布尔表达式 28 2.4.4 其 他 29 3 Spiglet中间代码30 4 K a n g a 中 间 代 码 3 1 4.1 Kanga简介 31 4.1.1 文法BNF 31 4.1.2 语言特性 32 4.2 构造流图 33 4.2.1 流图的定义 34 4.2.2 基本块的划分和流图的构造方法 34 4.2.3 实现细节 34 4.3 活性分析 37 4.3.1 算法概述 37 4.3.2 具体实现 38 4.4 寄存器分配 40 4.4.1 干 涉 图 40 4.4.2 图染色算法 40 4.4.3 具体实现 40 4.5 代码翻译 42 5 M I P S 目 标 代 码 4 3 5.1 MIPS栈规范 43 5.2 难点总结 44 3 1 2 3 4 5 6 7 8 9 10 11 12 Chapter 1 类型检查 在类型检查之前,我们假设对MiniJava 源代码的词法分析已经做完 . 此时词 法分析器向我们提供了MiniJava 程序的抽象语法树(AST), 那么之后的类型检查 将全部基于这棵语法树 . 经过观察我发现类型检查项目可以根据侧重点的和复 杂度的不同分为三大类 .其中后项的检查基于前面检查已经完成的基础上,以下 是三类检查的具体项目: 1. ●类,方法和变量的重定义 ● 循环继承 2. ●对未定义的类,方法和变量的引用; ● 数据类型不匹配 3. ●对未初始化的变量引用 ● 从未使用的变量定义 为了避免歧义,下面用一个简单的程序列举了上面出现的几个典型的语法错 误 . class Myclass( int myInt; // DECLARATION of unused variable boolean myBoolean; // REFERENCE of undefined class MyClass2 myClass; // REDEFINITION of variable boolean myBoolean; 4 张弛译原理实习报告 张弛13public int getMyInt (){ 13 14 1516// REFERENCE of undefined 15 16 return myInt2; 17 18 // // REDEFINITION of method public int getMyInt()( 20 21 // //

文档评论(0)

188****7880 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

认证主体陶**

1亿VIP精品文档

相关文档

相关课程推荐