第2章__PL0编译程序的实现解析ppt课件.ppt

第2章__PL0编译程序的实现解析ppt课件.ppt

ID:58706717

大小:584.00 KB

页数:118页

时间:2020-10-04

第2章__PL0编译程序的实现解析ppt课件.ppt_第1页
第2章__PL0编译程序的实现解析ppt课件.ppt_第2页
第2章__PL0编译程序的实现解析ppt课件.ppt_第3页
第2章__PL0编译程序的实现解析ppt课件.ppt_第4页
第2章__PL0编译程序的实现解析ppt课件.ppt_第5页
资源描述:

《第2章__PL0编译程序的实现解析ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第2章PL/0编译程序的实现本章目的:以PL/0编译程序为实例,学习编译程序实现的基本步骤和相关技术1PL/0编译程序的结构2PL/0编译程序的分析工作(词法,语法和语义)实现3PL/0编译程序的错误处理方法4目标代码生成和类pcode代码解释器1.PL/0编译程序的结构PL/0编译程序PL/0语言程序类p-code代码源语言(PL/0)目标语言(类p-code)实现语言(pascal/C)PL/0类p-codepascal/CPL/0编译程序类p-code解释程序类p-code代码PL/0源程序输入数据输出数据PL/0编译系统的结构框架PL/0语言PL/0语言:PASC

2、AL语言的子集PL/0程序示例PL/0的语法描述图PL/0语言的EBNF表示PL/0程序示例CONSTA=10;(*常量说明部分*) VARB,C;(*变量说明部分*)PROCEDUREP;(*过程说明部分*)VARD;(*P的局部变量说明部分*)PROCEDUREQ;(*P的局部过程说明部分*)VARX;BEGIN READ(X);D:=X;WHILEX#0DOCALLP; END;BEGIN WRITE(D); CALLQ; END;BEGIN CALLP; END.Q过程体p过程体主程序体输入圆柱的半径和高,计算一些面积、体积等varr,h,len,a1,a2,vo

3、lumn;beginread(r);read(h);len:=2*3*r;a1:=3*r*r;a2:=a1+a1+len*h;volumn:=a1*h;write(len);write(a1);write(a2);write(volumn);end.计算最大公约数varm,n,r,q;{计算m和n的最大公约数}proceduregcd;beginwhiler#0dobeginq:=m/n;r:=m-q*n;m:=n;n:=r;endend;beginread(m);read(n);{为了方便,规定m>=n}ifm

4、beginr:=1;callgcd;write(m);end;end.pl/0程序--递规调用varn;procedurerec;beginifn#0thenbeginwrite(n);n:=n-1;callrec;end;end;beginread(n);callrec;end.计算sum=1!+2!+...+n!, n从控制台读入varn,m,fact,sum;{递规计算fact=m!}procedurefactorial;beginifm>0thenbeginfact:=fact*m;m:=m-1;callfactorial;end;end;begin{读入n}re

5、ad(n);sum:=0;whilen>0dobeginm:=n;fact:=1;callfactorial;sum:=sum+fact;n:=n-1;end;{输出n!}write(sum);end.程序分程序.内的文字表示语法成分(短语)或内的文字表示单词符号程序.内的文字表示语法成分(短语)语法图constidentnumber=,;varident,;;procedureident;分程序语句分程序PL/0语言的EBNF表示构成EBNF的元素—(非终结符,终结符,开始符,规则)EBNF的元符号: <>用左右尖括号括起来的内容为非终结符∷=读做‘定义为’∷=的左部由

6、右部定义→读做‘定义为’→的左部由右部定义

7、读做‘或’表示右部候选内容{}表示花括号内的内容可重复任意次或限定次数[]表示方括号内的内容为任选项()表示圆括号内的内容优先例:用EBNF描述<整数>的定义: <整数>∷=[+

8、-]<数字>{<数字>} <数字>∷=0

9、1

10、2

11、3

12、4

13、5

14、6

15、7

16、8

17、9或<整数>∷=[+

18、-]<非零数字>{<数字>}

19、0 <非零数字>∷=1

20、2

21、3

22、4

23、5

24、6

25、7

26、8

27、9 <数字>∷=0

28、<非零数字>PL/0语言是PASCAL语言的子集同PASCAL作用域规则(内层可引用包围它的外层定义的标识符),上下文约束,过程可嵌套定义,可递归调用子集数

29、据类型,只有整型数据结构,只有简变和常数数字最多为14位标识符的有效长度是10语句种类过程无参,最多可嵌套三层目标代码类p-code目标代码类p-code是一种栈式机的汇编语言。栈式机系统结构:没有累加器和寄存器,只有存储栈指针所有运算都在栈顶(零地址机)指令格式:flaf功能码l层次差(标识符引用层减去定义层)a根据不同的指令有所区别指令功能表consta=10; varb,c; procedurep;begin c:=b+a; end;begin read(b); whileb#0do begin callp; write

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

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

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