PL0编译程序的实现(4学时)

PL0编译程序的实现(4学时)

ID:41066210

大小:478.51 KB

页数:28页

时间:2019-08-15

PL0编译程序的实现(4学时)_第1页
PL0编译程序的实现(4学时)_第2页
PL0编译程序的实现(4学时)_第3页
PL0编译程序的实现(4学时)_第4页
PL0编译程序的实现(4学时)_第5页
资源描述:

《PL0编译程序的实现(4学时)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第2章PL/0编译程序的实现2.1PL/0语言描述2.2PL/0编译程序的结构2.3PL/0编译程序的词法分析2.4PL/0编译程序的语法语义分析2.5PL/0编译程序的目标代码结构和代码生成2.6PL/0编译程序的语法错误处理2.7PL/0编译程序的目标代码解释执行时的存储分配何为PL/0语言?PL/0语言:PASCAL语言的子集,功能简单,结构清晰,可读性强,具备了一般高级语言的必备部分。PL/0程序示例:CONSTA=10;VARB,C;PROCEDUREP; VARD;PROCEDUREQ; VARX; BEGIN READ(X); D:=X;

2、 WHILEX#0DOCALLP; END;BEGIN WRITE(D); CALLQ; END;BEGIN CALLP;END.PL/0编译程序pcode解释程序PL/0源程序注:此处的pcode代码专指PL/0的目标代码,与传统pcode有区别pcode代码2021/9/192.1PL/0语言描述语法描述的目的:用有穷的文法形式,描述(验证)无穷的句子形式。语法描述的常用形式:非形式化描述(不规范)语法描述图:直观、易读。EBNF(扩充的巴科斯-瑙尔范式)NEXTPL/0语言的非形式描述数据类型只有整型标识符的有效长度是10,以字母开始的字母数字串

3、过程无参,可嵌套(最多三层),可递归调用变量的作用域同PASCAL,常量为全局的,无标语句类型:赋值语句,if...then...,while...do...,read,write,call,复合语句begin...end,说明语句:const...,var...,procedure…13个保留字:if,then,while,do,read,write,call,begin,end,const,var,procedure,odd2021/9/19PL/0语言的语法描述图(1)终结符VT语法成分中的最小单位,构成语言文法的单词。椭圆或圆圈内的单词表示VT

4、(2)非终结符VN语法成分,在书写程序时并不出现,但可一直追溯成VT表示的形式。矩形内的符号表示VN(13-15页)BNF(BACKUS-NAURFORM)是根据美国的JohnW.Backus与丹麦的PeterNaur来命名的,它从语法上描述程序设计语言的元语言。采用BNF可说明哪些符号序列是对于某给定语言在语法上有效的程序。BNF引入的符号:<>表示语法构造成分(语法单位),为非终结符∷=‘定义为’

5、‘或’EBNF引入的符号:{}表示花括号内的语法成分可重复[]表示方括号内的语法成分为任选项()表示圆括号内的成分优先PL/0语言文法的EBNF表示8两

6、个用EBNF描述“整数”的例子<整数>∷=[+

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

8、1

9、2

10、3

11、4

12、5

13、6

14、7

15、8

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

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

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

19、2

20、3

21、4

22、5

23、6

24、7

25、8

26、9<数字>∷=0

27、1

28、2

29、3

30、4

31、5

32、6

33、7

34、8

35、9PL/0语言文法参见P15,16练习:P.31题6(2)(3)92.2PL/0编译程序的结构PL/0编译过程采用一趟扫描方式以语法语义分析程序为核心,词法分析程序和代码生成程序都作为一个独立的过程。当语法分析需要读单词时,就调用词法分析程序当语法分析正确需要生成相应的目标代码时,则调

36、用代码生成程序用表格管理程序建立变量、常量和过程标识符的说明与引用之间的信息联系。用出错处理程序对词法和语法分析遇到的错误,给出在源程序中出错的位置和错误性质。10语法语义分析程序词法分析程序表格管理程序出错处理程序代码生成程序目标程序PL/0编译程序的结构图PL/0源程序目标程序解释执行程序输入数据结果编译过程解释执行过程11编译程序总体流程图17页12所需识别的单词:关键字:如BEGIN、END、IF、THEN等运算符:如+、-、*、/、:=、#、>=、<=等标识符:用户定义的变量名、常数名、过程名常数:如10、25、100等整数界符:如,.;()

37、等2.3PL/0编译程序的词法分析词法分析过程GETSYM所要完成的任务:滤空格、识别保留字、识别标识符、拼数、拼复合词、输出源程序参见P.19图通过三个全程量将识别出的单词信息传递给语法分析程序SYM:存放单词的类别,如beginsym,ident,numberID:存放用户所定义的标识符的值NUM:存放用户定义的数13程序pl/0分程序block语句statement条件condition表达式expression项term因子factor2.4PL/0编译程序的语法语义分析语法分析的任务:识别由词法分析给出的单词符号序列在“结构”上是否符合给定的

38、“文法规则”。语法分析的过程:从读入第一个单词开始,由VN“程序”出发,沿语法图箭头所指进行分

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

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

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