编译原理实验指导ppt课件_第1页
编译原理实验指导ppt课件_第2页
编译原理实验指导ppt课件_第3页
编译原理实验指导ppt课件_第4页
编译原理实验指导ppt课件_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Yu Zhang, USTC 编译原理实验指点编译原理实验指点张昱张昱计算机科学与技术学院计算机科学与技术学院中国科学技术大学中国科学技术大学 合肥合肥2021.5.13Yu Zhang, USTCYu Zhang, USTC资源资源v 编译原理实验教程及实验软件包编译原理实验教程及实验软件包v /yuzhang/compilerv 开发环境与工具参见实验教程开发环境与工具参见实验教程1.3节节v Java言语规范第言语规范第3版版JLS3v java.sun/docs/books/jls/v Java 1.5的文法规范文件:的文法规范文件:java15.cup,j

2、ava15.jjv Eclipse ASTv JDT Plug-in Developer Guidev ReferenceAPI Reference org.eclipse.jdt.core.domv JDK+Ant Eclipse IDEv JFlex,Java CUPLALR/JavaCCLL(k)v GCC/SPIMYu Zhang, USTCYu Zhang, USTC编译器实现框架编译器实现框架Yu Zhang, USTCYu Zhang, USTC实验入门指南实验入门指南初步了解初步了解v 开发根底开发根底v Eclipse IDE + JDK + antv 命令控制台命令控制台+

3、JDK + antv 汇编码的运转:汇编码的运转:GCC、SPIMv 自主研发的实验平台及支持库自主研发的实验平台及支持库v 实验言语实验言语v SimpleMiniJOOL言语的特点见实验教程言语的特点见实验教程2.1节节v SkipOOMiniJOOL言语的特点言语的特点v 词法:实验教程词法:实验教程3.2节;语法:节;语法:4.1节;语义:节;语义:5.1节节v 中间表示中间表示v Eclipse AST:见实验教程:见实验教程2.4,2.5节节v LIR:见实验教程:见实验教程6.2节节Yu Zhang, USTCYu Zhang, USTC实验入门指南实验入门指南初步了解初步了解v

4、目的机目的机vX86 CISC生成的汇编码能由生成的汇编码能由GCC编译生成可执行文件编译生成可执行文件vMIPS RISC生成的汇编码能由生成的汇编码能由SPIM模拟器解释执行模拟器解释执行v汇编码简介:实验教程汇编码简介:实验教程7.2和和7.3节节v汇编码的内部表示汇编码的内部表示vAIR(实验教程实验教程7.4节节)Yu Zhang, USTCYu Zhang, USTC实验软件包:课程设计开发包目录实验软件包:课程设计开发包目录v课程设计开发包目录课程设计开发包目录Yu Zhang, USTCYu Zhang, USTC实验软件包:实验支持库的构成实验软件包:实验支持库的构成Yu Z

5、hang, USTCYu Zhang, USTC实验运转平台实验运转平台参见实验教程参见实验教程2.3节节目的目的提供各类编译器组件及组件间信息访问的接口,简提供各类编译器组件及组件间信息访问的接口,简称实验平台接口。称实验平台接口。提供一个实验运转平台,它可以将假设干个编译器提供一个实验运转平台,它可以将假设干个编译器组件衔接装配成一个完好的编译器或解释器并控组件衔接装配成一个完好的编译器或解释器并控制它们的运转。制它们的运转。用户可以经过平台配置文件灵敏地定制待装配的用户可以经过平台配置文件灵敏地定制待装配的各个编译器组件以及待编译或解释执行的源程序各个编译器组件以及待编译或解释执行的源程

6、序文件等。文件等。Yu Zhang, USTCYu Zhang, USTC实验平台接口实验平台接口Yu Zhang, USTCYu Zhang, USTC实验义务实验义务(1)v每一学生可选的待开发组件每一学生可选的待开发组件v组件组件1:带语义检查的分析器:带语义检查的分析器(生成生成AST) v组件组件2:带语义检查的分析器:带语义检查的分析器(生成生成LIR) v组件组件3:基于:基于AST的的x86汇编代码生成器汇编代码生成器v组件组件4:基于:基于AST的的MIPS汇编代码生成器汇编代码生成器v组件组件5:基于:基于LIR的的x86汇编代码生成器汇编代码生成器v组件组件6:基于:基于

7、LIR的的MIPS汇编代码生成器汇编代码生成器v协作同伴的组合方式协作同伴的组合方式v组件组件1+组件组件3+GCC 组件组件1+组件组件4+SPIMv组件组件2+组件组件5+GCC 组件组件2+组件组件6+SPIMYu Zhang, USTCYu Zhang, USTC实验义务实验义务(2)v前端义务:组件前端义务:组件1或组件或组件2v词法分析、语法分析、静态语义分析、中间表示词法分析、语法分析、静态语义分析、中间表示的生成的生成v其中涉及符号表的设计与实现其中涉及符号表的设计与实现v后端义务:组件后端义务:组件3组件组件6之一之一v需求思索动态语义检查如数组下标越界、短需求思索动态语义检

