第二章 形式语言与文法1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例:汉语:人们无法列出全部的句子.但人们可以 给出一些规则,用这些规则来说明(或定义)句 子的组成结构. 如:汉语句子结构: <句子>∷=<主语><谓语> <主语>∷=<代词>︱<名词> <代词>∷=我︱你︱他 <名词>∷=王明︱大学生︱工人︱英语 <谓语>∷=<动词><直接宾语> <动词>∷=是∣学习 <直接宾语>∷=<代词>∣<名词>
+ 0 * A =A U A U A U…U A U…… (A =A U A ) + * 即A ={ε} U A + =A+ U {ε} (A = A-* {ε})
+


0
1
2
n
例 设A ={a,b} 则 A = {a,b} ={ε,a,b,aa,ab,ba,bb,aaa,…,bbb,……} 显然:对于所有的A,有ε∈A * 注意:闭包A 中包含着ε; A 中不包含着ε
二.符号串的运算
1.连接运算
定义:设x和y为符号串,则xy被称为x与y的连接. 设x=abc,y=10a 则xy=abc10a;yx=10aabc
2.符号串的方幂
设有符号串x,则x的n次连接称为x的n次方幂,记为:x n 例:x0 = ε (注:x ≠0 1) x=x 2 x =xx 3 2 2 x =x x=xx =xxx …… n-1 n-1 n x=x x=xx =xx…x
VN∩V T=Ф P是文法的产生式集。 S是文法的开始符号(识别符号)。S∈V N 非终结符号:出现在产生式的左边 ,能派生 出符号和符号串的符号,常用大写字母表示, 即,每一个非终结符号表示一定的符号串。 它至少要在产生式左边出现一次。 终结符号:不能派生出符号串的符号,它是 组成语言不可再分的基本符号,一般用小写 字母表示。
即:E=>* (i*i+ i) 所以,符号串(i*i+i)是文法G[E]的一个句子。
三、语言的形式定义:


