文档详情

编译原理-王生原(第二章).ppt

发布:2018-10-12约3.32千字共42页下载文档
文本预览下载声明
《编译原理》 第二讲 Decaf / Mind 编译实验项目 项目框架的总体结构 实验环境 实验内容 Decaf / Mind 编译实验项目 实验安排 项目回顾 考核方案 项目回顾 Decaf 语言 一种强类型的、单继承的简单面向对象语言 许多大学用作教学语言 Stanford University Massachusetts Institute of Technology University of Tennessee Brown University Texas AM University Southern Adventist University …… 项目回顾 清华 Decaf / Mind 项目 始于计算机系98级本科生《编译原理》课 基于 Stanford University 课程 CS143 /class/cs143/ 根据实际需要进行了一定的修改和简化 如:适应 Windows 平台 增加目标代码在 X86 上的执行 02 级的 TOOL 项目 03 级之后经历了3 次较大改动 项目回顾 清华 Decaf / Mind 项目 03-04 级 Decaf 项目 实验框架中开发语言由 C++ 改为 Java 计 50 班 Mind 项目 实验框架由原来的单遍组织改为多遍组织 开发语言为 C++,Decaf 语言有所精简(Mind语言) 05 级至今 Decaf / Mind 项目 以 Mind 项目为基础,开发语言由 C++ 改为 Java 项目回顾 清华 Decaf / Mind 项目 参与项目开发的部分同学 杨俊峰(Stanford 助教) 张迎辉(计99-计00助教) 毛雁华(计00-计01助教,X86后端) 刘天淼(计01助教,Windows环境) 唐 硕(计02助教,TOOL) 梁英毅(计03-计05助教,Java 版,Mind,RA) 张 铎(计05-计07助教,改 Mind 至 Java 版) 蒋 波(参与 Decaf 语言规范的翻译 ) (还有许多同学没有一一列举) 项目框架的总体结构 当前项目中编译器的逻辑结构 当前项目中编译器的逻辑结构 项目框架的总体结构 实验内容 四个阶段 实验内容 四个阶段 Phase 1 词法和语法分析 借助 Lex 和 Yacc 实现词法和语法分析 一遍扫描后产生一种高级中间表示 (实验指定的抽象语法树 AST) Phase 2 语义分析 遍历抽象语法树构造符号表、实现静态语 义分析,产生带标注的抽象语法树 Phase 3 生成三地址码 TAC Phase 4 基于 TAC 实现一些简单的数据流分析 实验内容 Phase 1 借助 Lex 和 Yacc 实现词法和语法分析 生成一种高级中间表示(抽象语法树 AST) 实验内容 生成一种高级中间表示(抽象语法树 AST) Phase 1 借助 Lex 和 Yacc 实现词法和语法分析 实验内容 Phase 1 借助 Lex 和 Yacc 实现词法和语法分析 定义 Decaf 语法的一个可能的上下文无关文法G[Program] (片断) 实验内容 Phase 1 借助 Lex 和 Yacc 实现词法和语法分析 比较:语法分析结果(具体语法树 CST) 生成一种高级中间表示(抽象语法树 AST) 实验内容 Phase 2 遍历 AST 构造符号表、实现静态语义分析 实验内容 Phase 2 遍历 AST 构造符号表、实现静态语义分析 实验内容 Phase 2 遍历 AST 构造符号表、实现静态语义分析 实验内容 Phase 3 由带标注的 AST 生成三地址码 TAC 实验内容 Phase 3 由带标注的 AST 生成三地址码 TAC 每个 class 对应一个 vtable 实验内容 Phase 3 由带标注的 AST 生成三地址码 TAC 实验内容 Phase 3 由带标注的 AST 生成三地址码 TAC 实验内容 Phase 3
显示全部
相似文档