8、查如数组下标越界、短路计算、存放器分配等,但是对代码优化不作要路计算、存放器分配等,但是对代码优化不作要求。求。v独立开发后端时,需求设计和实现符号表独立开发后端时,需求设计和实现符号表v生成的生成的x86汇编代码应能直接用汇编代码应能直接用gcc汇编衔接得到汇编衔接得到可执行文件,生成的可执行文件,生成的MIPS汇编代码那么应能在汇编代码那么应能在SPIM上执行上执行v假设需求运用其他目的平台,必需在假设需求运用其他目的平台,必需在6月月13日前日前与张昱教师联络并确认能否可以运用。与张昱教师联络并确认能否可以运用。Yu Zhang, USTCYu Zhang, USTC实验义务实验义务(3

9、)v最终的编译器最终的编译器v自行选择前后端自行选择前后端v定义好接口,不开放源代码,只提供定义好接口,不开放源代码,只提供jar文件和文件和接口阐明,运转时应能输出作者名接口阐明,运转时应能输出作者名v他的前端后端被采用得越多,那么得分越高他的前端后端被采用得越多,那么得分越高v每个同窗只担任本人提交的编译器的质量。每个同窗只担任本人提交的编译器的质量。v组件发布人不用思索其发布的版本被运用的一切组件发布人不用思索其发布的版本被运用的一切编译器的质量。编译器的质量。Yu Zhang, USTCYu Zhang, USTC提交和发布时间节点提交和发布时间节点v提交节点提交节点v5月月15提交系

10、统设计书,包括进度表和拟开发提交系统设计书,包括进度表和拟开发的组件的组件v5月月22前前 经教师认可学生可调整拟开发的组件经教师认可学生可调整拟开发的组件v5月月31提交已完成源代码和前后端接口描画提交已完成源代码和前后端接口描画v6月月10再次提交已完成源代码和进度报告再次提交已完成源代码和进度报告v6月月20提交源文件、类库文件、测试程序、设提交源文件、类库文件、测试程序、设计文档等计文档等v6月月22提交课程实际的收获、领会和建议发提交课程实际的收获、领会和建议发邮件给张昱教师邮件给张昱教师 v发布节点发布节点v6月月13发布测试程序发布测试程序v6月月16发布测试环境,对最终提交文档

11、的规定发布测试环境,对最终提交文档的规定每次提交时需求阐明当前的执行进每次提交时需求阐明当前的执行进度与方案中的出入与缘由,以及对度与方案中的出入与缘由,以及对方案的调整假设有的话!方案的调整假设有的话!Yu Zhang, USTCYu Zhang, USTC课程设计成果评定课程设计成果评定(1)v评分方式和过程评分方式和过程v1012个学生一组,大家参与,公开评分个学生一组,大家参与,公开评分v评委:评委:1个教师、助教、同组一切同窗个教师、助教、同组一切同窗v教师主导测试过程、学生本人动手按教师要求操教师主导测试过程、学生本人动手按教师要求操作,并用投影机当众显示测试过程作,并用投影机当众

12、显示测试过程v教师提问,同组同窗也可以提问,当众回答教师提问,同组同窗也可以提问,当众回答v问题主要围绕完成的设计和编程,以及测试中暴问题主要围绕完成的设计和编程,以及测试中暴显露的设计或编程错误显露的设计或编程错误Yu Zhang, USTCYu Zhang, USTC课程设计成果评定课程设计成果评定(2)v评分根据评分根据v工程的规范性工程的规范性v编译器的正确性编译器的正确性v错误定位与恢复才干错误定位与恢复才干v所生成的目的代码的质量所生成的目的代码的质量 v回答以下问题时所表现出的对本课程设计所涉及回答以下问题时所表现出的对本课程设计所涉及的编译知识的掌握程度的编译知识的掌握程度v对

13、本人设计和编码的编译器和解释器的熟习程度对本人设计和编码的编译器和解释器的熟习程度v操作的熟练程度操作的熟练程度v所提交文档的完好性、条理性及其中反映的分析所提交文档的完好性、条理性及其中反映的分析和设计的思想和设计的思想Yu Zhang, USTCYu Zhang, USTC课程设计成果评定课程设计成果评定(3)v成果确定成果确定v每个评委给该组同窗排名次,同窗评委的排名要每个评委给该组同窗排名次,同窗评委的排名要包括本人包括本人v由助教根据一切有效排名表,给出最终的排名由助教根据一切有效排名表,给出最终的排名v由教师根据本组的情况,确定本组的最高分和最由教师根据本组的情况,确定本组的最高分

14、和最低分,根据排名,按等间隔确定每个同窗的分数低分,根据排名,按等间隔确定每个同窗的分数v被教师、助教和过半数同窗以为所提交文档不是被教师、助教和过半数同窗以为所提交文档不是本人课程设计成果时,那么本人课程设计成果时,那么0分分v未按时交也是未按时交也是0分分Yu Zhang, USTCYu Zhang, USTC课程设计成果评定课程设计成果评定(4)v奖惩奖惩v假设所开发的前端假设所开发的前端(或后端或后端)被多个同窗被多个同窗(开发的协开发的协作同伴除外作同伴除外)采用,那么在分组评分的根底上加分采用,那么在分组评分的根底上加分,加分原那么是:,加分原那么是:v1、每添加两个采用者加、每添

