编译原理:第二章形式语言基础(3)_第1页
编译原理:第二章形式语言基础(3)_第2页
编译原理:第二章形式语言基础(3)_第3页
编译原理:第二章形式语言基础(3)_第4页
编译原理:第二章形式语言基础(3)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编译程序的设计原理与实现如何让计算机认识、理解 和 执行 高级程序设计语言 ?【内容提要】第 2 章 形式语言基础 (3) 2.1 形式语言是字符串集合 2.2 形式语言是由文法定义的 2.3 主要语法成分的定义 2.4 两类特性文法 2.5 文法变换方法 2.6 关于形式语言的分类问题 上节课主要内容回顾: 文法的运算:推导和归约(二者互为逆运算) 推导 : 归约 : 文法的运算与主要语法成分的定义! 主要语法成分的定义 = + =+ = . = .+ =.+ 句型,句子,语法树,短语,简单短语,句柄从语法树上看 句型(句子)、短语、简单短语和句柄: 直接推导( = ),加推导( ), 最左

2、推导( );直接归约( ),加归约( ), 最左归约( ); 语法树的树叶全体-句型(句子); 语法树的子树树叶全体短语(简单短语); 语法树的最左简单子树树叶全体 句柄!G2(S): S - b S | a - 直接右递归文法。3 两种特性文法1 递归文法 设有文法:G(Z)=(VN,VT,Z,P)【定义】 设 AVN,x, y(VN+VT)*,则; 若 A xAy,:称文法具有递归性; = +特别: 若 A - A ,称文法具有直接左递归性; A - A ,称文法具有直接右递归性。 递归文法是定义无限语言的工具(递归文法定义的语言有无限个句子)!如:G1(S): S - S b | a -

3、 直接左递归文法; 4 两种特性文法2 二义性文法【定义】 若文法中存在这样的句型,它具有两棵不同的语法树,则称该文法是二义性文法。【例2.14】 算术表达式的另一种文法: 句型 i+i*i 有两棵不同的语法树(右图): G(E) 是二义性文法。G(E):E - E+E|E-E|E*E|E/E|(E)|i ;其中:i(变量或常数) E E E + E E * E i E * E E + E i i i i i 二义性文法会引起歧义,应尽量避免之!2.5.1 文法的等价性 2.5 文法的等价变换即:文法的等价性是指他们所定义的语言是一样的。【定义】 设G1、G2是两个文法,若L(G1)=L(G2

4、),则称G1与G2等价,记作G1G2。【例2.15】:G1:S - aS|a; G2:S - Sa|a L(G1)=a, aa, aaa, =an | n1 L(G2)=a, aa, aaa, =an | n1 L(G1)=L(G2) 即 G1G2 【注】一个语言,其描述文法并不唯一。2.5.2 文法变换方法 在实际工作中,人们总是希望定义一种语言的文法尽可能地简单。另外,某些常用的语法分析技术也会对文法提出一定的要求或限制;为了适应上述要求,有时需要对文法进行必要的改写。当然改写后的文法要与原文法等价通常称为文法变换。 这里重点介绍三类变换: 常用的三种文法变换方法: 删除产生式;必选项法;

5、 可选项法; 重复可选项法。 删除无用的产生式(文法的化简); 文法化简是指消除如下无用产生式: 删除 A-A 形式的产生式(自定己); 删除不能从其推导出终结符串的产生式(不终结); 删除在推导中永不使用的产生式(不可用)。 2.5.2 文法变换方法1. 文法的化简 第步算法(删除不终结产生式): 构造能推导出终结符串的非终结符集 VVT: 若有 A- 且 VT* ;则令 AVVT ; 若有 B- 且 (VT+ VVT)* ;则令 BVVT ; 重复步骤,直到VVT不再扩大为止。 删除不在VVT中的所有非终结符(连同其产生式)。2.5.2 文法变换方法1(续1) 第步算法(删除不可用产生式)

6、: 构造可用的非终结符集 VUS: 首先令 ZVUS ; (Z 为文法开始符号) = + 删除不在VUS中的所有非终结符(连同其产生式)。【例2.16】化简下述文法: G(S): S - Be | Ec A - Ae | e | A B - C e | AfC - Cf ; D - f ; G - b 若有 Z A ,则 令 AVUS ; 重复步骤,直到VUS不再扩大为止。 = + 文法化简示例:化简步骤:G(S): S - Be | Ec A - Ae | e | A B - C e | AfC - Cf ; D - f ; G - b 删除 A - A ; 删除不终结产生式: VVT= A

