第二章 形式语言基础(1)

合集下载

第2章形式语言的基本知识

第2章形式语言的基本知识
例:Σ ={a,b} Σ *={ε ,a,b,aa,ab,ba,bb,aaa,aab,…} Σ +={a,b,aa,ab,ba,bb,aaa,aab,…}
• 7.符号串的 前缀:s为符号串,把s从尾部删去若干个 (包括0个)符号后所余下的部分称为s的前缀。
符号串abc的前缀是什么?
• 8.符号串的 后缀:s为符号串,把s从前部删去若干个 (包括0个)符号后所余下的部分称为s的后缀。
文法
<赋值语句>::=<标识符>“=”<表达式> <表达式>::=<表达式>“+”<表达式> | <表达式>“*”<表达式 > <表达式>::=“(”<表达式>“)” | <标识符> | <整数> | < 实数>
赋值语句
标识符
表达式
=
y
表达式 + 表达式
y =x+r*6
标识符 表达式
表达式
*
x 标识符
推导方法:从一个要识别的符号 开始推导,即用相应规则的 右部来替代规则的左部, 每次仅用一条规则去进行推导。
<句子> => <主语><谓语> => < 代词><谓语>
<句子>::=<主语><谓语> <主语>::=<代词>|<名词> <代词> ::=你|我|他 <名词>::= 王民|大学生|工人|英语 <谓语>::=<动词><直接宾语> <动词>::=是|学习 <直接宾语>::=<代词>|<名词>

第2章 形式语言基础

第2章 形式语言基础

研究符号串集合的表示方法、结构特性 以及运算规律。
第2章 形式语言基础
【内容提要】
2.1 形式语言是符号串集合 2.2 形式语言是由文法定义的 2.3 各种语法成分的定义 2.4 两类特性文法 2.5 文法变换方法 2.6 形式语言的分类
2.1 形式语言是符号串集合
【形式语言】是字母表上的符号按一定的 规则组成的所有符号串集合;其中的每个符号串 称为一个句子。
【例2.2】 L2={ abmc,bn | m>0,n≥0 } 字母表∑2= {a,b,c},
▪句型1: abmc 有句子:abc, abbc, abbbc,…
▪句型2: bn 有句子:, b, bb, bbb,…
【注】 (1) b0=(空符号串),b1=b,b2=bb,b3=bbb,…
(2) L1 为有限语言; L2 为无限语言。
5.固有头,固有尾
对于每个符号串s, s和ε两者都是符号串s的前缀, 后缀和子串。 符号串s的固有头,固有尾:
z=xy,x是z的头,y是z的尾,如果x非空则y是固 有尾,如果y非空则x是固有头。 例:在Z=abc Z的头:ε,a,ab,abc;其中固有头:ε,a,ab
Z的尾:ε,c,bc,abc;其中固有尾:ε,c,bc
则该集合的文法是:
(1) A->aBa B->b|Bb|bB
(2) Z->ABC A->a C->a B->bB|Bb|b
(3) A->aB B->ba|bB 练习2. Σ={a,b,c}上的字符串集
A={ancbn|n>=0} 该集合的文法是:
A->aAb|c
【例2.8】标识符的文法
【标识符】指字母开头的字母、数字序列。

第二章 形式语言概论

第二章 形式语言概论

语言的有穷表示有两个途经
生成方式(文法)
语言中的每个句子可以用严格定义的 规则来构造。
识别方式(自动机)
用一个过程,当输入的一任意串属于 语言时,该过程经有限次计算后就会停止 并回答“是”,若不属于,要么能停止并回 答“不是”,要么永远继续下去。
§2.2 文法及其分类
2.2.1 文法的定义
A*=∪Ai(i≥0)=A0∪A1∪A2∪A3∪…
例如:A={a,b}
则A*={ε,a,b,aa,ab,ba,bb, aaa,aab,aba,abb, …}
A*与A+的关系:
A*=A0∪A+
A+=AA*=A*A
由此得出结论:n语言是由句子组成的集 合,是由一组符号所构成的集合。换言之,字 母表S上的一个语言是S上的一些符号串的 集合。(字母表S上的每个语言是S*的一个 子集)。
的规则(或说是P中的一个产生式),和 是V*中的任意符号,若有符号串v,w,满 足v= ,w= ,则称v (应用规则 )直接产生w,或v直接推导出w,或 w是v的直接推导,或w直接归约到v,记 作v w。
例:
文法G[S]由如下规则组成: SA A AB|B B 0|1|2|…|9 其中S是文法 G [S] 的识别符号,该文法的 字母表为:V={S,A, B,0,1,…,9} 用这些规则和直接推导的定义可以推出所有 正整数,如可推导出24:
P15~P16例2.6~例2.10的文法类型。

