第2章 PL0编译程序(PPT中25页之后先不看).ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 PL0编译程序(PPT中25页之后先不看)

PL/0语言的语法图表示 分程序语法描述图 PL/0语言的EBNF表示 构成EBNF(扩展的巴科斯范式)的元素— 非终结符,终结符,开始符,规则 EBNF 的元符号: 用左右尖括号括起来的内容为非终结符 ∷= 读做‘定义为’ ∷=的左部由右部定义 → 读做‘定义为’ → 的左部由右部定义 | 读做‘或’ 表示右部候选内容 { } 表示花括号内的内容可重复任意次或限定次数 [ ] 表示方括号内的内容为任选项 ( ) 表示圆括号内的内容优先 EBNF表示的实例 例:用EBNF描述整数的定义 : 整数∷=[+|-]数字{数字} 数字∷=0|1|2|3|4|5|6|7|8|9 或 整数∷=[+|-]非零数字{数字}|0 非零数字∷=1|2|3|4|5|6|7|8|9 数字∷=0|非零数字 PL/0语言的定义 (1)程序? 分程序. (2) 分程序 ? [常量说明部分] [变量说明部分] 〈复合语句〉 (3) 常量说明部分 ?CONST常量定义{,〈常量定义〉}; (4) 常量定义 ? 〈标识符〉=〈无符号整数〉 (5)变量说明部分 ?VAR标识符{,〈标识符〉}; (6)标识符 ?〈字母〉{〈字母〉|〈数字〉} (7)〈语句〉 ?〈赋值语句〉|〈条件语句〉 |〈当型循环语句〉| 重复语句 |〈读语句〉|〈写语句〉|〈复合语句〉|〈空〉|FOR语句 (8) 〈复合语句〉 ? BEGIN 〈语句〉{; 〈语句〉}END PL/0语言的定义 (9) 赋值语句 ?〈标识符〉:=〈表达式〉 (10) 条件语句 ?IF条件THEN语句[ELSE语句] (11) 条件 ?〈表达式〉〈关系运算符〉〈表达式〉|NOT〈表达式〉 (12) 当型循环语句 ? WHILE条件DO语句 (13) 重复语句? REPEAT语句{;语句} UNTIL条件 (14) 读语句 ?READ ‘(’ 标识符{,〈标识符〉} ‘)’ ; (15) 写语句 ?WRITE ‘(’ 表达式{,〈表达式〉} ‘)’ ; (15)* FOR语句 ?FOR〈标识符〉:=〈表达式〉TO 〈表达式〉 DO 语句〉 PL/0语言的定义 (16)表达式 ?[+|-]〈项〉{〈加法运算符〉〈项〉} (17)项 ?〈因子〉{〈乘法运算符〉〈因子〉} (18)因子?〈标识符〉|〈无符号整数〉|‘(’ 表达式‘)’ (19)加法运算符 ? +|- (20)乘法运算符 ? *|/ (21)关系运算符? =|||=||= (22)〈字母〉 ?a|b|…|x|y|z (23) 数字 ?0|1…|8|9 Var fact,x; begin read(x); write(x); if x0 then begin fact:=1 repeat fact:=fact*x; x:=x-1 until x=0 end; write(fact) end. 词法分析程序的设计---使用状态转换图实现 PL/0编译程序语法分析的设计与实现 自顶向下的语法分析 递归子程序法 自顶向下的语法分析 VAR A; BEGIN READ(A) END. 程序 分程序 . 变量说明部分 语句 VAR 标识符 ; 复合语句 A BEGIN 语句 END 读语句 READ ( 标识符 ) A 递归子程序法 递归子程序法:对应每个非终结符语法单元,,编一个独立的处理过程(或子程序)。语法分析从读入第一个单词开始,由非终结符程序(即开始符)出发,沿语法描述图箭头所指出的方向进行分析。当遇到非终结符时,则调用相应的处理过程,从语法描述图看,也就进入了一个语法单元,再沿当前所进入的语法单元所指箭头方向继续进行分析。当遇到描述图中是终结符时,则判断当前读入的单词是否与图中的终结符相匹配,若匹配,再读取下一个单词继续分析。遇到分支点时,将当前的单词与分支点上多个终结符逐个相比较,若都不匹配时可能是进入下一个非终结符语法单位或是出错。 例:如何用递归子程序法实现表达式的语法分析 因子的语法图 因子 表达式的EBNF 〈表达式〉∷=[

文档评论(0)

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

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

1亿VIP精品文档

相关文档