编译实践-实验报告-姜楠

编译实践-实验报告-姜楠

ID:42668449

大小:495.68 KB

页数:22页

时间:2019-09-19

编译实践-实验报告-姜楠_第1页
编译实践-实验报告-姜楠_第2页
编译实践-实验报告-姜楠_第3页
编译实践-实验报告-姜楠_第4页
编译实践-实验报告-姜楠_第5页
资源描述:

《编译实践-实验报告-姜楠》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译实践-PL编译系统实现姓名:姜楠专业:计算机科学与技术学院:软件学院提交时间:2013年12月25日北京航空航天大学·软件学院编译实践-PL编译系统实现1.实验要求①以个人为单位进行开发,不得多人合作完成。②共32个学时。个人无计算机者可以申请上机机时。③细节要求:l输入:符合PL/0文法的源程序(自己要有5个测试用例,包含出错的情况,还要用老师提供的测试用例进行测试)l输出:P-Codel错误信息:参见教材第316页表14.4。lP-Code指令集:参见教材第316页表14.5。l语法分析部分要求统一使用

2、递归下降子程序法实现。l编程语言使用C、C++、C#或Java等。l上交材料中不但要包括源代码(含注释)和可执行程序,还应有完整文档。2.PL/0语言描述PL/0语言是一种类PASCAL语言,是教学用程序设计语言,它比PASCAL语言简单,作了一些限制。PL/0的程序结构比较完全,赋值语句作为基本结构,构造概念有l顺序执行、条件执行和重复执行,分别由begin/end,ifthenelse和whiledo语句表示。lPL0还具有子程序概念,包括过程说明和过程调用语句。l在数据类型方面,PL0只包含唯一的整型,可以说明这

3、种类型的常量和变量。l运算符有+,-,*,/,=,<>,<,>,<=,>=,(,)。l说明部分包括常量说明、变量说明和过程说明。2.1PL/0语言文法的EBNF表示<程序>::=<分程序>.<分程序>::=[<常量说明部分>][变量说明部分>]{<过程说明部分>}<语句><常量说明部分>::=const<常量定义>{,<常量定义>};<常量定义>::=<标识符>=<无符号整数><无符号整数>::=<数字>{<数字>}<标识符>::=<字母>{<字母>

4、<数字>}<变量说明部分>::=var<标识符>{,<标识符>};<

5、过程说明部分>::=<过程首部><分程序>;<过程首部>::=procedure<标识符>;<语句>::=<赋值语句>

6、<条件语句>

7、<当型循环语句>

8、<过程调用语句>

9、<读语句>

10、<写语句>

11、<复合语句>

12、<重复语句>

13、<空><赋值语句>::=<标识符>:=<表达式><表达式>::=[+

14、-]<项>{<加法运算符><项>}<项>::=<因子>{<乘法运算符><因子>}<因子>::=<标识符>

15、<无符号整数>

16、'('<表达式>')'<加法运算符>::=+

17、-<乘法运算符>::=*

18、/<条件>::=<表达式><关系运算符

19、><表达式>

20、odd<表达式><关系运算符>::==

21、<>

22、<

23、<=

24、>

25、>=<条件语句>::=if<条件>then<语句>[else<语句>]<当型循环语句>::=while<条件>do<语句><过程调用语句>::=call<标识符><复合语句>::=begin<语句>{;<语句>}end<重复语句>::=repeat<语句>{;<语句>}until<条件><读语句>::=read'('<标识符>{,<标识符>}')'<写语句>::=write'('<标识符>{,<标识符>}')'<字母>::=a

26、b

27、...

28、X

29、Y

30、

31、Z<数字>::=0

32、1

33、2

34、...

35、8

36、9注意:数据类型:无符号整数标识符类型:简单变量(var)和常数(const)数字位数:小于14位标识符的有效长度:小于10位过程嵌套:小于3层1.1PL/0语言的语法图描述图1-1程序语法描述图图1-2分程序语法描述图图1-6项语法描述图图1-7因子语法描述图1.PL/0编译系统结构图1-8PL/0编译程序和解释执行过程PL/0编译程序函数定义层次结构:pl0errorgetsymgetchgentestblockenterpositionconstdeclarationva

37、rdeclarationlistcodest:atementexpressiontermfactorconditioninterpretbase下面介绍这些过程(函数)的作用。pl0主程序error出错处理,打印出错位置和错误代码getsym词法分析,读取一个单词getch取字符gen生成P-code指令,送入目标程序区test测试当前单词符号是否合法block分程序分析处理enter登记符号表position查找标识符在符号表中的位置constdeclaration常量定义处理vardeclaration变量定义处理

38、listcode列出p-code指令清单statement语句部分分析处理expression表达式分析处理term项分析处理factor因子分析处理condition条件分析处理interpretP-code解释执行程序base通过静态链求出数据区的基地址1.PL/0编译程序的词法分析PL/0编译系统中所有的字符,字符串的类型为

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

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

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