“编译原理”课程实验项目介绍

“编译原理”课程实验项目介绍

ID:30780148

大小:78.05 KB

页数:5页

时间:2019-01-03

“编译原理”课程实验项目介绍_第1页
“编译原理”课程实验项目介绍_第2页
“编译原理”课程实验项目介绍_第3页
“编译原理”课程实验项目介绍_第4页
“编译原理”课程实验项目介绍_第5页
资源描述:

《“编译原理”课程实验项目介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、“编译原理”课程实验项目介绍摘要:在“编译原理”课程的教学中,实验项目是I-分关键的部分。Decaf/Mind项0是近几年清华人学计算机系本科生“编译原理,'课程的主体实验项0,在该项目中,学生在实验框架基础上,针对一个简单面向对象语言的实现开展4〜5个阶段的编程实验,对理解和巩固理论知识以及提高软件系统的开发能力有较大帮助。本文就Decaf/Mind项目的背景、内容以及实施情况进行简要介绍。关键词编译原理;课程实验;Decaf/Mind项目1Decaf/Mind项H的背景2001年,我们引进了Stanford课程CS143(Compilers,http://www.stanf

2、ord.edu/class/csl43/,CS143,StanfordUniversity)的课程实验框架(其原始框架由JulieZelenski设计)。该实验框架设计实现一种简单面向对象语言Decaf的编译器,因此我们称Z为Decaf项目。Decaf是一种强类型的、单继承的简单面向对象语言,是一种较为流行的教学语言,曾经在Stanford>MIT、UniversityofTennessee>Brown>TexasA&M、SouthernAdventist等多所大学的相关课程屮使用。在1998级木科生的“编译原理"课程(2001年秋季学期)中,我们首次采用了Decaf项冃,并根

3、据需要对实验框架进行了一定的调整,包括适应Windows平台、增加口标代码在X86的执行以及对源语言进行适当的改动等。比如在2002级,我们对该项目进行一定的简化之后,称之为TOOL项目。从2003级的课程之后,我们对原始的Decaf项目实验框架进行了3次实质性改动。在2003〜2004级的Decaf项目屮,我们将原先实验框架的开发语言由C++改为Java。在计50班(2005级“姚"班)的,,编译原理”课程中,我们参考了U.C.Berkeley课程CS164(ProgrammingLanguagesandCompilers,http://insf.eecs.berkeley.

4、edu/〜csl64/archives.html,CS143,UniversityofCaliforniaatBerkeley)的COOL课程项目以及Cornell大学课程CS412(IntroductiontoCompilers,http://www.cs.cornell.edu/courses/cs412/2003sp/CS412/413,CornellUniversity)中所采用的Iota项目,将实验框架由原來的单遍组织改为多遍组织,我们称之为Mind(Mindisnotdecaf)项口,并称源语言为Mind语言。由于计50班的编译课程安排在Java程序设计课程Z前,所

5、以首次Mind项目的开发语言为C卄。随后,在2005级其他班的课程中,我们又将开发语言由C++改凹Java。从2006级开始,实验框架没有发生大的变动,只是对其进行微调或进行适当简化。下面是对2006〜2007级教学情况的介绍。2课程实验项口的内容Decaf/Mind项目的实验框架是设计实现Decaf/Mind语言的编译器,该编译器的工作原理如图1所示。Decaf/Mind程序朴段一字苻串单词序列词法分析语法分析抽学语法树2二林載■中间代码优化(1)划分基本块;(2)数据流分析;、语义分析(1)构建符号表;(2)非上下文无关语法检查;(3)类型检查带标注的抽三地叱.址码中间代码

6、生成三地生成汇编代码(1)寄存器分配;MIPS汇编代码SPIM图1Decaf/Mind编译器工作原理我们将实验分成如下5个阶段:阶段1:词法和语法分析。借助Lex和Yacc实现词法和语法分析,一遍扫描后直接产生一种高级中间表示(实验指定的抽象语法树AST)O使用的Lex和Yacc版本分别为Flex(Jflex,http://jflex.de/)和BYACC/J(BYACC/J,http://byaccj.sourceforge.net/)o原始的Decaf项目采用Yacc实现主要编译阶段,实验的3个阶段(词法、语法分析阶段,语义分析阶段,生成三地址屮间代码阶段)是-•个单遍的过

7、程(注:从三地址码到MIPS汇编代码的翻译由实验框架给定,没冇安排阶段实验)。对于这个单遍的实验框架,前几届学生感觉调试的难度较大,有一些语言特征难以实现,但它可以和理论课学习屮语法制导翻译的部分相呼应。修改框架后,依赖于Yacc工具的部分大大简化,生成抽象语法树AST形式后,符号表的建立和静态语义的检查工作只需使用树遍历算法就可实现,这符合现实屮编译系统的实际情况。这种框架不能与语法制导翻译的理论直接呼应,但可用于间接指导。阶段2:语义分析。遍丿刃抽象语法树构造符号表、实现静态语义检查(非

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。