编 译 原 理 指导教师:杨建国 二零一零年三月.

Slides:



Advertisements
Similar presentations
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
Advertisements

2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
全微分 教学目的:全微分的有关概念和意义 教学重点:全微分的计算和应用 教学难点:全微分应用于近似计算.
复习: :对任意的x∈A,都有x∈B。 集合A与集合B间的关系 A(B) A B :存在x0∈A,但x0∈B。 A B A B.
第五章 二次型. 第五章 二次型 知识点1---二次型及其矩阵表示 二次型的基本概念 1. 线性变换与合同矩阵 2.
第二章 文法和语言 2.1 文法的基本概念 符号和符号串 2.2 句型的分析 文法和语言的形式定义 推导与递归 文法的分类 语法树
《高等数学》(理学) 常数项级数的概念 袁安锋
四种命题 2 垂直.
常用逻辑用语复习课 李娟.
第一章 行列式 第五节 Cramer定理 设含有n 个未知量的n个方程构成的线性方程组为 (Ⅰ) 由未知数的系数组成的n阶行列式
第二章 高级语言及其文法 School of Computer Science & Technology
“08高考化学学业水平(必修科目)测试的命题和教学对策研究”
例题 教学目的: 微积分基本公式 教学重点: 牛顿----莱布尼兹公式 教学难点: 变上限积分的性质与应用.
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
2-7、函数的微分 教学要求 教学要点.
余角、补角.
探索三角形相似的条件(2).
初中数学八年级下册 (苏科版) 10.4 探索三角形 相似的条件(2).
编译原理与技术 --文法和分析 2018/9/17 《编译原理与技术》讲义.
第二章 矩阵(matrix) 第8次课.
语法分析在编译程序中的逻辑位置 语 法 分 析 表 处 理 源 程 序 词 法 分 析 语 义 分 析 中 间 代 码 生 成 中 间 代
第十一章 三角形 三角形的高、中线 与角平分线
第四章 语法分析.
第二章 高级语言及其语法描述 常用的高级语言 FORTRAN 数值计算 COBOL 事务处理 PASCAL 结构程序设计
第3章 文法和语言.
LL(1)分析方法 LL(1)是LL(k)的特例,其中的k则表示向前看k个符号. LL(1)方法和递归下降法属于同一级别的自顶向下分析法.
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
第三课时 匀变速直线运动的位移与时 间的关系
第三章 文法和语言 本章目的为语言的语法描述寻求工具,以便: 对源程序给出精确无二义的语法描述。(严谨、简洁、易读)
28.1 锐角三角函数(2) ——余弦、正切.
2.1.2 空间中直线与直线 之间的位置关系.
第3,4次课 一个简单的语法制导翻译器 2.3~2.5.
第一章 函数与极限.
第2章 高级语言及其语法描述 2.1 程序语言的定义 2.2 高级语言的一般特征 2.3 程序语言的语法描述.
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
实数与向量的积.
线段的有关计算.
文法等价变换 文法的等价 对文法G1和G2,若有:L(G1)=L(G2),则称文法G1和G2等价, 记作:G1=G2. 文法等价变换
2.6 直角三角形(二).
⑴当∠MBN绕点B旋转到AE=CF时(如图1),比较AE+CF与EF的大小关系,并证明你的结论。
12.2全等三角形的判定(2) 大连市第三十九中学 赵海英.
复习.
自底向上的语法分析 4.5.
第四章 文法和语言 本章目的 为语言的语法描述寻求工具
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
复习: 若A(x1,y1,z1) , B(x2,y2,z2), 则 AB = OB - OA=(x2-x1 , y2-y1 , z2-z1)
大綱:整數的加法 整數的減法 蘇奕君 台灣數位學習科技股份有限公司
定理21.9(可满足性定理)设A是P(Y)的协调子集,则存在P(Y)的解释域U和项解释,使得赋值函数v(A){1}。
第九节 赋值运算符和赋值表达式.
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
3.1.2 空间向量的数量积运算 1.了解空间向量夹角的概念及表示方法. 2.掌握空间向量数量积的计算方法及应用.
1.2 子集、补集、全集习题课.
辅助线巧添加 八年级数学专项特训: ——倍长中线法.
1.设A和B是集合,证明:A=B当且仅当A∩B=A∪B
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
上杭二中 曾庆华 上杭二中 曾庆华 上杭二中 曾庆华.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
十二年國民基本教育- 104年中投區適性入學宣導 時間:104年11月12日
2019/5/20 第三节 高阶导数 1.
§2 方阵的特征值与特征向量.
主讲教师 欧阳丹彤 吉林大学计算机科学与技术学院
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
1.8 完全平方公式(一) 锦州市实验学校 数学组(3).
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
编译原理实践 6.程序设计语言PL/0.
一元一次方程的解法(-).
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
9.3多项式乘多项式.
Presentation transcript:

