编译原理第2章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南农业大学信息科学技术学院 王 奕
E →E + E E →E*E E →i E → (E)
表示一个文法时, 表示一个文法时,通常只给出开始符号和 产生式,如上例,可表示为: 产生式,如上例,可表示为: G(E): G(E): E → i | E+E | E*E | (E)
湖南农业大学信息科学技术学院 王 奕
湖南农业大学信息科学技术学院 王 奕
例如,一组产生式 A→0 A→1 A→A 0 A→A 1 描述的语言序列只可能是由0和1组成的符号串,即 ∑+ ={0,1,00,01,10,000,100,…}.
湖南农业大学信息科学技术学院 王 奕
2. 文法
定义2.1:一个前后文无关文法G 定义2.1:一个前后文无关文法G是一个四元式 2.1
湖南农业大学信息科学技术学院 王 奕
文法的形式定义
1. 规则 规则也称产生式,它是一个符号与一个符号串的 有序对(A,β),通常写做 A→β(或A::=β) 其中,A是规则左部,它是一个符号;β是规则 右部,它是一个符号串;"→"和"::="表示"定义 为"或"生成",意思是左部符号用右部的符号串定 义或左部符号生成右部符号串.
湖南农业大学信息科学技术学院 王 奕
对形式语言的描述有两种方法 : ⑴ 当语言为有穷集合时,用枚举方法来表示语言: 例如:设有字母表A={a,b,c},则 L1={a,b,c} L2={a,aa,ab,ac} L3={c,cc} 均表示字母表A上的一个形式语言. ⑵ 对无穷集合的语言,需要设计文法来描述:
一个上下文无关文法如何定义一个语言集合呢?其中心思 一个上下文无关文法如何定义一个语言集合呢? 想是:从文法的开始符号出发,反复连续使用产生式, 想是:从文法的开始符号出发,反复连续使用产生式,对 非终结符实行替换和展开. 非终结符实行替换和展开.
例:对文法(1) 要得到句子(i+i) 对文法(1) E+E) (i+E) E (E) (E+E) (i+E) (i+i)
湖南农业大学信息科学技术学院 王 奕
例如, ∑′={0,1}是一个字母表,由0和1两 个元素组成. 不同的语言有不同的字母表,如英文的字母表 是26个字母,数字和标点符号的集合,C语言的字母 表是由字母,数字和若干专用符号组成. 2. 符号(字符) 符号(字符) 字母表中的元素称为符号,或称为字符. 字母表中的元素称为符号,或称为字符. 例如,前述例子中, , , 是字母中 中的符号; 是字母中∑中的符号 例如,前述例子中,a,b,c是字母中 中的符号; 0和1是字母表 中的符号. 和 是字母表 中的符号. 是字母表∑′中的符号
湖南农业大学信息科学技术学院 王 奕
2.1.1 字母表和符号串
2.2 文法和语言的定义 2.2.1 基本概念和术语
1. 字母表 字母表是由若干元素(符号,字母)组成的有限 非空集合. 例如,∑={a ,b ,c} 根据字母表的定义,∑是字母表,它由a,b,c 三 个元素组成. 字母表中至少包含一个元素.字母表中的元素, 可以是字母,数字或其他符号.
湖南农业大学信息科学技术学院 王 奕
特别指出的是,ε是符号串,不是集合, 而{ε}表示由空符号串ε所组成的集合,但 这样的集合不是集合φ={}.
例如,设x = abc,则 x0=ε x1= abc x2 = xx =abcabc ………
湖南农业大学信息科学技术学院 王 奕
(4) 集合的幂运算 设A是符号串的集合,则集合A的幂运算定义为: A0 = {ε} A1 = A A2 = AA ……… An = AAAAA……A = AAn-1 ( n > 0 )
文法一 E→i E → E+E E → E*E E → (E)
湖南农业大学信息科学技术学院 王 奕
定义2.2: 定义2.2:称αAβ直接推出αγβ,即 2.2 直接推出αγβ, αγβ αAβαγβ 仅当A 是一个产生式, 仅当A → γ是一个产生式, 且α, β∈ (VT ∪ VN)* . 如果α1 α2 … αn,则我们称这个序列 如果α 是从α 的一个推导 若存在一个从α 推导. 是从α1到αn的一个推导.若存在一个从α1到αn的 推导,则称α 可以推导 推导出 推导,则称α1可以推导出αn .
湖南农业大学信息科学技术学院 王 奕
5. 符号串的运算 (1) 符号串的连结
设x和y是符号串,则串xy称为它们的连结.即xy是将 y符号串写在x符号串之后得到的符号串. 例如,设x=abc,y = 10a, 则xy = abc10a,yx = 10aabc. 注意:对任意一个符号串 ,我们有εx=xε=x. 注意:对任意一个符号串x,我们有 .
*
α=β
或
α β
+
湖南农业大学信息科学技术学院 王 奕
定义2.4:假定G是一个文法, 是它的开始符号. 定义2.4:假定G是一个文法,S是它的开始符号.如果 2.4 句型 S ,则称α是一个句型. α 则称α是一个句型.
*
句子. 仅含终结符号的句型是一个句子 仅含终结符号的句型是一个句子. 文法G所产生的句子的全体是一个语言,将它记为 L(G). L(G). 文法G所产生的句子的全体是一个语言,
湖南农业大学信息科学技术学院 王 奕
例如,设A= { a , b} A0 = {ε} A1 = { a ,b } A2 = AA = { aa ,ab ,ba ,bb } A3 = AAA = A2A = { aaa,aab,aba, abb,baa,bab,bba,bbb} …………
湖南农业大学信息科学技术学院 王 奕
湖南农业大学信息科学技术学院 王 奕
3. 符号串(字)
本课约定 用A,B,C,∑ 等表示字母表或符号 , , , 串集; 等表示符号; 串集;用a,b,c,S,T,U 等表示符号;用 s,t,u,x,y,z,α,β,δ等表示符号串. α β δ等表示符号串. 4. 符号串的前(后)缀及子串 符号串的前( 是符号串, 则称β 的 设α,β,δ,x是符号串,若x= αβδ,则称β是x的子 βδ 是符号串 则称 特别地, 串;特别地,当α= ε (δ= ε)时,称 β是x的 的 前(后)缀.
湖南农业大学信息科学技术学院 王 奕
定义2 定义2.3:
通常, 表示: 出发, 通常,用α1 αn 表示:从α1出发,经过 一步或若干步,可以推出α 一步或若干步,可以推出αn.
用 α1 αn表示:从α1出发,经过0步或若干步, 表示: 出发,经过0步或若干步, 可以推出 αn.
*
+
所以 : β 即 α
湖南农业大学信息科学技术学院 王 奕
3. 符号串(字) 用字母表中符号所组成的任何有限序列. 用字母表中符号所组成的任何有限序列. 例如,设有字母表∑={a,b,c},则有符号串a, b,ab,ba,cba,abc…. 符号串总是建立在某个特定字母表上的且只能 由字母表上的有穷多个符号组成.符号串中符号的 顺序很重要,如ab和ba是字母表∑上的两个不同的 符号串. 符号串的长度 = 符号串中所含符号的个数 不包含任何符号的符号串,称为空符号串,用 ε表示,即空符号串由0个符号组成,其长度{ε}=0.
湖南农业大学信息科学技术学院 王 奕
§2.2 形式语言
文法和语言的定义
序列的集合称为形式语言.也就是说,每个形式 语言都是字母表上按某种规则构成的所有符号串的集 合,反之,任何一个字母表上符号串的集合均可定义 为一个形式语言. 形式语言不考虑语义.例如,C语言是其基本符 号字母表上的符号串的集合,而每个C语言程序是基本 符号的符号串.
湖南农业大学信息科学技术学院 王 奕
(2) 符号串的方幂
符号串x与其自身的 次方幂, 符号串 与其自身的 n-1次连接称为 x 的 n 次方幂,记为xn 次连接称为 例:设x是符号串,则x的方幂运算定义为 x0=ε X1= x x2 = xx ………… xn = xxxx……xx=xxn-1 ( n > 0)
L(G) = { | S , α ∈V *} α α T
+
湖南农业大学信息科学技术学院 王 奕
(i*i+i)是文法(1)的一个句子 是文法(1)的一个句子. 例: (i*i+i)是文法(1)的一个句子. E+E) E*E+E) E (E) (E+E) (E*E+E) (i*E+E E+E) (i*i+E i+E) (i*i+i i+i) (i*E+E) (i*i+E) (i*i+i)
第二章 前后文无关文法 和语言
湖南农业大学信息科学技术学院 王 奕 teacher_wangyi@
2.1 文法及语言的表示
1960年,P.Naur & J.Backus首先用 年 首先用BNF(Backus首先用 ( Naur-Formal(范式))对ALGOL语言进行了描述. ))对 语言进行了描述. (范式)) 语言进行了描述 通常,可用如下方式表示或定义一种语言: 通常,可用如下方式表示或定义一种语言: 若语言的句子有限时,可用枚举法 例如, 枚举法. (1)若语言的句子有限时,可用枚举法.例如,只含两 个句子的语言: 个句子的语言: {"I am a teacher", "You are students"}; 有限条规则, (2)制定有限条规则,用于产生所要描述的语言的全部 制定有限条规则 句子(可无限多),这些规则构成了该语言的文法 ),这些规则构成了该语言的文法. 句子(可无限多),这些规则构成了该语言的文法. 建立一种装置 算法或过程) 装置( (3)建立一种装置(算法或过程),它以某字母表上的 符号串为输入, 符号串为输入,判别该符号串是否为所描述语言的E → E*E E → (E)
考虑文法的句型有哪些?
湖南农业大学信息科学技术学院 王 奕
例:无符号整数的文法: 无符号整数的文法: G[<无符号整数 ( Vt , Vn , S , P ) 无符号整数>]=( 无符号整数 Vt = {0,1,2,3,……9} Vn={<无符号整数 数字串 <数字 = 无符号整数 数字串>, 数字 无符号整数>,<数字串 数字>} P = {<无符号整数 → <数字串 ; 无符号整数> 数字串> 无符号整数 数字串 <数字串 → <数字串 <数字 ; 数字串> 数字串> 数字> 数字串 数字串 数字 <数字串 → <数字 ; 数字串> 数字> 数字串 数字 <数字 →0; 数字> 数字 →0; <数字 →1; 数字> 数字 →1; ………… <数字 →9; } 数字> 数字 →9; S = <无符号整数 ; 无符号整数>; 无符号整数
湖南农业大学信息科学技术学院 王 奕
(3)符号串集合的和与乘积 ) 为两个符号串之集, 设A,B为两个符号串之集,定义 , 为两个符号串之集 A+B(或A∪ B) ={w | w∈ A,或 w ∈ B} ∪ ∈ , 和 AB(或 AB)= { xy |x ∈ A, y ∈ B} ( ) 积 例如,设A={a,b}B={c,d},则AB = { ac , ad,bc,bd}. 集合的乘积是满足于x∈A,y∈B的所有符号串xy 所构成的集合. 由于对任意的符号串x,总有 由于对任意的符号串 ,总有εx =xε = x,所以, ,所以, 对任意集合A, 对任意集合 ,有: {ε}A = A {ε}=A }
(5) 集合A的正闭包A+与A的闭包A*定义为 A+=A1∪A2∪…An… A*=A0∪A1∪A2∪…∪An…={ε}∪A+ 例如,设A={a,b},则 A+={a,b,aa,ab,ba,bb,aaa,aab,…} A*={ε,a,b,aa,ab,ba,bb,aaa,aab,…} 可见,集合A的正闭包表示A上元素a,b构成的所有 符号串的集合,集合A的闭包比集合A的正闭包多含 一个空符号串ε.
湖南农业大学信息科学技术学院 王 奕
几点规定: 几点规定:
也可以用"::="表示 表示, " → "也可以用"::="表示, 这种表示称为巴科 斯范式(BNF) 斯范式(BNF) P → α1 P → α2 … P → αn 可缩写为 P → α1|α2|…|αn
其中, 读成" 称为P的一个候选式. 其中,"|"读成"或",称为P的一个候选式. 读成
P), G=(VT,VN,S,P),其中
VT:终结符集合(非空) 终结符集合(非空) 非终结符集合(非空) VN:非终结符集合(非空),且VT ∩ VN= 文法的开始符号, S: 文法的开始符号,S∈VN 产生式集合(有限) P: 产生式集合(有限),每个产生式形式为 →α, P→α, P∈VN, α ∈ (VT ∪ VN)* 开始符S至少必须在某个产生式的左部出现一次. 开始符S至少必须在某个产生式的左部出现一次.