编译原理实践implementationofprogramminglanguage窦亮

编译原理实践implementationofprogramminglanguage窦亮

ID:1167858

大小:893.00 KB

页数:39页

时间:2017-11-08

编译原理实践implementationofprogramminglanguage窦亮_第1页
编译原理实践implementationofprogramminglanguage窦亮_第2页
编译原理实践implementationofprogramminglanguage窦亮_第3页
编译原理实践implementationofprogramminglanguage窦亮_第4页
编译原理实践implementationofprogramminglanguage窦亮_第5页
资源描述:

《编译原理实践implementationofprogramminglanguage窦亮》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理实践Implementationofprogramminglanguage窦亮ldou@cs.ecnu.edu.cn序言《编译原理》的课程实践一般有两种可能的安排。其一,为配合编译课程教学,而安排多次小型实践,分别支持编译程序的各个阶段。其二,针对某一规模适中的语言来设计和实现一个相对完整、独立的编译器。《编译原理实践》作为《编译原理》课程的延伸,目的是让大家动手设计和实现某一规模适中的语言的编译器,该编译器不仅涉及编译程序的各个阶段,而且也强调了编译的总体设计、各个阶段的接口安排等等。1.课程目标回顾编译相关的文法和形式语言基本理论以PL/0语言为例,介绍一个编译程序从语

2、法定义、词法分析、语法分析、出错处理、代码生成到解释执行的全过程。使学生了解什么是编译,并懂得怎样从语言的定义出发,系统地去开发一个语言的编译程序介绍Lex(词法分析程序的生成系统)&Yacc(语法分析程序的生成系统)PL/0编译器给出一个简单的类Pascal语言,其编译程序用高级语言(C和Pascal)实现。通过剖析该高级语言程序以理解各编译成分的功能及手工实现方法。PL/0编译程序源语言(PL/0)目标语言(类p-code)实现语言(pascal/C)PL/0类p-codepascal/CPL/0语言程序类p-code代码PL/0编译程序类p-code解释程序类p-code代码

3、PL/0源程序输入数据输出数据PL/0编译系统的结构框架课程作业给出PL/X语言的词法和语法规则,要求实现PL/X语言编译程序,包括词法分析、语法分析、出错处理、代码生成和解释程序用PL/X语言编若干个程序,用自己开发的编译程序对它编译,在编译过程中要求能连续指出语法错误不中断,能生成代码程序,能解释执行代码程序,最后输出正确结果可以用自己熟悉的程序设计语言实现范例演示详细要求和评分规则见《编译原理实践作业要求》课程作业检查时间:11月17日至12月29日每周一上午8:00—11:30实验楼3楼机房为了避免检查冲突,将把大家分成若干组,每组完成对PL/X的不同扩展。按照指定时间检查

4、,无特殊原因不得更换时间。先检查的同学将获得更高的时间分,扩展点的难度也是由简单到复杂。考核方式平时成绩(10%)出勤率课堂练习期末考试(20%)—第十周暂定11.10课程作业成绩(70%)2.引论什么是编译程序编译程序的组成编译程序的结构2.1什么是编译程序(编译器)编译器是将一种语言翻译为另一种语言的计算机程序。编译器将源程序(sourcelanguage)编写的程序作为输入,而产生用目标语言(targetlanguage)编写的等价程序。通常地,源程序为高级语言(high-levellanguage),如C或C++,而目标语言则是目标机器的目标代码(objectcode),有

5、时也称作机器代码(machinecode),也就是写在计算机机器指令中的用于运行的代码。编译器是一种相当复杂的程序,其代码长度可从10000到1000000行不等。编写甚至读懂这样的一个程序都非易事,大多数的计算机科学家和专业人员从来也没有编写过一个完整的编译器。但是,几乎所有形式的计算均要用到编译器,而且任何一个与计算机打交道的专业人员都应掌握编译器的基本结构和操作。操作系统编译系统裸机编译器历史回顾本世纪40年代,开始时程序都是用机器语言(machinelanguage)编写的。机器语言就是表示机器实际操作的数字代码,例如:C70600000002表示在IBMPC上使用的Int

6、el8x86处理器将数字2移至地址0000(16进制)的指令。这种代码形式很快就被汇编语言(assemblylanguage)代替了。在汇编语言中,都是以符号形式给出指令和存储地址的。例如,汇编语言指令MOVX,2就与前面的机器指令等价(假设符号存储地址X是0000)。汇编程序(assembler)将汇编语言的符号代码和存储地址翻译成与机器语言相对应的数字代码。发展编程技术的下一个重要步骤就是以一个更类似于数学定义或自然语言的简洁形式来编写程序的操作,它应与任何机器都无关,而且也可由一个程序翻译为可执行的代码。例如,前面的汇编语言代码可以写成一个简洁的与机器无关的形式x=2;在19

7、54年至1957年期间,IBM的JohnBackus带领的一个研究小组对FORTRAN语言及其编译器的开发NoamChomsky开始了他的自然语言结构的研究。他的发现最终使得编译器结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法(grammar)的难易程度以及识别它们所需的算法来为语言分类乔姆斯基分类结构(Chomskyhierarchy)---文法的4个层次:0型、1型、2型和3型文法,且其中的每一个都是其前者的专门化。2型(或上下文无关

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

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

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