2型文法可改写成3型文法。
例:将如下的上下文无关文法改写为等价的 正规文法。 G[S]:SabcA AbcB Ba 改写后G[S]: AbE SaM EcB MbN Ba NcA
文法分类的意义
文法分类对于实现程序设计语言的编译 程序具有重要意义。

第二章 形式语言概述

第二章 形式语言概述
– E + T * i,i,(E + T)都是G的句型。 – i + i * i,(i + i) * i,i都是G的句子。
2.3 文法的分类
0型文法(短语文法):
– 对产生式无限制。
1型文法(上下文相关文法): – 文法中任意的产生式→,则存在1,2 (VNVT)*; (VNVT)*;AVN;使得 = 1A2, = 12。
– A+ = A1 A2 … … – A+ = A A*
例:
– { 0, 1 }+为所有二进制串的集合。
2.1 基本概念
语言
– 一个语言为满足一定规律的串的集合。
语言的表示方法
– 集合表示:{ 1, aa, b }, { anbn| n > 0 }。 – 串集合的运算:a+{1, a}*。
推导:如果存在一个直接推导序列 = 0 = ,n > 0,则称为的一个推导,记为
''。1


n
''* 表示 '' 或者 =
例:10为S的推导,1100为S的推导,111S000为1S0的推 导。
2.2 文法与语言
最左推导:如果A ,VT*,AVN, , (VNVT)*,则称为A的一个最左推导。
– 符号的有穷序列称为符号串 – 不包含任何符号的串称为空串,记为
– 串α中符号的个数称为串α的长度,记为||
2.1 基本概念
串集合的乘积 – 令A、B为两个串集合,则A与B的乘积A·B = { | A, B },也可以缩写为AB – {} ·A = A ·{} = A, Ø·A = A ·Ø = Ø

第2章 形式语言的基础知识

第2章 形式语言的基础知识



字符串:字母表中符号的有穷序列。
字符串的长度:组成该字符串的符号的个 数。字符串的长度记作||。 例如字符串banana的长度为6。空字符串 记作,由0个符号组成,故||=0。



字符串的前缀:该字符串领头的若干符号。 字符串的后缀:该字符串结尾的若干符号。 例如,字符串abc具有前缀,a,ab和abc; 其后缀有,c,bc,abc。
S aSBE aaBEBE aabEBE aabBEE aabbEE aabbeE aabbee
(SaSBE) (SaBE) (aBab ) (EBBE ) (bBbb) (bEbe) (eEee)
S aSBEaaSBEBEaaaBEBEBE
第2章 形式语言的基础知识
内容提要


形式语言 文法和语言 分析树
2.1 形式语言

符号和字符串

符号:抽象实体,不加以形式定义。就像 几何学中的“点”。或者叫原子概念,凭 直觉去体会。 字母表:有限个符号的集合。字母表一般 用记。例如,英语的字母表 ={a,b,…,z,A,B,…,Z};汉语的字母表由汉 字构成。

例2.1 文法G=(VN, VT, P, S),其中VN={S}, VT={0,1},P={S0S1, S01}。

例2.2 文法G=(VN, VT, P, S),其中VN={<标识 符>,<字母>, <数字>},VT={a,,z,0,,9}, P={<标识符><字母> <标识符><标识符><字母> <标识符><标识符><数字> <字母>a||z <数字>0||9} S=<标识符>

编译原理 形式语言ppt课件

编译原理 形式语言ppt课件

