PL0编译程序实例剖析.ppt

PL0编译程序实例剖析.ppt

ID:51588768

大小:777.50 KB

页数:91页

时间:2020-03-24

PL0编译程序实例剖析.ppt_第1页
PL0编译程序实例剖析.ppt_第2页
PL0编译程序实例剖析.ppt_第3页
PL0编译程序实例剖析.ppt_第4页
PL0编译程序实例剖析.ppt_第5页
资源描述:

《PL0编译程序实例剖析.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第二讲PL/0编译程序PL/0编译程序总体结构PL/0语言简介PL/0编译程序的词法分析类P-code虚拟机PL/0编译程序PL/0编译程序的语法分析PL/0编译程序的语义分析PL/0编译程序的错误处理PL/0编译程序的目标代码生成PL/0编译程序总体结构T-型图PL/0类P-codeC/PascalPL/0编译程序总体结构PL/0编译程序的组织:一个以语法、语义分析程序为中心的单遍编译程序PL/0程序类P-code程序语法、语义分析程序词法分析程序代码生成程序PL/0语言简介PL/0语言为一种简化的类Pascal语言PL/0程序示例PL/0语言的语法描述图PL/0语言的EBNF表示PL/0

2、语言的语义规则PL/0程序示例CONSTA=10;/*主程序常量说明部分*/VARB,C;/*主程序变量说明部分*/PROCEDUREP;/*主程序过程说明部分*/VARD;/*过程P的局部变量说明部分*/PROCEDUREQ;/*过程P的局部过程说明部分*/VARX;/*过程Q的局部变量说明部分*/BEGIN READ(X);D:=X;WHILEX#0DOCALLP; END;BEGIN WRITE(D); CALLQ; ENDBEGIN CALLP;END.P的过程体Q的过程体主程序的过程体PL/0程序示例varm,n,r,q;{计算m和n的最大公约数}proceduregcd;begi

3、nwhiler#0dobeginq:=m/n;r:=m-q*n;m:=n;n:=r;endend;beginread(m);read(n);{为了方便,规定m>=n}ifm0thenbeginfact:=fact*m;m:=m-1;callfactorial;end;end;begin{读入n}read(n);sum:=0

4、;whilen>0dobeginm:=n;fact:=1;callfactorial;sum:=sum+fact;n:=n-1;end;{输出n!}write(sum);end.计算sum=1!+2!+...+n!, (n从控制台读入)PL/0语言的语法描述图内的文字表示所用到的其他语法单位或内的文字表示单词符号每个语法单位对应一个语法描述图一个入口和一个出口的有向图从入口可到达任何节点每个节点都可以到达出口从入口到出口的路径表示该语法单位的一种合法中间形式(短语)有两种类型的节点PL/0语言的语法描述图程序分程序.例:程序和分程序语法单位的语法描述图分程序constidentnumber=

5、,;varident,;;procedureident;分程序语句PL/0语言的EBNF表示EBNF的元符号‘<>’是用左右尖括号括起来的中文字表示语法构造成分,或称语法单位,为非终结符。‘::=’该符号的左部由右部定义,可读作‘定义为’‘

6、’表示‘或’,即左部可由多个右部定义‘{}’表示花括号内的语法成分可以重复;在不加上下界时可重复0到任意次数,有上下界时为可重复次数的限制‘[]’表示方括号内的成分为任选项‘()’表示圆括号内的成分优先例:PL/0语言的EBNF表示片断PL/0语言的EBNF表示<程序>::=<分程序>.<分程序>::=[<常量说明部分>][<变量说明部分>][<过程说明

7、部分>]<语句><常量说明部分>::=CONST<常量定义>{,<常量定义>};<常量定义>::=<标识符>=<无符号整数><无符号整数>::=<数字>{<数字>}<变量说明部分>::=VAR<标识符>{,<标识符>};<标识符>::=<字母>{<字母>

8、<数字>}<过程说明部分>::=<过程首部><分程序>{;<过程说明部分>};<过程首部>::=PROCEDURE<标识符>;……PL/0语言的语义规则类型、上下文约束与作用域规则数据类型只有整数类型数据结构只支持简单变量和常数所支持的数字为最长9位的十进制数标识符的有效长度为10标识符引用前先要声明过程无参数过程可嵌套,最多嵌套3层过程可

9、递归调用内层过程可以引用包围它的外层过程的标识符类P-code虚拟机输入数据输出数据PL/0程序类P-code程序PL/0编译程序类P-code解释程序类P-code虚拟机类P-code虚拟机类P-code语言一种栈式机的语言此类栈式机没有累加器和通用寄存器,有一个栈式存储器,有四个控制寄存器(指令寄存器I,指令地址寄存器P,栈顶寄存器T和基址寄存器B),算逻运算都在栈顶进行指令格式flaf:操作码l:层次差

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

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

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