7、,D,G,B,S ; 应删除 C,E(连同其产生式)得:G(S): S - Be ; A - Ae | e ; B - Af ;D - f ; G - b ; 删除不可用产生式: VUS= S,B,A ; 应删除 D,G(连同其产生式) 整理后得:G(S):A - Ae | eB - AfS - Be2.5.2 文法变换方法2 删除 产生式【算法】 首先构造可以推出空串的非终结符集:V 若有 A-; 则 令 AV ; 若有 B-A1 An 且全部 AiV ;则令 BV ; 重复步骤,直到V不再扩大为止。 删除 G(Z)中的 A - 形式的产生式;假定 文法 G(Z) ; L(G) 依次改写G(

8、Z)中的产生式 A - X1 X2 Xn :若有 Xi V 则用 (Xi|) 替换之(一个分裂为两个); 若有 j 个 Xi V ,则一个产生式将分裂为2j个!【例2.17】G(S): S-aAbc|bS A-dABe| ; B-A|b 删除 产生式示例: 求解 V = A,B 删除 产生式 得:S-aAbc|bS ;A-dABe ; B-A|b 改写 含有 V 中元素的产生式: S-a(A|)bc S-aAbc|abc A-d(A|)(B|)e A-dABe|dBe|dAe|de B-(A|) B-A含有V元素的产生式 综合 G(S) :S-aAbc|abc|bSA-dABe|dBe|dAe

9、|deB-A|b令 (|)= 或者 可变换成: A - a(|) 2.5.2 文法变换方法3 必选项法(园括号法) 常用的三种文法变换方法: 基本思想:扩展文法,引进新的描述符号: ()圆括号; 方括号;花括号。必选其中之一!例如:有 A - a|a 也可: A - aA ; A - |【注】此法有称提公因子法,利用此法可以使文法: 具有相同左部的各产生式首符号不同! 也可: S - S ; S - |令 = 或者 2.5.2 文法变换方法3(续1) 可选项法(方括号法) 常用的三种文法变换方法: 例如: S - | 可选也可不选!例如 条件语句文法: S - if (B) S 可变换成: S

10、 - S - if (B) S else S可变换成:S - if (B) S else SS(语句),B(布尔表达式)或:S - if (B) S S ; S- else S|2.5.2 文法变换方法3(续2) 重复可选项法(花括号法) 常用的三种文法变换方法: 例如: A - A| 令 = 或 或 或 可变换为: A - 通过递推方法,可得: A= A= A= A= * 有 A - ;或 A A ; A -A| ; 也可: A A ; A -A| 验证:【注】此方法常用来消除文法的直接左递归! 产生式形式为:xAy -xy 产生式形式为:A-aB , A-a , A- 产生式形式为:A -

11、 2.6 形式语言的分类 chomsky 把形式语言分为四类,分别由四类文法定义;四类文法的区别在于产生式的形式不同: 2 型语言 由 2型文法定义 1 型语言 由 1型文法定义 0 型语言 由 0型文法定义 产生式形式为: - 3 型语言 由 3型文法定义又称 无限制文法!又称 上下文有关文法!又称 上下文无关文法!又称 正规文法!【注】 四类语言为 包含关系,且有 L0 L1 L2 L3;编译处理中,主要应用后两种文法! 练习题:【习题2.8】 解释下列词语: 递归文法, 二义性文法, 等价文法 ;【习题2.9】 指出下述文法的文法类属: G1(S): S-aAbB | Bc | G2(S): S-aS|bA|c| 【习题2.10】 化简下述文法: G(S): S-aSab|bAB ; A-bB|a ; B-aA|b C-abB|baA ; D-Cbc|abc ;【习题2.11】删除下述文法的 产生式: G(S): S-aBS|b ; B-cS| 【习题2.12】消除下述文法的直接左递归: G(S): E-E+T|E-T|T ET | E + T | E - TTF | T * F | T / FFi | ( E )P:基本图形库 =.+ =+A = .+ = +=*, =+ , =.*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论