表示 ,例如上例5中 步经 的过 推导记为
句子 thm e onk动 ey词 冠词 名词
规那么的简化表示
在前面的语法规那么定义中,有些语法范畴〔如<名 词>、<动词>〕有假设干条不同的规那么来定义它, 为简明起见,我们可以将它们写在同一个左部语法
范畴下,将其定义值用符号“|〞〔读作‘或’〕隔 开。如<名词>、 <动词>、 <冠词>的定义规那么可 简记为
正闭包 A+ = A1∪A2∪A3∪…称为Σ的正闭包 A + 表示上的除ε外的一切用穷长串的
集合
注: Σ* = Σ0∪Σ+ 注: Σ+ = ΣΣ* = Σ* Σ
字母表上的一个言语是上符合某种规那么的一 些符号串的集合 ,是*的一个子集
例如:Σ={a,b} Σ*={ε,a,b,aa,ab,ba,bb,aaa,aab,…} 1. 集合{ab,aabb,aaabbb,…,anbn,…}或 {w|w∈Σ*且w=anbn,n≥1}为字母表上的一个言语 2. 集合{a,aa,aaa,…}或{w|w∈Σ*且w=an,n≥1}为 字母表上的一个言语
<句子> <主语短语><动词短语>
所得符号串<主语短语><动词短语>含有两个语法实体,可 对其中任一个〔例如对<动词短语>〕进展新的推导
<句子> <主语短语><动词短语>
<主语短语><动词><宾语短语>
反复上述过程,可得到一个推导序列〔见下页〕。
推导长度
推导 所用 所得的符号串
步 规那么

第2章形式语言概论

第2章形式语言概论
G=(VN,VT,P,S) 其中: VN={I, L, D} VT={a,b,c, … x,y,z,0,1,2,…
,P9=}{ I→L| I L| I D L→a | b | c | … | x | y | z D→0 | 1 | 2 | 3 | … | 9
S=I }
文法的形式定义
若将定义标识符的文法设计成: G=(VN,VT,P,S )
1. 字母表 元素的非空有穷集合。 例如,∑={ a, b, c } 根据字母表的定义,Σ是字母表,
它由a、b、c三个元素组成。
字母表和符号串
注意: (1) 字母表中至少包含一个元素。 (2) 字母表中的元素, 可以是字母、 数字或其他符号。 例如,∑' ={0, 1} 是一个字母表,由0、1两个元素 组成。
第2章 形式语言概论
形式语言理论是编译的重要理论 基础。本章主要介绍编译理论中用到 的有关形式语言理论的最基本概念, 重点介绍如何采用形式化的方法描述 程序设计语言。
第2章 形式语言概论
字母表和符号串 文法和语言的形式定义 文法和语言的分类 短语、直接短语和句柄 语法树和文法的二义性
概述
当n=1 L={aa, bb} L={a2n, b2n | n≥1}
当n=2 L={aaaa, bbbb} 当n=3 L={aaaaaa, bbbbbb}
…… L={aa, bb, aaaa, bbbb, aaaaaa, bbbbbb, … …} 即语言L是由偶数个a,偶数个b这样的 符号串组成的集合。
幂运算定义为:
A0={} A1=A A2=AA
… An= AA … A=AAn-1(n>0)
n
符号串的运算
例如,设A={ a, b },则 A0={} A1=A={ a, b } A2=AA={ aa, ab, ba, bb } A3=AAA=A2A

《编译原理》第2章 编译基础-形式语言与有穷自动机

《编译原理》第2章 编译基础-形式语言与有穷自动机
整理课件
句型、推导
G[E]: E→E+T|T T→T*F|F F→(E)|a
对于句子a+a*a 有不同 的推导
EE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a
EE+T E+T*F E+T*a E+F*a E+a*a T+a*a F+a*a a+a*a
整理课件
例:奇偶测试器
0
0
1
q0
q1

1
自动机:M=(Q,∑ ,δ ,q0,Z)
Q={ q0, q1}
∑ ={0,1}
q0=q0 Z={q1}
整理课件
映射函数:
δ( q0,0)= q0 0
0
δ( q0,1)= q1
1
δ( q1,0)= q1 q0
q1
δ( q1,1)= q0
1
例:000110001
整理课件
第四节 正规文法与有穷自动机 1、正规文法 产生的语言的推导 例:文法 G=(VN,VT,P,S) 其中: VN={A,B,C}
VT={a,b,c} S=A P:A →aB A →aA
B →bB B →bC C →cC C →c
整理课件
A=>aA=>aaA=>…..=>aa…aB =>aa…abB=>aa…abb…bC =>aa…abb…bcC=> aa…abb…bccC => aa…abb…bcc…c
D→ε
Aa→bD
自然语言属于上下文有关文法
整理课件
文法的类型

第2章 形式语言概述

第2章 形式语言概述

2.1.1字母表

定义2.1 字母表是元素的非空有穷集合,字母表中 的元素称为符号,因此字母表也称为符号表。高级 语言如C语言的字母表是由字母、数字、特殊符号 和一些专用符号构成。 例 ={a,b}, ={0,1}, ={0,1,2,3,4,5,6,7,8,9},


