编译实验手册版本

编译实验手册版本

ID:34819626

大小:285.00 KB

页数:16页

时间:2019-03-11

编译实验手册版本_第1页
编译实验手册版本_第2页
编译实验手册版本_第3页
编译实验手册版本_第4页
编译实验手册版本_第5页
资源描述:

《编译实验手册版本》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、兰州大学计算机科学与技术专业编译原理实验手册(V1.4)第一节概述一、实验目的编译原理是一门实践性很强的课程,但由于课时所限,只能在课堂上讲授一些通用的原理和方法。而为了真正学好这门课程,必须自己动手构造出一个编译器,才能对书里讲到的原理、方法和技术有较全面的体会,才能对学生以后的程序设计和解决实际问题的能力有所帮助。矚慫润厲钐瘗睞枥庑赖。实际的编译程序是十分复杂的,有时由多达十几万条指令组成。为此,编译原理的实践教学,采用简化编译过程的办法,选择最关键的三个环节──词法分析、语法分析、语义分析和中间代码产生,每个环节作为一个实践课题

2、,逐步深入,扩展功能,直至得到一个简单实用的编译器。本实验不涉及到优化。聞創沟燴鐺險爱氇谴净。二、实验内容任何一个实用的高级语言,其语法都比较复杂,如选其作为源语言,很难实践全过程。故本试验将定义一个简化的语言──PASCAL语言的一个子集作为源语言,分三个课题、一步步地构造出它的编译程序。所有试验项目前后贯穿这一条主线进行。本实验共进行6周,每周3学时,共18学时。本实验主要包括以下三个课题:残骛楼諍锩瀨濟溆塹籟。1.词法分析:以源程序为输入,输出单词符号流;2.语法分析:以源语言的文法为依据,调用词法分析器,使用递归下降分析法或算

3、符优先分析法或LR(1)分析法,构造能识别源语言各种语法结构的语法分析器;(语发单元,语法树碑)酽锕极額閉镇桧猪訣锥。3.语义分析和中间代码产生:使用语法制导翻译技术,对源语言程序进行简单的翻译,输出四元式序列。在本节的第三部分给出了PASCAL语言两个子集的文法,对这些文法稍加变换,即可获得用于语法分析的LL(1)文法或LR(1)文法。学生可以直接选择一个作为编译器的源语言,也可以对这些文法进行改造,以获得能力更为强大的源语言。学生也可以自己设计源语言,来完成这些题目;唯一的要求是源语言必须包含三种基本的程序设计结构(顺序、选择、循

4、环)和至少两种不同的数据类型。彈贸摄尔霁毙攬砖卤庑。本实验要求:·所有的输入输出均采用文件形式。·独立完成。·语言不限,开发工具不限;但必须有可运行的程序和规范的注释。三、PASCAL语言子集的文法16由于Pascal语言结构严谨,层次清晰,语法与C语言接近,也便于理解,因此本实验抽取Pascal语言的一个子集,稍加改造,作为源语言,姑且命名为LittleP。一个LittleP程序由一系列全局数据声明和一个主程序体组成。所有数据采用静态存储分配,没有I/O,只支持一种基本数据类型:无符号整数。謀荞抟箧飆鐸怼类蒋薔。Procedure,

5、procedurehead,procedurebody,variable,declare,compound,厦礴恳蹒骈時盡继價骚。Statment,definition,list,empty,variablename,style,statement,Block,茕桢广鳓鯡选块网羈泪。condition,cycle,arithmeticexpression,relationexpression,term,add,muti,鹅娅尽損鹌惨歷茏鴛賴。factor,num,identifier,letter,digit,endue赋予1.Lit

6、tleP的文法:〈程序〉→〈程序首部〉〈程序体〉.〈程序首部〉→program〈程序名〉;  〈程序体〉→〈变量声明〉〈复合语句〉〈变量声明〉→var〈变量定义列表〉

7、〈空〉<变量定义列表>→〈变量定义〉〈变量定义列表〉

8、〈变量定义〉;〈变量定义〉→〈变量名列表〉:<类型>;<变量名列表>→〈变量名〉

9、〈变量名〉,〈变量名列表〉<类型>→integer〈复合语句〉→begin〈语句块〉end〈语句块〉→〈语句〉|〈语句〉;〈语句块〉〈语句〉→〈赋值语句〉

10、〈条件语句〉

11、〈循环语句〉

12、〈复合语句〉

13、〈空〉〈赋值语句〉→〈左部〉:=〈右部

14、〉〈左部〉→〈变量名〉〈右部〉→〈算术表达式〉〈条件语句〉→if〈关系表达式〉then〈语句〉else〈语句〉〈循环语句〉→while〈关系表达式〉do〈语句〉<关系表达式>→〈算术表达式〉〈关系运算符〉〈算术表达式〉<算术表达式>→〈项〉

15、〈算术表达式〉〈加运算符〉〈项〉<项>→〈因子〉

16、〈项〉〈乘运算符〉〈因子〉〈因子〉→〈变量名〉|(〈算术表达式〉)|〈整数〉〈程序名〉→〈标识符〉〈变量名〉→〈标识符〉16〈标识符〉→〈字母〉|〈标识符〉〈字母〉|〈标识符〉〈数字〉〈整数〉→〈数字〉|〈整数〉〈数字〉〈关系运算符〉→<

17、<=

18、=

19、

20、>=

21、>

22、<>〈加运算符〉→+

23、-〈乘运算符〉→*

24、/〈字母〉→a

25、b

26、…

27、x

28、y

29、z〈数字〉→1

30、2

31、3

32、4

33、5

34、6

35、7

36、8

37、9

38、02.在此基础上加以扩充,可得功能较强的一个LittleP语言的超集:LittleP+

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

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

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