资源描述:
《第1章 引论2 PL0编译程序的实现资料ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PL/0编译程序的实现1PL/0语言描述2PL/0编译程序的结构3PL/0编译程序的词法分析4PL/0编译程序的语法分析5PL/0编译程序的目标代码结构和代码生成6PL/0编译程序的语法错误处理7PL/0编译程序的目标代码解释执行时的存储分配何为PL/0语言?PL/0语言:PASCAL语言的子集,功能简单,结构清晰,可读性强,具备了一般高级语言的必备部分CONSTA=10;VARB,C;PROCEDUREP;VARD;PROCEDUREQ;VARX;BEGINREAD(X);D:=X;WHILEX#0DOCALLP;END;BEGINWRITE(D);
2、CALLQ;END;BEGINCALLP;END.PL/0程序示例PL/0编译程序pcode解释程序PL/0源程序注:此处的pcode代码专指PL/0的目标码,注意与传统pcode的区别pcode代码PL/0语言描述:PL/0语言的非形式描述PL/0语言的语法描述图PL/0语言文法的扩充的巴科斯-瑙尔范式(EBNF)表示PL/0语言的非形式描述数据类型只有整型标识符的有效长度是10,以字母开始的字母数字串数最多为14位过程无参,可嵌套(最多三层),可递归调用变量的作用域同PASCAL,常量为全局的,无标号语句类型:赋值语句,if...then...,w
3、hile...do...,read,write,call,复合语句begin...end,说明语句:const...,var...,procedure…13个保留字:if,then,while,do,read,write,call,begin,end,const,var,procedure,oddPL/0语言的语法描述图PL/0语言文法的EBNF表示BNF与EBNF的介绍:BNF(BACKUS-NAURFORM)是根据美国的JohnW.Backus与丹麦的PeterNaur来命名的,它从语法上描述程序设计语言的元语言。采用BNF就可说明哪些符号序列是对于某给定
4、语言在语法上有效的程序。BNF引入的符号:<>用左右尖括号括起来的字表示语法构造成分,或称语法单位,为非终结符∷=‘定义为’
5、‘或’EBNF引入的符号:{}表示花括号内的语法成分可重复[]表示方括号内的语法成分为任选项()表示圆括号内的成分优先一个用EBNF描述的例子:<整数>∷=[+
6、-]<数字>{<数字>}<数字>∷=0
7、1
8、2
9、3
10、4
11、5
12、6
13、7
14、8
15、9<整数>∷=[+
16、-]<非零数字>{<数字>}
17、0<非零数字>∷=1
18、2
19、3
20、4
21、5
22、6
23、7
24、8
25、9<数字>∷=0
26、1
27、2
28、3
29、4
30、5
31、6
32、7
33、8
34、9PL/0语言文法的EBNF表示:〈程序〉∷=〈分程
35、序〉.〈分程序〉∷=[〈常量说明部分〉][〈变量说明部分〉][〈过程说明部分〉]〈语句〉〈常量说明部分〉∷=CONST〈常量定义〉{,〈常量定义〉};〈常量定义〉∷=<标识符>=<无符号整数>〈无符号整数〉∷=〈数字〉{〈数字〉}〈变量说明部分〉∷=VAR〈标识符〉{,〈标识符〉};〈标识符〉∷=〈字母〉{〈字母〉
36、〈数字〉}……PL/0编译程序的结构其编译过程采用一趟扫描方式以语法分析程序为核心词法分析程序和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就调用词法分析程序,而当语法分析正确需要生成相应的目标代码时,则调用代码生成程序。用表格管理程序
37、建立变量,常量和过程标识符的说明与引用之间的信息联系。用出错处理程序对词法和语法分析遇到的错误给出在源程序中出错的位置和错误性质。PL/0编译程序的结构图编译程序总体流程图PL/0编译程序的词法分析所需识别的单词:基本字(保留字):BEGIN、END、IF、THEN等运算符:如+、-、*、/、:=、#、>=、<=等标识符:用户定义的变量名、常数名、过程名常数:如10、25、100等整数界符:如‘,’、‘.’、‘;’、‘(’、‘)’等词法分析过程GETSYM所要完成的任务滤空格识别保留字识别标识符拼数拼复合词输出源程序通过三个全程量将识别出的单词信息传递给语法分
38、析程序,SYM,ID,NUMSYM:存放单词的类别,如beginsym,ident,numberID:存放用户所定义的标识符的值NUM:存放用户定义的数词法分析程序流程图GETCH过程流程图程序pl0分程序block语句statement条件condition表达式expression项term因子factorPL/0语法调用关系图语法分析程序流程图说明部分的分析对每个过程说明的对象(变量,常量和过程)造名字表填写所在层次,标识符的属性和分配的相对位置。标识符的属性不同时,所需填入的信息也不同。登录信息由ENTER过程完成。表格管理名字类型层次/值地址存储空间
39、CONSTA=35,B=49;VAR