15、加两个采用者加1分;分;v2、课程设计和平常作业合计不超越、课程设计和平常作业合计不超越50分。分。v单独完成整个编译器,分组评定成果后降单独完成整个编译器,分组评定成果后降10分分v前后端人数比例严重失调,抬高少数人一端分数前后端人数比例严重失调,抬高少数人一端分数v备注备注v成果评定能够有思索不周的地方,解释权在教师成果评定能够有思索不周的地方,解释权在教师v系统地发现所提供的参考源代码中的错误,给予系统地发现所提供的参考源代码中的错误,给予表扬和奖励表扬和奖励Yu Zhang, USTCYu Zhang, USTC实验入门指南实验入门指南深化学习深化学习1v开发根底开发根底v写一个简单的

16、写一个简单的Java程序程序 mydir/src/test.java或者直接利用或者直接利用lab1中的代码中的代码lab1/src/v用用Eclipse编译和调试编译和调试v尝试按实验教程中尝试按实验教程中1.3.3节引见的各种方法来建节引见的各种方法来建立工程立工程v学习在学习在Eclipse下调试和运转下调试和运转v在命令控制台下编译和调试在命令控制台下编译和调试v用用javac编译编译Java源程序,得到源程序,得到Java字节码字节码v用用java运转运转Java字节码字节码v写一个写一个ant编译文件参见实验教程中编译文件参见实验教程中1.3.4节,节,用用ant来编译和运转来编译

17、和运转Java程序程序v用实验平台运转,熟习配置文件用实验平台运转,熟习配置文件Yu Zhang, USTCYu Zhang, USTC实验入门指南实验入门指南深化学习深化学习2v SkipOOMiniJOOL言语及其言语及其ASTv 编写编写SkipOOMiniJOOL程序程序v 目的:了解言语特点,所写程序可以作为测试程序目的:了解言语特点,所写程序可以作为测试程序v 查看查看SkipOOMiniJOOL程序的程序的ASTv 方法:参见方法:参见lab3v 目的:经过目的:经过AST图形化输出了解一个图形化输出了解一个SkipOOMiniJOOL程序与其程序与其AST的对应关系的对应关系v

18、 手工构造手工构造SimpleMiniJOOL程序的程序的ASTv 方法:参见实验教程第方法:参见实验教程第2章,章, TestCase.java等等v 从小言语入手来学习从小言语入手来学习AST的构造的构造v 构造构造AST的一些本卷须知的一些本卷须知v 关于关于List类型的实例:可以用类型的实例:可以用java.util.LinkedList或或ArrayListv 一个一个AST节点不能被多棵节点不能被多棵AST子树所援用子树所援用Yu Zhang, USTCYu Zhang, USTC实验入门指南实验入门指南深化学习深化学习3v前端:词法分析语法分析语义分析前端:词法分析语法分析语义

19、分析v做法做法v运用运用JFlex+CUP来生成分析器的源码来生成分析器的源码: 参见参见ch4和和ch5v运用运用JavaCC来生成分析器的源码来生成分析器的源码: 参见参见ch5v手工编写分析器手工编写分析器v先支持先支持SimpleMiniJOOL,再扩展到,再扩展到SkipOOv言语中的留意点:言语中的留意点:v变量的作用域,同名问题的处置,等等变量的作用域,同名问题的处置,等等v了解了解AST访问者类、管理符号的一些容器类访问者类、管理符号的一些容器类(如如HashMap)、List等等等等v各类符号的描画信息各类符号的描画信息定义符号类、符号表类定义符号类、符号表类Yu Zhang

20、, USTCYu Zhang, USTC实验入门指南实验入门指南深化学习深化学习4v前端:词法分析语法分析语义分析前端:词法分析语法分析语义分析v利用分析器的生成工具构造分析器时利用分析器的生成工具构造分析器时,v先构造简单的语法分析器:不构造先构造简单的语法分析器:不构造AST、不进展、不进展错误处置错误处置重点:熟习分析器的生成工具及其运用方法重点:熟习分析器的生成工具及其运用方法v再构造能输出再构造能输出AST的语法分析器,它只能分析正的语法分析器,它只能分析正确的源程序确的源程序重点:熟习在产生式的语义动作中添加构造重点:熟习在产生式的语义动作中添加构造AST的代码的代码v再构造能处置语法错误并产生再构造能处置语法错误并产生AST的语法分析器的语法分析器重点:识别哪些错误?如何处置错误?如何恢复重点:识别哪些错误?如何处置错误?如何恢复错误?错误信息?错误?错误信息?v以以AST Visitor的实现类为根底实现语义检查的实现类为根底实现语义检查重点:符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论