∑={a,b,c,…z,if,then,else,main,1,2,3,4,…,9,0,=, ==,>,<,;(,)}



P为产生式的规则:
{N→L|NL|ND
L→a|b| c
D→1|2|3 }
2.2.3文法的分类

自从乔姆斯基(Chomsky)于1956年建立形式语言的描述以来,把文法分成 四种类型,即0型、1型、2型和3型文法。


0型文法(短语文法)
设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈ (VN∪VT )+ ,且至少含有一个非终结符,而β∈(VN∪VT )*,则称G是一 个0型文法。0型文法又称短语文法,它的能力相当于一个图灵机。 例如,A→
1.0型语言与图灵机
图灵机是识别0型文法的识别装置。图灵机被
引进作为描述过程的数学模型,过程的直观 概念被看成是能机械实现的有穷指令的序列。 图灵机的基本模型如图2-1所示。它有一个有 限控制器、一个被分成若干单元的输入带和 一个一次读入一个单元的读头组成
a1
a2

2.符号串的长度 符号串x中所包含的符号的个数称为符号串x的长度, 记为|x| 。例如字母表{0,1},则|010110|=6。ε记为 空串,长度为0。


3.子字符串
定义2.3 设有非空符号串u=xvy,其中x、v、y是符号串, 且v≠ε,则称v为符号串u的子符号串。

第2章形式语言基础知识

第2章形式语言基础知识

2、符号串
定义:由字母表中的符号组成的任何有穷序列 例:0,00,10是字母表∑={0‚1}上的符号串 a,ab,aaca是V={a‚b,c}上的符号串 符号串是有序的。如: ab和ba不同 不含任何符号的符号串称为空串,用ε表示 注: {ε}并不等于空集合{ } 符号串长度: 符号串中含有符号的个数 如: |abc|=3 | ε|=0
2019/1/4
4
编译设计和开发技术
浙江科技学院计算机与电子工程学系
语义
定义单词和语法单位的意义 分类 静态语义:一系列限定规则,确定哪些合乎 语法的程序是合适的 动态语义:表明程序要做什么 作用: 检查类型匹配,变量作用域等
2019/1/4
5
编译设计和开发技术
浙江科技学院计算机与电子工程学系
2019/1/4
9
编译设计和开发技术
浙江科技学院计算机与电子工程学系
符号串集合的方幂: 设A是符号串的集 合,则称Ai为符号串集A的方幂,其中i 是非负整数 具体定义如下 A0 ={ε } A1 = A , A2 = A A AK = AA...…A (k个) 字母表A的n次方幂是字母表上所有长度 文n的串集
2.1 字母表和符号串
1、字母表
定义:元素的非空有穷集合 例:∑={0‚1} V={a‚b,c} 元素也称为符号,字母表也称符号集。 程序语言的字母表由字母数字和若干专用符 号组成。 是符号的非空有穷集合 一般用Σ 、V 表示
2019/1/4
6
编译设计和开发技术
浙江科技学院计算机与电子工程学系
字母表上符合某种规则构成的串
7、语言:字母表上句子的集合 a、b、c --- 符号 α、β、γ --- 符号串 A、B、C--- 符号串的集合(语言、句子)

形式语言基础

形式语言基础

两个语言!
【例2.2】 L2={ abmc,bn | m>0,n≥0 } 字母表∑2= {a,b,c}, 句型1: abmc 有句子:abc, abbc, abbbc,… 句型2: bn 有句子:, b, bb, bbb,…
【注】 (1) b0=(空符号串),b1=b,b2=bb,b3=bbb,… (2) L1 为有限语言; L2 为无限语言。