定义:由文法G[S]产生的所有句子的集合。 即: + L(G[S]) = {x|S=>x,且x∈V*} T 注:
① 一旦文法给定,语言就确定。 ② 语言L(G)是V* T 的子集。(语言是字母表中终结
01 (利用S::=01 ) S 0S1 (利用S::=0S1 ) 0S1 0011 (利用S::=01 ) 0S1 00S11 (利用S::=0S1 )
S
推导(+推导) 若使用若干次规则式可以从x推出y,则称y为 x的推导,记为:x +y(或称x产生y,或称 y规约到x),或记为:x + y 例:上例: 0S1 00S11 000S111 00001111 ∴ 0S1 + 00001111 (推导长度为3)
(A共有23=8个长度为3的元素)
3
n
n-1
n-1
5.符号串集合的正闭包A和闭包A*
+ ⑴.符号串集合的正闭包A + 设A为符号串集合,则A定义为: + 1 2 3 n A=A UA UA U……UA U…… 例 设A={a,b}则

A = {a,b} ={a,b} U {aa,ab,ba,bb} U…… ={a,b,aa,ab,ba,bb,aaa,…,bbb,……} + 即:A包括了由A上的元素a,b构成的所有符号串. * ⑵.符号串集合A的闭包A.
3)
4.句型和句子
设有文法G[S],若有S
*x,则称符号串x为文
法G[S]的句型。 换句话说:凡是由识别符号推导出来的任意 符号串称为句型。 句子:仅有终结符号组成的句型称为句子。 区别:符号串x∈(VN∪VT)*;x称为句型, 符号串x∈VT*;x称为句子。
例:G[S]:
S::=01|0S1 S 01 S 0S1 00S11 000111 可见:01,0S1,00S11,000111均为文法G[S]的 句型。 其中:01,000111为句子(说明句型包含了句 子,句子是特殊的句型) 但是:符号串000S11,0000111都不是文法G[S] 的句型。
例:G[<标识符>]: <标识符>::=<字母>| <标识符> <字母>| <标识符> <数字> <字母> ::= a|b|c|…|z <数字> ::= 0|1|2|…|9
其中:VN={<标识符>
, <字母>, <数字>} S = {<标识符> } VT ={a,b,c,…,z, 0,1,2,…,9 } 字母表:V=VN∪ VT ={<标识符> , <字母>, <数 字> ,a,b,c,…,z, 0,1,2,…,9 }
利用以上规则(文法)推导句子:我是大学生. <句子> <主语><谓词> <代词><谓语> 我<谓语> 我<动词><直接宾语> 我是<直接宾语> 我是<名词> 我是大学生 利用上列文法:可以产生的句子:我学习英语,他学习, 语,他是工人,„.(很多句子)
利用上列文法不可产生“我大学生是”.它不符合以 上规则. 文法的作用:不仅严格定义句子的结构,也是为了用有 限的规则把语言的全部句子描述出来。它是用有穷 的集合刻画无穷集合的工具. 文法:语言的语法规则的有穷表示.(文法又称元语言) 注: 1.有穷的文法通过推导的方法,可以推导出给定字 母表上的所有句子. 2.描述文法的所有字符构成了语言的字母表. 3.通过文法在推导合法句子过程中会有多个句 型产生. 4.合法的句型和句子是用字符串表示的.
n次连接
1
例:x=abc 则x= ε ,x =abc,x =abcabc 2 0 1 即︱x︱=0,︱x︱=3,︱x︱=6
0 1 2
3.符号串集合的乘积
设AB={xy︱x∈A,y∈B}
即:AB是x∈A,且y∈B的所有符号串xy构成的集合. 例:设A={a,b},B={c,d} 则AB={ac,ad,bc,bd}
Leabharlann Baidu
符号串闭包的子集)
即:属于L(G)的句子一定属于V* T 反之,属于V* T 的符号串x不一定属于L(G)。
1.已知文法求语言 例:已知文法G[S]: S::=0S1|01 求:L(G)=? 方法:推导法 解:分析:S=>0S1 (1)利用文法产生式,从 =>00S11 文法开始符号开始推 =>000S111 导出每个句子; … (2)观察组成句子结构 =>0n-1S1n-1 的规律,用通式写出。 =>0n1n 即:S=>*0n1n ∴G描述的语言:L(G[S]) = {0n1n | n≥1 } 语言句子:由0和1组成,且0在1的前面,0和1个数相等。但: + VT’={0,1,00,01,10,11,000,…,111,0000,…,0011,…,1111,…}, + ‘的真子集。 可见L(G)仅是VT
注:{ε }A=A{ε}=A A=A =A (其中 为空集)
注: ε 不属于 ={ }
, 即空符号串并不属于空集
4.符号串集合的方幂
设A为符号串集合,则定义 1 2 0 A={ε} A=A A=AA 3 2 2 A=AA=AA=AAA
……
A=A A=AA =AA……A (n个) 例:设A={a,b} 0 1 A={ε} A={a,b} 2 2 A={aa,ab,ba,bb} (A共有2 =4个长度为2的元素) 3 2 A=AA={aa,ab,ba,bb}{a,b} ={aaa,aba,baa,bba,aab,abb,bab,bbb}
例:文法G = (V N ,V T ,P,S)
其中
VN={S} VT ={0,1} P ={S→0S1,S →01} 一般约定: 1.只写出文法的产生式 2.第一条产生式的左部是开始符号, 且习惯用G[开始符号]表示。 上例文法可写成: G[S]: S::=0S1 S::=01
该文法G所描述的语言的字母表:V=VN∪ VT={S,0, 1}
显然:字母表上的符号串可形成一个集合(可数无穷)
注: 1.符号串的组成是有序的.如:01≠10,ab≠ba 2.空符号串为不包含任何符号的符号串,记为: ε 3.符号串的长度:符号串所含符号的个数.设符号串为x,则x的 长度为∣x∣。
例:∣a∣=1 ∣abc∣=3 特别:|ε |=0 即空符号串的长度为零.
3.推导
有了文法,怎样由文法推导出与该文法相应的
语言?为此引入了“推导”等概念。
1)直接推导
设x,y是V*中任意符号串,若用一次产生式可以 从x推出y,则称y是x的直接推导,记为:x y。 (或称符号串x直接产生了符号串y,或称y直接 归约到x)
例:设G[S]: S::=0S1|01 则有如下一些直接推导:
一, 字母表与符号串


