第二章形式语言理论

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

➢ 正闭包 Σ+ = Σ1∪Σ2∪Σ3∪…称为Σ的正闭包。 + 表示上的除ε外的所有有穷长串的集合 ➢ 自反闭包Σ* = Σ0∪Σ+
Σ+ = ΣΣ* = Σ* Σ
2.2文法和语言
1、文法定义: 文法G(Grammar)定义为四元组(VN,VT,P,
S) VN (Nonternimal):非终结符集 VT (Terminal):终结符集 P (Production):产生式(规则)集合 S:开始符号或识别符号
在程序设计语言中,正规文法通常用来描述单词的 结构。
文法类别
产生式形式
产生的语言 说明
0型文法 (短语文法)
1型文法 (上下文有关文法)
2型文法 (上下文无关文法)
α→β
0型语言
α∈V+ ,且至少含一 个非终结符,β∈V*
对产生式基 本无限制
α→β,|β|≥|α| A→β,A∈VN , β∈V*
1型语言(上下 将A替换成 文有关语言) 时,必须
第二章 形式语言理论
形式语言
Chomsky于1956年提出了一种用来描述语言的 数学系统。人们把用一组数学符号和规则来描述 语言的方式称为形式描述,而把所用的数学符号 和规则称为形式语言。
形式语言,只是从语法上研究语言。它是抽象的 数学系统,用于模拟程序设计语言的语法,或者 是并不很成功地模拟自然语言如英语的语法。
构造语法树
方法:把开始符号做 为根结点,对每一个 直接推导画一个分支, 分支的名字是直接推 导中被替换的非终结 符号,直到再无分支 可画结束。
例如:推导 S AB AcBd
Accdd abccdd
S
A
B
a
b
cBd
c
d
语法树的构造过程
S AB AcBd Accdd abccdd
S (1)
S A (2) B
显然 {ε}A = A{ε} = A
➢ 符号串集合的方幂: 设A是符号串的集 合,则称Ai为符号串集A的方幂,其中i 是非负整数。具体定义如下: A0 ={ε}
A1 = A , A2 = A A
AK = AA......A(k个)
5. 集合的闭包 ➢ 闭包 集合Σ的闭包Σ *定义如下: Σ * = Σ 0∪ Σ1∪ Σ 2∪ Σ 3∪… 例:设有字母表Σ={0,1} 则Σ*=Σ0∪Σ1∪Σ2∪… ={ε,0,1,00,01,10,11,000,…} 即Σ*表示Σ上所有有穷长的串的集合。
考虑A的上 下文
2型语言(上下 无需考虑A 文无关语言) 在上下文中
的出现情况
3型文法 (正规文法)
A→aB 或 A→a, A,B∈VN ,a∈VT
3型语言 (正规语言)
产生式全部 是规定的形 式
四种文法之间的逐级“包含”关系
0型文法 1型文法
2型文法 3型文法
2.4.语言和语法
1、句型和句子
设有文法G[S],若符号串α是从开始符推导出来 的,即 S =>* α ,则称α是文法G的句型。若α仅由终 结符组成,即 S =>* α ,且α∈VT*,则称α是文法G的 句子。
推导2:E E×E i×E i×E+E i×i+E i×i+i
3、作用:直观地描述上下文无关文法的句型推导
过程。给定文法G=(VN,VT,P,S),对于G的任何句 型都能构造与之关联的语法树
语法树的相关概念
结点:每个树的结点对应于一个符号。结点的名字 就是该符号。
边:两个结点之间的连线。 根结点:没有边进入的结点。 分支:某个结点向下射出的边和其结点称为分支。
形式语言理论是编译理论的重要基础,它主要研 究组成符号语言的符号串的集合及它们的表示法、 结构与特性。
形式语言和编译理论中的 最基本概念
——符号串和符号串集合
2.1字母表和符号串
1. 字母表 ➢ 定义:元素的非空有穷集合,记为∑。 例:∑={0‚1} Α={a‚b,c} ➢ 元素也称为符号,字母表也称符号集。 ➢ 程序语言的字母表由字母数字和若干专用 符号组成。
S
A
B
(3)
c
Bd
S
A
B
c
B
d
(4)
c
d
S
A
B
a
b
c
B
d
(5)
c
d
例:文法G:E→E+T|T T→T×F|F F→(E)|i
句型T+T×F的推导过程与语法树
E=>E+T =>E+T×F=>T+T×F E=>E+T =>T+T =>T+T×F
从左到右读出叶子结 点得到的符号串,为 文法的句型。也把该 语法树称为该句型的 语法树。
2. 符号串 ➢ 定义:由字母表中的符号组成的任何有穷序列 例:0,00,10是字母表∑={0‚1}上的符号串 a,ab,aaca是Α={a‚b,c}上的符号串 ➢ 在符号串中,符号是有顺序的,顺序不同,代 表不同的符号串,如:ab和ba不同 ➢ 不含任何符号的符号串称为空串,用ε表示 注意:{ε}并不等于空集合{ } ➢ 符号串长度: 符号串中含有符号的个数 如: |abc|=3 | ε|=0
0型文法
如果对于某文法G,P中每个规则具有下列形式: α→β 其中α∈V+ , β ∈ V*,则该文法G为 (Chomsky)0型文法或短语结构文法。相应的语言
称为0型语言或短语结构语言。
如文法G,其中VN={A,B,S} VT={0,1} P={ S→0AB 1B→0 B→SA|01 A1→SB1
3. 符号串的运算 ➢ 符号串的连接:设x、y是符号串,它们的连接 是把y的符号写在 x的符号之后得到的符号串xy 例如 x="ST",y="abu" ,则 xy="STabu" 显然εx = xε=x ➢ 符号串的方幂:把符号串a自身连接n次得到 的符号串an = aa…aa
例如 a1=a a2=aa a0=ε
2型文法(上下文无关文法)
它是1型文法的特例,对任一产生式α→β,都有 α∈VN , β∈(VN∪VT)*
例 文法G[S]: S→AB A→BS|0 B→SA|1 ➢2型文法产生式的一般形式是: A→,它表示不管 A的上下文如何都可把A替换成,因此被称为上下文 无关文法。 ➢通常程序设计语言的文法,可用2型文法来描述, 因此我们重点研究2型文法。
多余规则为:(6)不可终止 (7)不可到达
2.5文法的二义性(Ambiguity)
文法G:E→E+E|E×E|(E)|i 句子 i×i+i 对应的语法树
E
E E +E
E ×E
E ×E i
iE +E
i
i
两个不同的最左推导:
i
i
推导1:E E+E E×E+E i×E+E i×i+E i×i+i
E
E
E +T
E +T
T T ×F
T T ×F
从语法树中看不出句型中的符号被替代的顺序
2.5 文法和语言的一些特性
1、无用非终结符:某个非终结符不出现在文法的 任何一个句型中,并且不能从它推出终结符号串。含
有该非终结符的规则即不可终止。
2、不可达文法符号:如果一个非终结符不出现在该文
法的任何其他的产生式的右部。该非终结符为不可达文 法符号,含有该非终结符的规则即不可达规则
2. 推导和规范推导:
α→β是文法G的产生式,若有v,w满足: v=γαδ,w=γβδ, 其中γ,δ∈V*
则称v直接推导出w,也称w直接归约到v,
记作 v w
➢ 直接推导就是用产生式的右部替换产生式的左 部的过程
➢ 直接归约就是用产生式的左部替换产生式的右 部的过程
2、直接推导序列:+ 或 + 若存在v =u0 u1 ... un=w, (n>0) 则称v + w,v推导出w,或w归约到v(至少有1步推 导),这个直接推导序列的长度为n。
子的集合,即
L(G)={x|S
=>* x,且 x∈VT* }
例 文法G: S→0S1, S→01
S0S1 00S11 03S13 … 0n-1S1n-1 0n1n L(G)={0n1n|n≥1} 3、文法和语言的关系: 文法G生成的每个终结符号串都在L(G)中 L(G)中的每个串确实能被G生成
例 文法G[S]: S→0S1, S→01
因为S 0S1 00S11 000S111 00001111
所以S,0S1 ,00S11 ,000S111,00001111都是G的 句型,00001111是G的句子
由规范推导所得的句型称为规范句型
2、语言的定义
由文法G生成的语言记为L(G),它是文法G的一切句
2. 语法树
1、定义:语法树是这样的一个语法结构,它的结 点由符号组成。根结点对应于开始符号。只有 非终结符号对应的结点有子结点。并且,一个 结点和它的子结点分别对应于文法中的一个规 则的左部和右部。
2、引入语法树的意义:作为识别句子的辅助工具, 语法树可以表示句子的结构。这一点对于其后 的语义分析有非常重要的意义。
4. 符号串集合:
➢ 定义: 若集合A中所有元素都是某字母表上 的符号串,则称A为字母表上的符号串集 合。
➢ 符号串集合的乘积:符号串集合A和B的乘 积定义为:AB ={xy|x∈A且y∈B},即AB是由A
中的串x和B中的串y连接而成的串xy组成的集合。
若集合A = ab,cde B = 0,1
则 AB = ab0,ab1,cde0,cde1
2、每个结点的标记都是V中的一个符号;
3、若一棵子树的根结点为A,且其所有直接子孙的标记 从左向右的排列次序为A1A2…AR,那么 A → A1A2..AR 一定是P中的一条规则;
4、若一标记为A的结点至少有一个除它以外的子孙,则 A∈VN
5、若树的所有叶结点上的标记从左到右排列为字符串w, 则w是文法G的句型;若w中仅含终结符号,则w为文 法G所产生的句子。
说明:
➢ V=VN∪VT,V称为文法G的字母表 ➢ P中产生式形如:α→β,其中α∈V+且至少含一个非终结
符,β∈V*
➢ VN,VT和P是非空有穷集
➢ VN∩VT=φ ➢ S是一个非终结符,且至少要在一条产生式的左部出现
➢ 非终结符代表一个语言中的语法成分,如<赋值语句>, 它是构成程序的一个语法成分,这个符号本身不会在程 序中出现,而终结符是组成程序的具体的符号。
(父子结点,兄弟结点) 子树:语法树的某个结点和它向下射出的部分 末端结点:没有向下射出的边的结点成为末端结点。
在相对于句型的语法树中,末端结点可能是非终结 符号。
语法树的特征
给定文法G,G=(VN,VT,P,S),对于G的任何句型都能构造 与之关联的语法树(推导树)。这棵树具有下列特征:
1、根结点的标记是开始符号S;
3、广义推导:* 或 * 若有v + w 或 v=w,
则记为v * w,v广义推导出w,w广义规约到v(可以 包含0步推导)
三种推导的比较
直接推导()的长度为1 直接推导序列( +)的长度n≥1 广义推导( *)的长度≥0
规范推导与规范规约
考虑两种特殊推导:最左推导和最右推导,即 对于一 个推导序列中的每一步直接推导,都是对最左(最右) 非终结符进行替换。
3型文法(右线性文法和正规文法)
它是2型文法的特例,任一产生式α→β的形式都为 A→aB或 A→a,其中A ,B∈VN ,a∈VT * 在正规文法中,任一产生式α→β的形式都为 A→aB或 A→a,其中A ,B∈VN ,a∈VT 例如 文法G[S]: S→0A|1B|0
A→0A|1B|0S B→1B|1|0
A0→S0B }
1型文法(上下文有关)
它是0型文法的特例, 对P中的任一产生式α→β,都 有|β|≥|α| ≥ 1, 仅仅 S→ε除外,但S不得出现在任
何产生式的右部。
例 文法G[S]:
S→aSBE
S→aBE EB→BE
aB→ab bB→bb bE→be eE→ee
1型文法产生式的一般形式是 A→, , ∈ V* ,A∈VN , β∈V+ ,它表示当A的上文为且下文 为时可把A替换成,因此称1型文法为上下文有 关文法。
3、有害规则:U→U ,无用且引起文法的二义
4、可空非终结符: 2型文法允许以下产生式 S→ε,
该产生式称为空产生式,S称为可空非终结符。在消除左 递归方法中用到空产生式。
例:文法G[S]: (1)S→Be (2)B→Ce (3)B→Af (4)A→Ae (5)A→e (6)C→Cf (7)D→f
最右推导也称规范推导,它的逆过程称为最左规约, 也称规范规约。
2.3 文法的分类
Chomsky对文法中的规则施加不同限制,将 文法和语言分为四大类: ❖ 0型文法(PSG) 0型语言或短语结构语言 ❖ 1型文法(CSG) 1型语言或上下文有关语言 ❖ 2型文法(CFG) 2型语言或上下ቤተ መጻሕፍቲ ባይዱ无关语言 ❖ 3型文法(RG)3型语言或正则(正规)语言
相关文档
最新文档