编译原理 第二章 pl0编译程序的实现ppt课件.ppt

编译原理 第二章 pl0编译程序的实现ppt课件.ppt

ID:58665051

大小:809.00 KB

页数:98页

时间:2020-10-05

编译原理 第二章 pl0编译程序的实现ppt课件.ppt_第1页
编译原理 第二章 pl0编译程序的实现ppt课件.ppt_第2页
编译原理 第二章 pl0编译程序的实现ppt课件.ppt_第3页
编译原理 第二章 pl0编译程序的实现ppt课件.ppt_第4页
编译原理 第二章 pl0编译程序的实现ppt课件.ppt_第5页
资源描述:

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

1、PL/0编译程序的实现主要内容PL/0语言描述PL/0编译程序结构词法分析语法分析目标代码生成语法错误处理解释执行时的存储分配加入第九章和第十章的内容本章目的以PL/0为例学习编译程序实现的基本步骤和相关技术,熟悉并理解编译程序的基本原理和概念。2.1PL/0语言描述它由世界著名计算机科学家N.Wirth编写PL/0语言:PASCAL语言的子集,功能简单,结构清晰,可读性强,具备了一般高级语言的必备部分它充分体现一个高级语言编译程序实现的基本方法和技术本书提供了两种形式的PL/0语言的语法描述:语法图:

2、用语法图描述语法规则的优点是直观、易读EBNFPL/0的非形式化描述数据类型只有整型标识符的有效长度是10,以字母开始的字母数字串数最多为14位作用域规则(内层可引用包围它的外层定义的标识符)过程无参,可嵌套定义(最多三层),可递归调用语句类型:赋值语句,if...then...,while...do...,read,write,call,复合语句(begin...end),说明语句(const...,var...,procedure…)13个保留字:if,then,while,do,read,writ

3、e,call,begin,end,const,var,procedure,oddPL/0程序示例CONSTA=10; VARB,C;PROCEDUREP; VARD;PROCEDUREQ; VARX; BEGIN READ(X); D:=X; WHILEX#0DOCALLP; END;BEGIN WRITE(D); CALLQ; END;BEGIN CALLP; END.Q的程序体P的程序体主程序体2.1.1PL/0语言的语法描述图语法描述图中的符号说明:A或A:表示终结符(构成语言文法的单词,语法成分

4、的最小单位)中文:表示非终结符(用终结符和非终结符串或终结符串定义)通常称第一个非终结符为文法的开始符号。如“程序”图2.1(a)程序语法描述图图2.1(b)分程序语法描述图图2.1(c)语句语法描述图图2.1(d)条件语法描述图图2.1(e)表达式语法描述图图2.1(f)项语法描述图图2.1(g)因子语法描述图2.1.2PL/0语言文法的EBNF表示BNF(BACKUS-NAURFORM)是根据美国的JohnW.Backus与丹麦的PeterNaur来命名的,它从语法上描述程序设计语言的元语言。采用B

5、NF就可说明哪些符号序列是对于某给定语言在语法上有效的程序BNF引入的符号:<>用左右尖括号括起来的语法成分为非终结符 ∷=表示该符号的左部由右部定义;

6、表示‘或’,左部可由多个右部定义;EBNF引入的符号:{}表示花括号内的语法成分可重复 []表示方括号内的语法成分为任选项 ()表示圆括号内的成分优先PL/0语言文法的EBNF表示:〈程序〉∷=〈分程序〉.〈分程序〉∷=[〈常量说明部分〉][〈变量说明部分〉][〈过程说明部分〉]〈语句〉〈常量说明部分〉∷=CONST〈常量定义部分〉{,〈常量定义〉};

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

8、〈数字〉}<过程说明部分>::=<过程首部><分程序>{;<过程说明部分>}<过程首部>::=PROCEDURE<标识符>;<语句>::=<赋值语句>|<条件语句>|<当型循环语句>|<过程调用语句>|<读语句>|<写语句>|<复合语句>|<空><赋值语句>::=<标识符>:=<表达式><复合语句>::=BEGIN<语句>{;<语句>

9、}END<条件>::=<表达式><关系运算符><表达式>|ODD<表达式><表达式>::=[+|-]<项>{<加法运算符><项>}<项>::=<因子>{<乘法运算符><因子>}<因子>::=<标识符>|<无符号整数>|‘(’<表达式>‘)’<加法运算符>::=+|-<乘法运算符>::=*|/<关系运算符>::==|#|<|<=|>|>=<条件语句>::=IF<条件>THEN<语句><过程调用语句>::=CALL<标识符><当型循环语句>::=WHILE<条件>DO<语句><读语句>::=READ’(’<

10、标识符>{,<标识符>}‘)’<写语句>::=WRITE’(’<表达式>{,<表达式>}‘)’<字母>::=a

11、b

12、…

13、X

14、Y

15、Z<数字>::=0

16、1

17、…

18、8

19、92.2PL/0编译程序的结构PL/0的目标程序为假想栈式计算机的汇编语言,与计算机无关PL/0的编译程序和目标程序的解释执行程序可用各种语言编写。2.2PL/0编译程序的结构1、PL/0编译程序的特点(1)编译程序采用一遍扫描方式,以语法分析程序为核心,词法分析程序和代码生成程序为

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

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

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