编 译 原 理 指导教师:杨建国 二零一零年三月

第三章 文法和语言 第一节 文法的直观概念 第二节 符号和符号串 第三节 文法和语言的形式定义 第四节 文法的类型 第三章 文法和语言 第一节 文法的直观概念 第二节 符号和符号串 第三节 文法和语言的形式定义 第四节 文法的类型 第五节 上下文无关文法及其语法树 第六节 句型分析 第七节 有关文法实用中的一些说明 第八节 典型例题及解答

知识结构

第三章 文法和语言 3.1 文法的直观概念 所谓一个语言的语法是指一组规则,用它可以形成和产生 一个合适的程序  一个合适的程序 目前广泛使用的手段是上下文无关文法,即用上下文无关  文法作为程序设计语言语法的描述工具

程序设计语言的描述: 语法:程序的结构或形式 语义:语言所代表的含义 语用:语言的实际应用

例如,对于赋值语句 x : = a + b * c 的非形式描述是: 语法:赋值语句=变量+:=+表达式 语义:先求右部,然后把结果给左部变量 语用:赋值语句可用来计算和保存表达式的值 形式化方法:用一整套带有严格规定的符号体系来描述问  题的理论和方法 形式语言:一种不考虑含义的符号语言

程序设计语言的语义分成: 静态语义:是一系列限定规则,并确定哪些合乎语法的程  序是合适的 动态语义(运行语义、执行语义):表明程序要做什么,  要计算什么

以自然语言为例,人们无法列出全部句子,但是人们可以  给出一些规则,用这些规则来说明(或者定义)句子的组  成结构:

例如, 有一组规则: < 句子 > :: = < 主语 > < 谓语 > < 主语 > :: = < 冠词 > < 形容词 > < 名词 > < 冠词 > :: = the < 冠词 > :: = a < 形容词 > :: = big < 谓语 > :: = < 动词 > < 直接宾语 >    < 动词 > :: = ate < 直接宾语 > :: = < 冠词 > < 名词 > < 名词 > :: = cat < 名词 > :: = mouse   显然, 由这一组规则可以产生句子:   The big cat / mouse ate a mouse / cat

这样的语言描述称为文法 使用文法作为工具,不仅为了严格地定义句子的结构,   也是为了适当条数的规则把语言的全部句子描述出来, 可以说文法是以有穷的集合刻画无穷的集合的一个工具

3.2 符号和符号串 一.字母表和符号串 1.语言可以看成在一个基本符号集上定义的,按一定规则 构成的一切基本符号串组成的集合  构成的一切基本符号串组成的集合 2.字母表(符号集):是一个非空有穷集合 3.符号(字符):字母表中的元素 4.符号串:符号的有穷序列。注意: 表示空符号串! 5.符号串集合:字母表上若干个符号串组成的集合

重要约定: 小写字母 a, b, c, ••• , r 表示符号 小写字母 s, t, u, ••• , z 表示符号串 大写字母 A, B, C, ••• , Z 表示符号串集合

二.符号串的运算 1.符号串相等:设 x 、y 是字母表  上的两个符号串,若 x  与 y 的诸符号依次相等,则该两符号串相等,记为 x = y  例:x=ab, y=ba, x=y?

2.符号串长度:设 x 是字母表上的符号串,符号串中包含  符号的个数称为符号串 x 的长度,用 x 表示 例: (1). | abc | = ? (2). |  | = ? (3). | a x | = | x a | = | x | + 1 ( a ∈∑ )

3. 符号串的连结:设 x 与 y 是字母表  上的两个符号串,  把 y 的所有符号相继写在 x 的符号之后所得到的符号串  称为x 与 y 的连结,用 x y 表示  注意: | x y | = | x | + | y |  x = x  = x x y ≠ y x ( 一般说来 )