(a|b)* =(a|b)0 |(a|b)1 |(a|b)2 |… 即:(a|b)* = (a|b)n , n≥0 同理:(a|b)+ = (a|b)n , n>0
2.1.1 符号串(集合)的运算
Ⅱ.符号串集合的运算 设 A 和 B 为两个符号串集合,则: 1. 乘积: AB = { xy | xA 且 yB} 2. 和: A∪B = A+B = { x | xA 或 xB}
推论:若 A 为任一字母表,则 A* 就是该字母表 上的所有符号串(包括空串)的集合。
2.2 形式语言是由文法定义的
形式语言是符号串的集合,对形式语言的描述 有两种方式: (1) 枚举方式:语言为有穷集合时 设有字母表A={a,b,c}, 有 L1={a,aa,ab,ac}, L2={c,cc} (2) 使用文法:语言为无穷集合时,无法枚举
设有字母表B={0,1}, B+={0,1,00,10,11,01,000,…}
用 A 表示B+,可以表示为 A->0 A->A0 A->1 A->A1
文法:用有穷的集合刻画无穷的集合的工具。
2.2 形式语言是由文法定义的
2.2.1 什么是文法 ?
【定义】 文法(grammar)是规则的有限集,通常可 以表示为四元组: G(Z)=(VN, VT, Z, P) 每个元素 VN : 非终结符集 ( 定义的对象集,如:语法成分等 ) ; VT : 终结符集 ( 字母表 ) ; Z : 开始符号 ( 研究范畴中最大的定义对象 ) ; P : 规则集 ( 又称产生式集 ) ; 每个规则 Z -> 或者 A -> | 注:此文法实际称为上下文无关文法 描述符号 : ->(定义为/生成),|(或者是) 文法符号 : Z , A∈VN, , ∈(VN+VT)*

第二章形式语言理论

第二章形式语言理论
精品资料
字母表和符号(fúhào)
字母(zìmǔ)表:元素的非空有穷集合,记为∑。
例如:∑={0‚1} ∑1={a‚b,c}
字母(zìmǔ)表中至少包含一个元素。
字母(zìmǔ)表中的元素,可以是字母(zìmǔ)、数字 或其他符号。
不同的语言有不同的字母(zìmǔ)表。
符号:字母表中的元素称为符号或字符。
0型文法(PSG): 0型语言或短语结构语言。 1型文法(CSG):1型语言或上下文有关语言。 2型文法(CFG):2型语言或上下文无关(wúguān)语言。 3型文法(RG):3型语言或正则(正规)语言。
精品资料
1.0型文法
如果对于(duìyú)文法G,P中每个规则具有下列形式: α→β
其中α∈V+ ,β∈V*,则该文法G为0型文法。相应的语言称为0 型语言。 例如:文法G=(VN,VT, P, S),其中VN={A,B,S} VT={0,1}
1型语言(上下 文有关语言)
将A替换成b 时,必须考 虑A的上下 文
2型语言(上下 文无关语言)
无需考虑A 在上下文中 的出现情况
3型文法 (右线性文法)
A→aB 或 A→a, A,B∈VN ,a∈VT*
3型语言
a∈VT,正规 (zhèngguī)文法
产生式全部 是规定形式
精品资料
如何判断(pànduàn)4种文法 1型文法:|β|≥|α|≥1,规则左部至少有一个非终结符 ; 2型文法:规则左部是单个非终结符; 3型文法:看格式。
精品资料
符号串及其运算(yùn su由àn字)母表中的符号组成的任何有穷序列。
例如:0,00,10是字母表∑={0‚1}上的符号串 a,ab,aaca是∑1={a‚b,c}上的符号串

第二章 形式语言基础

第二章  形式语言基础

2. 或: |= (或者 )
3. 方幂: n = … = n-1 = n-1 n个
※ 0 = (空符号串)
什麽符号也没有的符号串 !
1= ; 2 = ;…
4. 闭包: 的正闭包: + = 1|2|…|n|… 的星闭包: * = 0|1侧重于语法的研究。
※ 形式语言的基本观点是 : 语言是符号串之集合!
※ 形式语言理论研究的基本问题是: 研究符号串集合的表示方法、结构特性
以及运算规律。
第 2 章 形式语言基础
【内容提要】
2.1 形式语言是符号串集合 2.2 形式语言是由文法定义的 2.3 主要语法成分的定义 2.4 两类特性文法 2.5 文法变换方法 2.6 关于形式语言的分类问题
【例2.4】 设 A={a} 则 A* = A0∪A1∪A2∪…∪An∪… ={}+{a}+{aa}+{aaa}+… ={,a,aa,aaa,…} ={an|n≥0}
➢ 符号串集合运算示例(续):
【例2.5】 设 A={a,b}, A* = ? ∵ A* = A0∪A1∪A2∪…∪An∪… A0 ={}; A1 = A ={a,b}; A2 = A.A={a,b}.{a,b}={aa,ab,ba,bb}; A3 = A.A2={a,b}.{aa,ab,ba,bb} ={aaa,aab,aba,abb,baa,bab,bba,bbb}; … ∴ A* = { x | x=(a|b)n ,n≥0 }
即:(a|b)* = (a|b)n ,n≥0
同理: (a|b)+ = (a|b)n ,n>0
2.1.1 符号串(集合)的运算(续2)
Ⅱ. 符号串集合的运算 设 A 和 B 为两个符号串集合,则:

