编译原理第二章.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1 1 * 计算机科学与技术学院 * 第二章 PL/0编译程序的实现 2.1 PL/0语言描述 2.1.1 PL/0语言的语法描述图 它由世界著名计算机科学家N.Wirth编写 它是PASCAL语言的子集,功能简单,结构清晰,可读性  强,具备了一般高级语言的必备部分 它充分体现一个高级语言编译程序实现的基本方法和技术 它的目标程序为假想栈式计算机的汇编语言,与具体计  算机无关 Niklaus Wirth 它的编译程序和目标程序的解释执行程序可用Pascal,C或  其它语言书写,因此PL/0语言可在配备相应书写语言的任  何机器上实现 用语法图描述语法规则的优点是直观、易读 在图2.1的语法图中用椭圆和圆圈中的英文字或字符表示  终结符,用长方形内的中文字表示非终结符 终结符:构成语言文法的单词,是语法成分的最小单位 通常称第一个非终结符为文法的开始符号 程序语法描述图 分程序语法描述图 语句语法描述图 条件语法描述图 表达式语法描述图 图2.1(f) 项语法描述图 因子语法描述图 2.1.2 PL/0语言文法的EBNF表示 1. BNF与EBNF的介绍: BNF(BACKUS-NAUR FORM)是根据美国的John W.Backus与丹麦的Peter Naur来命名的,它从语法上描 述程序设计语言的元语言。采用BNF就可说明哪些符号 序列是对于某给定语言在语法上有效的程序 BNF引入的符号: 用左右尖括号括起来的中文字表示语法构造成分,    或称语法单位,为非终结符 ∷= 定义为,该符号的左部由右部定义 |  或,左部可由多个右部定义 EBNF引入的符号: { } 表示花括号内的语法成分可重复 [ ] 表示方括号内的语法成分为任选项 ( ) 表示圆括号内的成分优先 一个用EBNF描述的例子: 整数∷=[+|-]数字{数字} 数字∷=0|1|2|3|4|5|6|7|8|9 整数∷=[+|-]非零数字{数字}|0 非零数字∷=1|2|3|4|5|6|7|8|9 数字∷=0|1|2|3|4|5|6|7|8|9 2. PL/0语言文法的EBNF表示: 〈程序〉∷=〈分程序〉. 〈分程序〉∷=[〈常量说明部分〉][〈变量说明部分〉 ][〈过程说明部分〉]〈语句〉 〈常量说明部分〉∷=CONST〈常量定义部分〉{,〈常 量定义〉}; <常量定义>::=<标识符>=<无符号整数> 〈无符号整数〉∷=〈数字〉{〈数字〉} 〈变量说明部分〉∷=VAR〈标识符〉{,〈标识符〉}; <常量定义>::=<标识符>=<无符号整数> 〈无符号整数〉∷=〈数字〉{〈数字〉} 〈变量说明部分〉∷=VAR〈标识符〉{,〈标识符〉}; 〈标识符〉∷=〈字母〉{〈字母〉|〈数字〉} <过程说明部分>::=<过程首部><分程序>{; <过程说明部分>} <过程首部>::=PROCEDURE<标识符>; <语句>::=<赋值语句>|<条件语句>|<当型 循环语句>|<过程调用语句>|<读语句>|<写语 句>|<复合语句>|<空> <赋值语句> ::= <标识符>:=<表达式> <复合语句> ::= BEGIN<语句>{;<语句>}END <条件> ::= <表达式><关系运算符><表达式> |ODD<表达式> <表达式> ::=[+|-]<项>{<加法运算符>< 项>} <项> ::= <因子>{<乘法运算符><因子>} <因子> ::= <标识符>|<无符号整数>|‘(’< 表达式>‘)’ <加法运算符> ::= +|- <乘法运算符> ::= *|/ <关系运算符> ::= =|#|<|<=|>|>= <条件语句> ::= IF<条件>THEN<语句> <过程调用语句> ::= CALL<标识符> <当型循环语句> ::= WHILE<条件>DO<语句> <读语句> ::= READ’(’<标识符>{,<标识符> }‘)’ <写语句> ::= WRITE’(’<表达式>{,<表达式> }‘)’ <字母> ::= a|b|…|X|Y|Z <数字> ::= 0|1|…|8|9 2.2 PL/0 编译程序的结构 编译过程采用一趟扫描方式,以语法语义分析程序为核  心,词法分析程序和代码生成程序都作为一个独立的过  程,当语法分析需要读单词时就调用词法分析程序,而  当语法分析正确需生成相应的目标代码时,就调用代码  生成程序 用表格管理程序建立变量、常量和过程标识符的说明与  引用之间的信息联系 用出错处理程序对词法和语法语义分析遇到的错误给出  在源程序中出错的位置和错误性质 当源程序编译正确时,PL/O编译程序自动调用解释执行  程序,

文档评论(0)

yingzhiguo + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档