资源描述:
《第2章 PL0编译程序ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PL/0语言:功能简单结构清晰可读性强具备一般高级语言的必须部分第2章PL/0编译程序的实现(1).PL/0语言的编译程序能充分体现一个高级语言编译程序实现的基本技术和步骤(2).PL/0语言编译程序是一个非常合适的小型编译程序的教学模型。PL/0编译程序的特点1.PL/0语言描述2.PL/0编译程序的结构3.PL/0编译程序的词法分析4.PL/0编译程序的语法分析5.PL/0编译程序的目标代码结构与生成6.PL/0编译程序的语法错误处理7.PL/0编译程序的目标代码执行本章的重点与主要内容本节将用语法图扩充的巴科斯一瑙尔范式(E
2、BNF)两种形式给出PL/0语言的语法2.1PL/0语言描述用语法图描述语法规则的优点:直观易读.在图2.l的语法图中用椭圆和圆圈中的英文字表示终结符,用长方形内的中文字表示非终结符1.PL/0语言的语法描述图终结符:是构成语言文法的单词,是语法成分的最小单位.非终结符:是一个语法成分,在书写语言程序时并不出现,它是由终结符和非终结符串、或终结符串定义的。PL/0编译程序的特点程序描述图程序分程序图2.1(a)程序语法描述图图2.1(b)程序语法描述图分程序constident=number,;varident,;procedur
3、eident;分程序;语句consta=10;varb,c;procedurep;constd=12,e=13,varf;beginf=d+e;end;beginc:=b+a;end;语句语法描述图语句表达式语句语句语句条件ident:=callidentbeginend;ifthen语句条件whiledoread()ident,write(),表达式表达式语法描述图表达式项项+-+-条件表达式语法描述图表达式odd条件表达式=#<<=>>=表达式项语法描述图项因子因子*/因子identnumber表达式()因子语法描述图(1).
4、EBNF表示的符号说明a.<>用左右尖括号括起来的中文字表示语法构造成分或称语法单位,为非终结符b.::=该符号左部由右部定义.读作‘定义为’c.
5、表示‘或’.为左部可由多个右部定义2PL/0语言文法的EBNF表示d.{}表示花括号内的语法成分可以重复.在不加上下界时可重复0到任意次被有上下界时为可重复次数的限制。e.[]表示方括号内的成分为任选项f.()表示圆括号内的成分优先。a.<程序>::=<分程序>b.<分程序>::=[<常量说明部分>][<变量说明部分>][<过程说明部分>]<语句>(2).PL/0语言文法的EBNF表示
6、c.<常量说明部分>::=const<常量定义>{,<常量定义>}d.<常量定义>::=<标识符>=<无符号整数>e.<无符号整数>::=<数字>{<数字>}f.<变量说明部分>::=VAR<标识符>{,<标识符>};g.<标识符>::=<字母>{<字母>
7、<数字>}h.<过程说明部分>::=<过程首部><分程序>{;<过程说明部分>};i.<过程首部>::=procedure<标识符>;j.<语句>::=<赋值语句>
8、<条件语句
9、<当型循环语句>
10、<过程调用语句>
11、<该语句>
12、<写语句>
13、<复合语句>
14、<空>k.<赋值语句>::
15、=<标识符>:=<表达式>l.<复合语句>::=BEGIN<语句>{;<语句>}ENDm.<条件>::=<表达式><关系运算符><表达式>
16、ODD<表达式>n.<表达式>::=[十
17、一]<项>{<加法运算符><项>}o.<项>::=<因子>{<乘法运算符><因子>}p.<因子>::=<标识符>
18、<无符号整数>
19、<表达式>q.<加法运算符>::=十
20、一q.<加法运算符>::=十
21、一r.<乘法运算符>::=*
22、/s.<关系运算符>::==
23、#
24、<
25、<=
26、>
27、>=t.<条件语句}::=IF<条件>THEN<语句>u.<过程调用语句>::
28、=call<标识符>v.<当型循环语句>::=WHllE<条件>Do<语句>w.<读语句>::=READ(<标识符>{,<标识符>})x.<写语句>::=WRITE(<表达式>{,<表达式>})y.<字母>::=a
29、b
30、...
31、x
32、y
33、zz.<数字>::=0
34、1
35、2
36、...
37、8
38、9.PL/0语言是PASCAL语言子集;.它的编译程序是编译解释执行系统;.PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关;2.2PL/0编译程序的结构.PL/0的编译程序和目标程序的解释执行程序都是用PASCAL语言书写的,因此PI/O语
39、言可在配备PASCAL.语言的任何机器上实现。PL/0编译程序的结构PL/0源程序词法分析程序语法分析程序代码程序目标程序表格管理程序出错处理程序PI/0编程序是用PASCAL语言书写,整个编译程序(包括主程序)是由18个嵌套及并列的过程或函数组成