第章形式语言与自动机理论

第章形式语言与自动机理论
Ei EE+E
EE*E E(E)
第十五页,编辑于星期五:二十点 分。
E
E+ E
E* E
i
E E* E i E+ E
i
i
i
i
推导1的语法树 句型i*i+i:
推导2的语法树
推导1: E E + E E * E + E i * E + E
i*i+Ei *i+i 推导1: E E * E i * E
例: AB | D | aB
BC | b Cc
DB | d
第二十页,编辑于星期五:二十点 分。
消除文法二义性
S if E then S
| if E then S else S | Other
该文法是一个二义性文法,与之等价的无二义性的 文法如下:
SM|U
M if E then M else M | Other
第十页,编辑于星期五:二十点 分。
句型: 如果有S* ,则称符号串为CFG的句型 。 我们用SF(G)表示文法G的所有句型的集合。
句子: 如果只包含终极符,则称为CFG的句子。
语言: L(G)={ u| S + u ,u VT* }
文法G所定义的语言是其开始符所能推导的所 有终极符号串(句子)的集合。
文法能自动地构造有效的语法分析器,检查源程序是 否符合语言规定的语法形式。
文法定义可以了解程序设计语言的结构,有利于将源程 序转化为目标代码,以及检查出语法错误。
基于文法实现的语言易于扩展
第六页,编辑于星期五:二十点 分。
语言和文法
文法之定义
文法G定义为四元组(VT,VN,S,P) VT是有限的终极符集合 VN是有限的非终极符集合 S是开始符,S VN P是产生式的集合,且具有下面的形式: ,其中,(VTVN)*

第二章形式语言基础习题

第二章形式语言基础习题