4 .符号串的逆:设 x 是字母表  上的符号串,其逆为符号串 x  的倒置,记为 。 . 若 x = abcd , 则 = ? (2). = 

5.符号串的前缀、后缀和子串:设 x、y、z 是字母表  上的  符号串,则称 x 为符号串 x y 的前缀,y 是符号 串 x y 的  后缀, x、y 、 z 、xy 、yz 是符号串 x y z 的子串  例: abcd前缀、后缀、子串是什么?

6.符号串集合的乘积:设A、B为两个符号串集合,其乘积为 AB={xy|xA,y B} 例: (1). 若 A = { ab, cd }, B = { ef, gh } ,AB=? (2). ∵  x = x  = x ∴ {  } A = A {  } = A

7.空集:不含任何元素的集合,记为 Ø 注意: (1). Ø A = A Ø = Ø (2).   Ø

8.符号串的幂:设 x 是字母表  上的符号串,则 x 的幂运算  为x 0 =  x 1=x x 2=xx •••••• x n=x n-1x (xx n-1)  例: 若 x = ab 则: x 0 = ?, x 1 = ?, x 2 = ?, ••••••,    x n = ?

9.符号串集合的幂:设 A 是符号串集合,则符号串 A 的幂运  算为: A0={} A1=A A2=AA •••••• An=A n-1A (AA n-1)  例: 若 A = { ab, cd } ,则: A 0 = ?, A 1 = ?, A 2 = ?, ••••••

则: A*= {, a, b, aa, ab, ba, bb, aaa, ••• } 注意: A*=A0∪A+ A+=AA*=A*A 若 A = { a, b } 则: A*= {, a, b, aa, ab, ba, bb, aaa, ••• } A+= {a, b, aa, ab, ba, bb, aaa, ••• }

3.3 文法和语言的形式定义 规则(重写规则、产生式、生成式): 一个规则是一个二元组,通常写作α::= β 或 α β  一个规则是一个二元组,通常写作α::= β 或 α β α称为规则的左部,β称为规则的右部, (::=)读作  “定义为”,这是一条关于α的规则(产生式)

定义3.1:文法G定义为四元组(VN,VT,P,S) P:规则(α  β)集合,α∈(VN∪VT)*且至少包含  一个非终结符,β ∈(VN∪VT)* VN、VT、P是非空有穷集 S:开始符(识别符),它是一个非终结符,至少要在一  条规则中作为左部出现 VN∩VT= Ø V=VN∪VT,称为文法G的字母表(字汇表)

例3.1 文法G=(VN,VT,P,S),其中  VN = { S },  VT ={ 0, 1 },  P={ S  0S1, S  01 } 思考:S=?

例3.2 文法G=(VN,VT,P,S),其中 VN ={标识符,字母,数字} ,S=<标识符> VT ={a,b,c,…x,y,z,0,1,…,9} P={<标识符>  <字母>   <标识符>  <标识符><字母> <标识符>  <标识符><数字>   <字母>  a     ……        <字母>  z    <数字>  0      ……     <数字>  9 } 思考:S=?

很多时候,不用将文法G的四元组显式地表示出来,而  只将产生式写出

一般约定: 第一条产生式的左部是识别符 用尖括号括起来的是非终结符(或者用大写字母表示) 不用尖括号括起来的是终结符(或者用小写字母表示) 将G也写成G[S],其中S是识别符

推导:  定义V*中的符号之间的关系: 直接推导: 长度为n(n≥1)的推导: 长度为n(n ≥0)的推导: + *

定义3.2:文法G=(VN,VT,P,S),α  β是一条  规则,γ和δ是V*中的任意符号,若有符号串v,w满  足:v=γαδ,w= γβδ,则称v直接推导到w,   v   w,或w直接归约到v 例:G: S  0S1, S  01  S  0S1  00S11  000S111  00001111

定义3.3:如果存在直接推导的序列:  v=w0  w1  w2…  wn=w (n>0)  则称v推导出w(推导长度为n),或称w归约到V,  记作 +

+ * 定义3.4:若有v  w,或v=w,则记作:

* 定义3.5:若有S  x,则称x是文法G[S]的句型,若x仅  由终结符组成,则称x为G[S]的句子

定义3.6:文法G所产生的语言定义为集合  L(G)={x|S  x,其中S为文法识别符号,且x∈VT*} 文法描述的语言是该文法一切句子的集合 例:G: S  0S1, S  01    L(G)={0n1n|n≥1} *

