3hh第3章 文法和语言

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注:用尖括号括起来的是非终结 符,没括起来的是终结符。
通常不用将文法的四元式显式表示出来,而 只写出其产生式。这时约定:第1 条产生式 的左部为开始符。
上述例3.1可以写成: G: S→0S1 S→01
或 G[S]: S→0S1 S→01 或 G[S]: S→0S1 | 01
例 G: S→aAb A→ab A→aAb A→ε
四类文法之间的关系:
从0型文法到3型文法逐步增加了限制。 1~3型文法都属于0型文法; 2~3型文法不一定属于1型文法(如A); 3型文法都属于2型文法。 四类文法之间的区别: (1) 1型文法不允许有形如A→的产生式, 2,3型文法允许; (2) 0,1型文法的产生式左部可以含终结符或两个 以上的非终结符, 2,3型文法产生式左部只能是单个非终结符。
例3 写出下列语言对应的文法 {CFG文法} L(G1) = { 1n 0m1m 0n | m,n1} L(G2) = { bn amam bn | m,n0} 解: (1) S → 1S0 | 1A0 A → 0A1 | 01 (2) S → bSb | A A → aAa |
{ anbncn |n≥1}{ anbncm |m,n≥1} { ambnck |m,n,k≥1}
G=(VN,VT,P,S),其中 VN ={标识符, 字母, 数字} VT ={a,b,c,…,z, 0,1,…,9} P={<标识符>→<字母>, <标识符>→<标识符><字母>, <标识符>→<标识符><数字>, <字母>→a, …, <字母>→z <数字>→0, …, <数字>→9 } S=<标识符>
注意:不能主观认定文法的限制越大则 语言越小,即下述结论不成立: 3型语言 2型语言 1型语言 0型语言
例 G: S→0S1, S→01 S 0S1 00S11 000S111 00001111 文法的句型: S,0S1,00S11,000S111,00001111, … 文法的句子: 00001111, …
例 G[E]: E→E+T | T T→T*F | F F→(E) | a
E E+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a 由该推导知, 句型: E, E+T, T+T, … 由该推导知, 句子: a+a*a, …
最高位
中间位
最低位
解: 奇数集文法G[N]为 G=({N,A,M,B,D}, {0,1,…,9}, P, N) P: N→A | BMA M→D | MD | ε A→1 | 3 | 5 | 7 | 9 B→1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 D→0 | B M … DD B D
{终结符指语言的不可再分的基本符号, 是语法的最小元素。如保 留字、变量名、常量、、}
规则也称产生式或生成式,形如→或 ::=, 其中V+且至少包含一个非终结符, V*。 称为规则的左部, 称为规则的右部。 产生式通常有多个, 左部相同的产生式可合并。 例如,产生式P→1, P→2, …, P→n 可写为 P→ 1 | 2 |…| n 其中i(i=1,2,…,n)称为P的候选式。
语言的有穷表示有两个途经:
语言的生成方式:用文法描述,即语言中每个句 子用严格定义的规则来构造。
语言的识别方式:用自动机描述,即当输入串属 于语言时,经有限次计算会停止并回答 “ 是 ”;若 不属于,则停止并回答“否”或永远继续下去。
1. 文法的定义
定义3.1 文法G表示为四元组(VN,VT,P,S),其中 VN: 非终结符的非空有穷集(语法实体或变量); VT: 终结符的非空有穷集;
或 G[S]: S→aAb A→ab A→aAb A→ε
G[S]: A→ab A→aAb A→ε S→aAb
或 G[S]: S→aAb A→ab |aAb |ε
例3.3 写一文法, 使其语言是奇数集, 但不允许 出现以0打头的奇数。 分析: 将奇数划分为三个部分: 最高位允许出现1~9, 用非终结符B表示; 中间部分可出现任意多位数字0~9, 每一位用非终结符D表示; 最低位只出现1, 3, 5, 7, 9, 用A表示。 由于中间部分可出现任意位, 故需另外引入一 个非终结符M。 M … DD B D A
该文法的句子是由符号a, +, * , (, )构成的算 术表达式。
定义3.6 由文法G生成的语言记为L(G),它是 文法G生成的所有句子的集合: * x, S为开始符且x∈V *} L(G) ={x | S T 例 G: S→0S1 | 01 L(G) ={ 0n1n | n≥1}
定义3.7 若L(G1)=L(G2),则称文法G1和G2等价。
例3.1 文法G = (VN, VT, P, S),其中 VN={S} VT={0,1} P={S→0S1, S→01} S为开始符 该文法产生的语言为{ 0n1n | n1}
例3.2 产生标识符的文法。
分析: 令 L: 字母, 即 L→a | b |…| z D: 数字, 即 D→0 | 1 |…| 9 T: 字母或数字, 即 T→L | D S: 字母数字串, 则ST是字母数字串, 即 S→ ST | T 标识符I为字母后跟字母数字串或单个字母, 即 I→ LS | L
第3章 文法和语言
3.1 文法的直观概念 3.2 符号和符号串 3.3 文法和语言的形式定义 3.4 文法的类型 3.5 上下文无关文法及其语法树 3.6 句型的分析(上下文无关文法) 3.7 有关文法实用中的一些说明
3.3 文法和语言的形式定义
如何描述一种语言?
若语言是有穷的,则用枚举法将句子逐一列出; 若语言是无穷的,则找出语言的有穷表示。
A 最低位
最高位
中间位
解2: 奇数集文法G[N]也可以写为: G=({N,A,M,B,D},{0,1,…,9}, P, N) P: N→A | MA M→B | MD A→1 | 3 | 5 | 7 | 9 B→1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 D→0 | B M … DD B D A
3型文法对应的语言为3型语言或正规语言(对 应正规式), 其识别系统是有限自动机。
例 1型文法 (上下文有关) 文法G[S]: S→CD C→aCA C→bCB AD→aD BD→bD Aa→bD Ab→bA
Ba→aB Bb→bB C→a D→b
例 2型文法(上下文无关) 文法G[S]: S→AB A→BS | 0 B→SA | 1 例 3型文法 G[S]: G[I]: S→0A | 1B | 0 I → lT | l A→0A | 1B | 0S T → lT | dT | l | d B→1B | 1 | 0
四类文法之间的逐级“包含”关系
0型文法 1型文法(例外A)
2型文法
3型文法
文法和识别系统之间的关系:
0型文法(短语文法)的能力相当于图灵机,可以表征任 何递归可枚举集。任何0Leabharlann Baidu语言都是递归可枚举的。
1型文法(上下文有关文法):产生式形如α1Aα2→α1βα2, 即只有A出现在α1和α2的上下文中时,才允许β取代A。 其识别系统是线性界限自动机。 2型文法(上下文无关文法CFG):产生式形如 A→β,β 取代 A 时与 A 上下文无关。其识别系统是下推自动机。 3型文法(正规文法RG):产生的语言是有穷自动机(FA) 所接受的集合。
{非终结符也称语法变量, 它代表语法实体或语法范畴。如算术表 达式对应非终结符, 如i+i、i*(i+i)}
VT ∩ VN =。令V=VT VN, V称文法的字母表。 通常用大写字母表示非终结符,用小写字母表 示终结符。 P: 规则的非空有穷集; S: 开始符,是一个非终结符,它至少要在一 条 产生式中作为左部出现。
(2) 1型文法
若文法G的每个产生式→均满足: ||≤||, 则 称文法 G 为 1 型文法或上下文有关文法 , 记为 CSG。 1型文法对应的语言称为1型语言(对应自然语言)。 1型文法的另一种定义: 文法G的每个产生式具有如下形式: A→, 其中, ,(VT∪VN)*, AVN, (VT∪VN)+
定义3.3 若存在直接推导的序列v =w0 w1 ... + wn=w, (n>0),则称为v推导出w,记为 v w w 称为w归约到v。 * + 定义3.4 若有 vw 或 v=w,则记为 vw
例 G: S→0S1 | S→01 0S1 00S11 00S11 000S111 000S111 00001111
例如,下述文法G1[A]和G2[S]等价。 G1[A]: A→0R A→01 R→A1
G2[S]: S→0S1 S→01
3.4 文法的类型
Chomsky 于 1956 年定义了四类文法及相应的形式 语言。
(1) 0型文法 (短语文法)
若文法 G 的每个产生式都为 的形式 , 其 中 α(VN∪VT)+且至少含1个非终结符, β(VN∪VT)*, 则称该文法G为0型文法,记为PSG。 0型文法对应的语言称为0型语言(对应图灵机) 。
S0S1 00S11 000S111 00001111 + * 记为 S 00001111, 也记为 S 00001111 * S S
* 00S11 00S11
3. 句型、句子、语言的定义
* 定义3.5 假设G[S]是一个文法,若S x,则称x 是文法G的句型。 * 假设G[S]是一个文法,若S x, xVT*,则称x是 文法G的句子。
例1 写出下列语言对应的文法{正规文法} L(G1) = { ban | n1} L(G2) = { and | n0} 解: (1) S→bA A→aA | a (2) S→Ad A→aA |
L(G3) = { cd(ef)n | n1} 对应的文法为:
S→cdA A→efA | ef
最高位
中间位
最低位
2. 推导的定义 为了定义文法所产生的语言,引入推导的概念。 定义3.2 假设α→β是文法G的一条产生式。若有 v,w满足: v=γαδ, w=γβδ, 其中γV*, δV*,则称v 直接推导到w, 或w是v的直接推导, 记作 v w。 也称w直接归约到v。 例 G: S→0S1 | 01 0S1 00S11 00S11 000S111 000S111 00001111 S 0S1
(3) 2型文法
若文法G的每个产生式具有下列形式: A→, 其中AVN, (VT∪VN)*
则称文法G为2型文法或上下文无关文法, 记为 CFG。
2型文法对应的语言称为2型语言或上下文无关语 言(对应程序设计语言), 其识别系统是下推自动机。
(4) 3型文法
若文法G的每个产生式具有下列形式: A→a 或 A→aB, 其中A,BVN, aVT*, 则称文法G为3型文法或正规文法{右线性, 左线性}, 记为RG。
解: 产生标识符的文法为 G = (VN, VT, P, I),其中 VN ={I, S, T, L, D}, VT ={a,b,…,z, 0,…,9}, P: I → LS | L S→ ST | T T→L | D L→a | b |…| z D→0 | 1 |…| 9 I 是文法开始符
产生标识符的文法也可写为:
L(G4) = { a2n | n1}={ (aa)n | n0} 对应的文法为: S→aaS |
例2 写出下列语言对应的文法{CFG文法} L(G1) = { ambn | m1,n0} L(G2) = { anbn | n1} L(G3) = { anbn ci | n,i1} L(G4) = { anbn ambm | m,n1} L(G5) = { am bn ck | m,n,k1} 解: (1) S → AB A → aA | a B → bB | (2) S → aSb | ab (3)~(6) {略}
相关文档
最新文档