⑶ 构造可达非终结符集 VAR={ S ,A ,B },
∴删除不可达非终结符:C,D 后 得:
G`(S): S->aSab|bAB ; A->bB|a ; B->aA|b
谢谢收看!
再见
谢谢
试找出符号串(a)和(A((SaA)(b)))的短语、直接短语 (即 简单短语)和句柄。 【解】 根据文法G[S]: S->(AS)|(b) ; A->(SaA)|(a)
⑴ 因为(a)不是句子,所以没有短语问题。 ⑵ 从语法述上,看(A((SaA)(b)))的短语、直接短语和句柄:
SS (AS)
( AA S )
S iSeS
iS
S 和 iS
iSeS
所以所属 文法是二 义性文法!
【习题 】G(S): S->aAcBe ; A->Ab|b ; B->d ⑴ 证明 = aAbcde 是一个句型; ⑵ 画出句型 的语法树;
⑶ 指出句型 的短语、简单短语和句柄。
第2章 习题解答:
【习题2.12】消除下述文法的直接左递归: G(S): E->E+T|E-T|T

∴ Z => b2n-1 , n≥1
⒉ 正规方程式法: ∵ Z=b|bB, B=bZ 即 Z=b|bbZ
※递推求解 Z=b|bbZ 可得:Z=b2n-1 n≥1
∴ L(G)={ b2n-1 | n≥1 }
第2章 习题解答:
【习题】 文法G[S]: S->(AS)|(b) ; A->(SaA)|(a)
第二章形式语言基础习题
第2章 习题解Байду номын сангаас:
【习题2.3】试求下述文法G(Z)所定义的语言: G(Z): Z->b|bB ,B->bZ

第二章 形式语言基础(1)

第二章  形式语言基础(1)


【注】字母表是符号的有限集;而由字母表中符号通过 字母表是符号的有限集; 是符号的有限集 规则组成的句子的集合(语言 则可能是无限集。 语言), 规则组成的句子的集合 语言 ,则可能是无限集。
2.1.2 规则集
规则集是语言中句子的组成的规律和法则, 规则集是语言中句子的组成的规律和法则,它可 是语言中句子的组成的规律和法则 以通过某种运算,把该语言中的句子产生出来;故而, 句子产生出来 以通过某种运算,把该语言中的句子产生出来;故而, 规则集又称为产生式集 产生式集。 规则集又称为产生式集。
用规则产生句子 用规则产生句子 产生 的过程: 的过程: 从开始符号出发,对符号串中的 开始符号出发, 出发 定义对象,用其规则右部替换 替换之 称为推导 推导) 定义对象,用其规则右部替换之(称为推导);产生 的新符号串仍如此进行, 的新符号串仍如此进行,直到新符号串中不再出现定 义的对象为止,则最终的符号串就是一个句子 句子。 义的对象为止,则最终的符号串就是一个句子。
∵ E =>T =>T*F =>T*(E) =>T*(E-T) =>T*(E=>T*(E+T-T)=>F*(E+T-T)=>i*(E+T-T) =>T*(E+T-T)=>F*(E+T-T)=>i*(E+T=>F*(E+T =>i*(E+T =>… =>i*(i+i-i) =>i*(i+i=> ∴
+ i*(i+iE => i*(i+i-i) 观察推导过程, 观察推导过程,可以 看到: 看到:一旦产生式选择 错了,会导致失败! 错了,会导致失败!
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

符号串集合运算示例(续):
【例2.5】 设 A={a,b}, A* = ? ∵ A* = A0∪A1∪A2∪…∪An∪… A0 ={}; A1 = A ={a,b}; A2 = A.A={a,b}.{a,b}={aa,ab,ba,bb}; A3 = A.A2={a,b}.{aa,ab,ba,bb} ={aaa,aab,aba,abb,baa,bab,bba,bbb}; … ∴ A* = { x | x=(a|b)n ,n≥0 }
2.3
2.3.1
主要语法成分的定义
文法的运算问题
直接推导 算符
文法有两种基本运算:推导,归约。 设 x, y∈(VN+VT)*, A->∈P
Ⅰ.直接推导( => ): xAy => xy 即:指用产生式的右部符号串替换左部非终结符。 + ): + β 加推导( => => (当且仅当=>1=>2=>…=>β) 即:指一步或一步以上的直接推导运算。 * ): * β 星推导( => α => (当且仅当=β或=>1=>2=>…β) 即:指零步或零步以上的直接推导运算。 加推导 算符
根据 语言定义式〖2.1〗, 合法的算术表达式是指:
+ i*(i+i-i) 成立吗? E =>
∵ E =>T =>T*F =>T*(E) =>T*(E-T)
=>T*(E+T-T)=>F*(E+T-T)=>i*(E+T-T) =>… =>i*(i+i-i) 观察推导过程,可

+ i*(i+i-i) E => 以看到:一旦产生式 选择错了,会导致失 败!

规则应用说明示例:
怎样利用上述文法规则表示语言L? 从开始符号出发,对符号串中的定义对象,采 用推导的方法(用其规则右部替换左部)产生新的 S -> aAc 符号串,如此进行,直到新符号串中不再出现定义 A -> bA | 的对象为止,则最终的符号串就是一个句子。 【句子产生过程】(=> 推导算符): 一个句子! 又一个句子!
【注】此文法定义了算术表达式的层次嵌套结构 : 项 因式 表达式 ( 表达式 )
+ * } L(G)={ x | Z x,x∈V => T ※ 算术表达式文法应用示例: 证明 i*(i+i-i) 是文法G(E)的一个句子 (即 合法的算术表达式):
G(E):
E->T |E+T |E-T T->F |T* F |T/F F->i |(E)
即:指零步或零步以上的直接归约运算。 这是相应的算符 ※ 实用中最常见的两种运算: + => 最左推导( ℓ )—每次推导皆最左非终结符优先; + )—每次归约皆最左可归约串优先。 最左归约( => . ℓ
文法运算示例:
【例2.8】 算数表达式文法:
G(E): E->T|E+T|E-T T->F|T*F|T/F F->i |( E )
【注】 ⑴ ⑵
2.1.1
符号串(集合)的运算
这是一种 泛指!
Ⅰ. 符号串的运算
设 , 为两个符号串,则:
1. 连接:• =

a•b=ab
2. 或: |= (或者 ) 3. 方幂: n = … = n-1 = n-1 n个 0 ※ = (空符号串)
第 2 章
形式语言基础
【内容提要】
2.1 2.2 2.3 2.4 2.5 2.6
形式语言是符号串集合 形式语言是由文法定义的 主要语法成分的定义 两类特性文法 文法变换方法 关于形式语言的分类问题
2.1
形式语言是符号串集合
【形式语言】是字母表上的符号,按一定的 规则组成的所有符号串集合。其中的每个符号串 称为句子。 【名词解释】:
2.3
2.3.2
主要语法成分的定义(续1)
三要素!
• 字母表 -- 元素(符号)的非空有限集合; • 符号串 -- 符号的有限序列; • 符号串集合 -- 有限个或者无限个符号串组成 的集合; • 规 则 -- 以某种形式表达的在一定范围内共 同遵守的章程和制度;这里,指符号串的组成 规则。

形式语言概念示例:
两个语言!
【例2.1】
L1={ 00,01,10,11 }; 字母表∑1= {0,1}, 句子有:00,01,10,11
推论:若 A为任一字母表,则 A* 就是该字母 表上的所有符号串(包括空串)的集合。
2.1.2
符号串集合的文法描述
长久以来,探讨符号串集合(即形式语言)的各种 描述方法,一直是语言计算机处理的重要任务之一。
【例2.5】
L ={ abnc | n≥0 }, 字母表:∑= {a,b,c}; 展开:L ={ac,abc,abbc,abbbc, … }

星推导 算符
Ⅱ.直接归约( => .
):
xy => . xAy
即:直接归约是直接推导的逆运算,用产生式的 左部非终结符替换右部符号串。 直接归约 + ): + β 加归约( => 算符 => . . (当且仅当 => . 1 => . 2 => . … => . β) 加归约 即:指一步或一步以上的直接归约运算。 算符 星归约( (当且仅当 星归约 * ): * β => => . . 算符 =β或 => . 1 => . 2 => . … => . β)
最左非终结符 给定一个符号串 i+i*i : 1. 最左推导(从开始符号出发)过程: E => E+T => T+T => F+T => i+T => i+T*F
=> i+F*F => i+i*F => i+i*i
+ => ∴ E ℓ i+i*i
最左可归约串
2. 最左归约(从符号串出发)过程: i+i*i => . F+i*i => . T+i*i => . E+i*i => . E+F*i => . E+T*i => E+T*F => . E+T => . E . + => ∴ i*i+i . ℓ E
① S => aAc => aεc = ac
② S => aAc => abAc => abεc = abc ③ S => aAc => abAc => abbAc => abbc …
+ abnc , n≥0 ∴ S =>
再一个句子!
2.2
形式语言是由文法定义的
什麽是文法 ?
2.2.1
【定义】 文法(grammar)是规则的有限集, 其中的上下文无关文法可定义为四元组: G(Z)=(VN, VT, Z, P) 每个元素
【例2.7】简单算术表达式文法


G(Z)= (VN, VT, Z, P)
VN ={ E(算术表达式),T(项),F(因式)}; VT ={ i(变量或常数),+,-,*,/,(,)}; Z = E ; P :
E -> T | E + T | E - T T -> F | T * F | T / F F -> i | ( E )
VN : VT : Z : P :
非终结符集(定义的对象集,如:语法成分等); 终结符集(字母表); 开始符号(研究范畴中,最大的定义对象); 规则集(又称产生式集); 每个规则
A -> 或者 A -> | 描述符号 : ->(定义为),|(或者是) 文法符号 : Z,A∈VN,,∈(VN+VT)*
【例2.2】
L2={ abmc,bn | m>0,n≥0 } 字母表∑2= {a,b,c}, 句型1: abmc , 有句子: abc, abbc, abbbc,… 句型2: bn ; 有句子: , b, bb, bbb,…
b0=(空符号串),b1=b,b2=bb,b3=bbb,… L1 为有限语言; L2 为无限语言。
A = ℓ A | d A |
※ 求解 I 值步骤:
正规方程式
① 先求解 A: A=(ℓ|d) A , A=(ℓ|d)2 A , … , A=(ℓ|d)n A
代入
A=
得: A= (ℓ|d)n , n≥0
代入 A= (ℓ|d)n , n≥0
② ∵ I=ℓ A | ℓ
得: I = ℓ (ℓ|d)n , n≥0 《标识符》:字母开头的字母、数字序列;

符号串集合运算示例:
【例2.3】 设 A={a,b},B={c,d} 则 A+B={a,b,c,d} 则 AB={xy|xA,yB}={ac,ad,bc,bd} 【例2.4】 设 A={a} 则 A* = A0∪A1∪A2∪…∪An∪… ={}+{a}+{aa}+{aaa}+… ={,a,aa,aaa,…} ={an|n≥0}
右图给出的表示 方法 --文法规则 ; 其中:
S -> aAc A -> bA |
⑴ S,A — 定义的对象(S 句子,最大的定义对象,又 称为开始符号; A为句型aAc的短语), ⑵ a,b,c -- 为字母表∑中的符号;ε- 空符号串。 ⑶ -> ,| -- 为描述符号( -> 定义为; | 或者是)
相关文档
最新文档