例3.3 文法文法G[S]: (1)S  aSBE (2)S  aBE (3)EB  BE (4)aB  ab (5)bB  bb (6)bE  be (7)eE  ee L(G)={ anbnen | n≥1 } 思考:a4b4e4怎么推导?

定义3.7:若L(G1)=L(G2),则称文法G1和G2是等价的 例如文法G[A]: A  0R A  01 R  A1  和文法G[S]: S  0S1 S  01 等价 L(G)={0n1n|n≥1}

3.4 文法的类型 乔姆斯基(Chomsky)于1956年建立形式语言的描述 他把文法分成:0型、1型、2型、3型 四个文法类的定义是逐渐增加限制的 0型 1型 2型 3型

设G=(VN,VT,P,S),如果它的每个产生式  含一个非终结符, β∈(VN∪VT)*,则G是一个0型文法  (短语文法、无限制文法)

思考:这样定义可以吗? 设G=(VN,VT,P,S),如果它的每个产生式  α  β是这样一种结构:α∈(VN∪VT)+, β∈(VN∪VT)*,则G是一个0型文法

重要的理论结果: 0型文法的能力相当于图灵机(Turing) 或者说,任何0型语言都是递归可枚举的 反之,递归可枚举集必定是一个0型语言

设G=(VN,VT,P,S),如果它的每个产生式 例3.1、3.2、3.3

例:文法G[S]:        S  CD Ab  bA C  aCA Ba  aB C  bCB Bb  bB AD  aD C  ε BD  bD D  ε Aa  bD L(G)={w|w∈{a,b}*}

有些定义中,将上下文有关文法的产生式的形式描述为  α1Aα2  α1βα2,其中α1、α2和β都在V*中,  β≠ε,A在VN中

设G=(VN,VT,P,S),如果它的每个产生式

有时将2型文法的产生式表示为A  β的形式,其中  A∈VN,也就是用β取代非终结符A时,与A所在的上下  文无关,因此取名为上下文无关 例3.1、3.2

例3.4:文法G[S]:     S  aB|bA  A  a|aS|bAA  B  b|bS|aBB

设G=(VN,VT,P,S),如果它的每个产生式  A  αB或A   α,其中A和B都是非终结符,  α∈VT*,则文法G是3型文法(正规文法) 例3.5:文法G[S]:     S  0A|1B|0  A  0A|1B|0S  B  1B|1|0 你会忘记我吗?

例:判断下面文法G[S]是哪一类方法,并说明你的理由?     S  B|aB  B  D|a  D  b|ε

4个文法类的定义是逐渐增加限制的,因此,每一种正规  文法都是上下文无关的,每一种上下文无关文法都是上  下文有关的,而每一种上下文有关文法都是0型文法 称0型文法产生的语言为0型语言,上下文有关文法、上  下文无关文法和正规文法产生的语言分别称为上下文有  关语言、上下文无关语言和正规语言

3.5 上下文无关文法及其语法树 上下文无关文法有足够的能力描述现今程序设计语言的 语法结构,比如描述算术表达式、描述各种语句等  语法结构,比如描述算术表达式、描述各种语句等 例3.6:文法G=({E},{+,*,i,(,)},P,E)其中P为:     E  i  E  E+E  E  E*E E (E) <条件语句>  if<条件>then<语句>|         if<条件>then<语句>else <语句>

给定文法G=(VN,VT,P,S),对于G的任何句型都  能构造与之关联的语法树(推导树、语法分析树、分  析树)。这棵树满足下列4个条件: (1)每个结点都有一个V中的符号作标记 (2)根的标记是开始符号S (3)若一结点n至少有一个它自己除外的子孙,并且有标记   A,则A∈VN (4)如果结点n的直接子孙,从左到右的次序是结点 n1,n2,…,nk,其标记分别为A1,A2,…,Ak,那么 A  A1A2…Ak一定是P中的一个产生式

例3.7:文法G=({S,A},{a,b},P,E)其中P为:     (1)S  aAS  (2)A  SbA  (3)A  SS (4)S a (5)A ba 图3.1的推导树是文法G的  句型aabbaa的推导过程 把aabbaa叫做推导树的结果,  把推导树叫做句型  aabbaa的语法树 图3.1 推导树