1,字母表∑
定义:元素的非空有穷集合 例:∑={a, b, c} (a, b, c字母表) ∑={0, 1} (二进制数字字母表) ∑={汉字,数字,标点符号, …} (汉字组成的字母表)


注:元素可是字母、数字或其他符号. 字母表中至少有一个元素.
2. 符号(字符)
2)
广义推导(*推导) 若x +y或者x=y(表示0步推导),则写 为x *y (反之亦然,即:x *y,当且 仅当x +y或者x=y ) 例,上例中: 0S1 +00001111也可记为:0S1 *00001111 注:直接推导、推导、广义推导的区别: 推导长度n不同: 直接推导:n=1 *包涵 + 包涵 推导:n≥ 1 广义推导:n≥ 0 (0步推导:如S=s)
例:已知文法:G[S]: S→0S|1S|ε,求L(G)=? 解:S ε S=>0S=>0 00,000,0000,….. S=>1S=>1 11,111,1111,….. S=>0S=>01S=>01 S=>0S=>01S=>011S=>011 , ……. 以一个0开头,后面是若干个1组成的句子。 S=>0S=>00S=>001 , ……….. 以两个0开头,后面是若干个1组成的句子。 以若干0开头,后面是若干个1组成的句子。 以若干1开头,后面是若干个0组成的句子。 以若干0或1开头,中间任意个(包括没有)0或1,最后0或1 结尾的所有句子。 L(G[S]) = {ε,0,1,01,11,00,10,011,110,101,…} = {x | x∈{0,1}* }
定义:字母表中的元素.
注:符号是字母表中不可再分解的最小单位.
3. 符号串
定义:字母表中的符号组成的有穷序列. 例:∑={a, b, c} 符 号:a, b, c 符号串:a, b, c, ab, ac, aa, ba, ca, abc, … 例;设字母表A={0, 1} A中的符号:0, 1 A中的符串:0,1,01,10,00,11,001,010, …,01000, …
二. 文法的形式定义
1. 规则(产生式,生成式,重写规则)是一个符号与一个符 号串的有序对(A, β) 常写成:A∷= β 或 A → β 其中:A是产生式的左部.它是某个字母表∑的正闭包∑ + + 中的一个符号.即A∈∑. ﹡ β是产生式的右部.它是∑中一个符号串 .(包括ε) 2. 文法的形式定义 定义:文法G是一个四元组,它是规则的非空有穷集合. G=(V N ,V T ,P,S) 其中:VN 是文法产生式中的非终结符号集. VT 是文法产生式中的终结符号集.
编 译 原 理
第二章 形式语言与文法
主要内容: 1 语言的形式描述. 2 语言与文法的形式定义. 3 文法的分类. 4 语法树及句型分析. 主要问题: 已知给定的文法求该文法表示的语言 已知语言求描述该语言的文法 求给定语句的短语、简单短语和句柄
§ 1.符号串
符号串是形式语言中最基本的名词.
例:已知文法G[E]: E::=E+E|E*E|(E)|i (其中:VN ={E} VT={+,*,i,(,)} ) 试证明:符号串(i*i+i)是文法G[E]的一个句子。 证明:只要证明(i*i+i)是文法G[E]的一个存在的推导)(需从开始 符号出发 )

E=>(E) =>(E+E) =>(E*E+E) =>(i*E+E) =>(i*i+E) =>(i*i+i)




§2.文法和语言的形式定义
一.文法与语言的关系
语言:由定义在该语言字母表上,且按一定组成规 则所构成的句子的集合. 语法规则 即:字母表 {字符串(句子)} (语言) ●语言的描述 ⑴.当语言为有穷个句子的集合时,可用枚举的方法 表示语言. ⑵.当语言为无穷个句子的集合时,则用有穷的语法规 则(文法)描述无穷的句子的结构.
相关文档
最新文档