文法G的句型aabbaa的推导过程: (1)SaASaAaaSbAaaSbbaaaabbaa (2)SaASaSbASaabASaabbaSaabbaa (3)SaASaSbASaSbAaaabAaaabbaa 如果在推导的任何一步α   β,其中α、β是句型,都  是对α中的最左(最右)非终结符进行替换,则称这种推  导为最左(最右)推导。在形式语言中,最右推导被称为  规范推导,由规范推导所得的句型称为规范句型 你会忘记我吗?

一个句型是否只对应唯一的一棵语法树?一个句型是否只  有唯一的一个最左(最右)推导? 不是 例:G[E]: E    i E   E+E E   E*E E   (E) 句型 i*i+i 的两个: 推导1:E  E+E  E*E+E  i*E+E  i*i+E  i*i+i 推导2:E  E*E  i*E  i*E+E  i*i+E i*i+i

图3.2 推导1的语法树 图3.3 推导2的语法树

若一个文法存在某个句子对应两棵不同的语法树,则称这  个文法是二义的。或者,若一个文法存在某个句子有两个  不同的最左(右)推导,则称这个文法是二义的

注意,文法的二义性和语言的二义性是两个不同的概念。  因为可能有两个不同的文法G和G`,其中G是二义的,但  是却有L(G)=L(G`) 产生某上下文无关语言的每一个文法都是二义的,则称此  语言是先天二义的 你是怎么理解我的?

判定任给的一个上下文无关文法是否二义,或它是否产生  一个先天二义的上下文无关语言,这两个问题是递归不可  解的。但可以为无二义性寻找一组充分条件  

解决二义性的基本方法: 设置一个规则,该规则可在每个二义性情况下指出哪一个  分析树是正确的。这样的好处:不用修改文法就可以消除  二义性。缺点:语言的语法结构不能由文法单独提供 将文法改变成一个强制正确分析树的构造的格式

例: G[E]: E    E T E | (E) | 6 T +|-|*          6-6*6=? 6-6-6=?    规定优先性、结合规则就可以构造出一个无二义文法

3.6 句型的分析 句型分析是一个识别输入符号是否为语法上正确的程序的 过程 在语言的编译实现中,把完成句型分析的程序称为分析程  过程 在语言的编译实现中,把完成句型分析的程序称为分析程  序(识别程序),分析算法又称为识别算法 介绍的分析算法都称之为从左到右的分析算法 分析算法分为: 自上而下分析法:从文法的开始符号出发,反复使用各种  产生式,寻找匹配于输入串的推导 自下而上的方法:从输入符号串开始,逐步进行归约,直  到归约到文法的开始符号

一.自上而下分析方法 例3.9 考虑文法G[S] (1)S  cAd (2)A  ab (3)A  a 识别输入串 w=cabd 是否该文法的句子 所构造的推导过程为:  S  cAd  cabd 图3.4 自上而下的分析步骤

二.自下而上分析方法 例3.9 考虑文法G[S] (1)S  cAd (2)A  ab (3)A  a 识别输入串 w=cabd 是否该文法的句子 所构造的推导过程为:  S  cAd  cabd 图3.5 自下而上的分析

三.句型分析的有关问题 在自上而下的分析中,对于例3.9的文法,在扩展A时,有  两个选择,如果选择另一个,推导序列为  S  cAd  cad,语法树如图3.6所示 这时,就与w=cabd不符,宣告失败 应该用哪条规则去替换呢?一种解决办法从各种可能的选  择中随机挑选一种,并希望它是正确的,如果失败,退回  去,再试另一种,这种方式称为回溯。显然这种方式代价  极高,效率很低 图3.6 cad的语法树

在自下而上的分析中,对于例3.9的文法,在归约的时候,  也存在选择哪一条规则进行归约的问题,因此需要精确定  义“可归约串”。事实上,存在种种不同的方法刻画“可归  约串”。对这个概念的不同定义形成了不同的自下而上分  析文法。在一种“规范归约”的分析中,这种“可归约串”称  作“句柄”

定义3.8 令G是一文法,S是文法的开始符号,αβδ是文 如果有:S  αAδ且A  β则称β是句型αβδ相对  于非终结符A的短语 如果有A   β则称β是句型αAδ相对于规则A   β  的直接短语(简单短语) 一个句型的最左直接短语称为该句型的句柄 * + 你会忘记我吗?

E T F * i3 + i1 i2 例G[E]: E   T|E+T      T   F|T*F F   (E)|i  句型i*i+i 短语:i1、i2 、i3 、i1*i2 、i1*i2+i3 直接短语:i1 、i2 、i3 句柄:i1

例题:句型aabbab中的短语、简单短语、句柄是谁?

3.7 有关文法实用中的一些说明 一.有关文法的实用限制 有害规则:形如U U的产生式 多余规则:文法中那些连一个句子的推导都用不到的规则 某些非终结符不在任何规则的右部出现(不可到达的) 不能够从这些非终结符推出终结符号串(不可终止的)

例3.10 文法G[S]: (1) S  Be (2) B  Ce (3) B  Af (4)A  Ae (5)A  e (6)C  Cf (7) D  f 该文法的有害规则和多余规则是哪些?

对文法G=(VN,VT,S,P)来说,为了保证其任一非终结符A在  句子推导中出现,必须满足如下两个条件: ①A必须在某句型中出现。即S  αAβ,其中α,β属于V* ②必须能够从A推出终结符号串t。即A  t,其中t∈VT* * +

二.上下文无关文法中的ε规则 ε规则:形如A   ε的产生式,其中A∈VN 某些著作和讲义中限制这种规则的出现。因为ε规则会使  有关文法的一些讨论和证明变得复杂 两种定义的唯一差别是ε句子在不在语言中 如果语言L有一个有穷的描述,则L∪{ε}也同样有一个有  穷描述。并且可以证明,若L是上下文有关语言、上下文  无关语言或正规语言,则L∪{ε}和L-{ε}分别是上下文有  关语言、上下文无关语言和正规语言

定理3.1 若L是由文法G=(VN,VT,P,S)产生的语言,P中的  每一个产生式的形式均为A  α,其中A∈VN,α∈V*,  则L能由这样的一种文法产生,即每一个产生式或者为  A  β形式,其中A∈VN, β ∈V+,或者 S  ε形式,  且 S不出现在任何产生式右边

定理3.2 如果G是上下文有关文法,则存在另一个上下文  有关文法G1,L(G)=L(G1),且G1的开始符号不出现在G1  的任何产生式的右边 又如果G是一个上下文无关文法,也能找到这样一个上下 文无关文法G1 如果G是是一个正规文法,则也能找到这样一个正规文法 G1

3.8 典型例题及解答 1.证明文法G=({E,O},{(,),+,*,v,d},P,E)是二义的 E EOE|(E)|v|d O +|* 2.给出生成下述语言的正规文法:  L={ambn|n,m>=1}

(2)S aS|aA (1)S AB A bA|b A aA|a B bB|b (3)S aA (4)S aA A aA|B A aA|bB 我家没双胞胎 我是对的 (2)S    aS|aA  A   bA|b (1)S    AB  A   aA|a B bB|b 我家没有a 我家少ab (3)S    aA  A   aA|B B bB|b|ε (4)S    aA  A   aA|bB B bB|b 我是对的 我是对的 (5)S    aA  A   aA|B B bB|b (6)S    aA  A   aA|bB|b B bB|ε

(7)S aA A aA|bB B bB|ε (8)S aS|aA A bA|bB B ε (9)S aA A aA|aB|b B bB|b 我是对的 (7)S    aA  A   aA|bB B bB|ε (8)S    aS|aA  A   bA|bB B ε 我是对的 我家少ab2 我是对的 (9)S    aA  A   aA|aB|b B bB|b (10)S   aA  A   aA|bB|b B bB|b 我是对的 (12)S   aA|aS  A   bB B bB|ε 我是对的 (11)S   a(A|S)  A   b(A|ε)

【本章小结】 ① 本章出现的概念较多,应重点理解文法,推导,句型句子及语  言的定义等概念.语法分析有关内容在后面章节会详细讨论 ② 文法作为程序语言的语法的描述工具,它用规则只能陈述  的是:语言的所有句子以什麽样的符号串能出现.请记住文  法和语言的形式定义中的 “形式”的含义-只涉及语言的语  法不涉及语言的语义 ③ 本章内容是形式语言理论的一部分.形式语言理论是对符  号串集合的表示法、结构及其特性的研究。是程序设计语  言语法分析研究的基础

第3章 作业题 P47: 1. 6.(5)进行最左推导 (6)进行最右推导 8. 9. 11. 13. 14. 16.