第二章形式语言简介
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例2-1 由偶数个0组成的串的语言 规则的自然语言描述方式:
①00是该语言的基本的句子; ②若S是Leabharlann Baidu子,则SS是句子;
形式化的描述方式: ① S→00 ② S→SS
问题:
将产生式S→SS换成 S→0S0或者S→00S
是否还产生相同的语言?
结论:
同一个语言,可以使用不同的产生式组 合来产生。
形式语言的描述方式
① E→ i (i代表单个变量) ② E→EAE ③ E→(E) ④ A→+ ⑤ A→⑥ A→* ⑦ A→/
产生式的个数是有限的,规则是递归 的,因而
所有的小括号匹配的句子(有无限个) 均可以由它们产生,它们组成的集合 就称为一个语言。
S称为非终结符,在推导过程中,可以被 代替的符号。
(和)称为终结符,在推导过程中,不可以 被代替的符号。
→ 是产生式系统的元符号,不属于非终 结符,也不属于非终结符。
如何产生这个语言呢? 即如何产生该语言所有句子呢?
实际上,就是需要给出语言中句子的 构造(形成)规则。
递归定义提供了语言的良好的定义方 式,使得语言中的句子的构造规律较 明显。
可以使用多种方法描述构造规则。
自然语言的描述方式,采用如下的 递归规则:
①( )是该语言的最基本的句子; ②若S是句子,则(S)是句子; ③若S是句子,则SS是句子;
A * = A+ ∪ A0 即 A * = A+ ∪ {ε}
语言的形式定义
设是一个字母表, L*, L称为字母表上的一个语言, wL, w称为语言L的一个句子。
2.1 例子语言
括号匹配串的语言。 该语言是指所有的左括号和右括号相 匹配的串的集合; ( ),(( )),( )( )等等都是该语言的句子 )( ,( ))等等不是该语言的句子。
(4) 用代表两个字符串与的连接 (并置)。
若 = a1a2a3…an, = b1b2b3…bm; 则= a1a2a3…anb1b2b3…bm。 显然,ε=ε=
(5) 用AB代表集合A与B的连接。
A={a1,a2,a3,…,an}, B={b1,b2,b3,…,bm};
AB=
{ a1b1,a1b2,a1b3,…,a1bm, a2b1,a2b2,a2b3,…,a2bm, a3b1,a3b2,a3b3,…,a3bm, …
anb1,anb2,anb3,…,anbm }
注意:
AФ=ФA=Ф。
6)An代表集合A的n次连接: A的n次幂定义为:
➢(1) A0 = {} ➢(2) An = An-1A n 1
7) A*代表集合A上所有字符串的 集合。
即表示集合A中的所有字符串进 行任意次连接而形成的串的集合。
A*称为集合A的闭包(克林闭包)。 A* = A0 ∪ A1 ∪ A2 ∪…∪ An
例1-11 A={0,1}
A0={ε} 即长度为0的0和1组成的串的集 合
A1=A={0,1} 即长度为1的0和1组成的串的集合
A2=AA={00,01,10,11} 即长度为2的0和1组成的串集合
A3=A2A ={000,001,010,011,100,101,110,111}
即长度为3的0和1组成的串的集合
这些规则称为形成规则,根据这些规则, 可以
(1)产生该语言的任意的句子; (2)判断某个串是否是该语言的句子。
例如
可以产生句子(()) 而推断串 (())) 不是句子。
规则(的个数)是有限的,但可以产生无 限个句子和长度无限的句子;
因为规则是递归的。
BNF的描述方式
巴科斯和诺尔采用的巴科斯-诺尔范式(BNF-Backus-Naur Form)描述规则:
第二章 形式语言简介
形式语言和自动机理论中的语言是一 个广泛的概念。
一个字母表上的语言就是该字母表的 某些字符串的集合。
语言中的字符串称为该语言的句子。
语言的的定义可以从两个方面进行: 1)从产生语言的角度; 2)从接收(或识别)语言的角度。
产生一个语言,目的就是根据语言中 的基本句子和句子的形成规则,得到 (产生)该语言所包含的所有句子。
<括号匹配串>::= ( )
<括号匹配串>::= <括号匹配串> <括号匹配串> <括号匹配串>::=(<括号匹配串>)
Chomsky采用的符号化(形式化)的描述 方式,运用如下的规则(这些规则被称 为产生式):
① S→( ) ② S→(S) ③ S→SS
“→”读作“定义为”或者“是” ,
…
A* = A0 ∪ A1 ∪ A2 ∪ …∪ An ={0和1 组成的所有的串} ={w|w是0和1 组成的串}
如果串ω是集合A的闭包中的 串,也称ω是集合A上的串。
对于任何集合A
有(A*)*= A*。
8) A+代表一个集合,称为A的正 闭包,
A+=A∪A2∪A3∪…∪An 。
A * 与 A+
考虑
由奇数个1组成串的语言的产生规则。
例2-2
高级程序设计语言中的包含有+、、*、 /、()的算术表达式(的语言)的产生。
自然语言的描述方式
①单个变量是最基本的句子; ② 若 E 是 一 个 句 子 , 则 EAE 是 一 个 句 子
(其中A代表运算符+、-、*、/) ③若E是一个句子,则(E)是句子;
它的左边和右边分别称为该产生式的 左边和右边;
根据产生式 可以生成任意句子; 可以判断一个串是否为句子(语法分析)。
产生句子的过程为:
从S开始,反复利用产生式的右边代替 产生式的左边(称之为推导过程), 最后,得到匹配的()组成的句子。
例:句子(( ))(( )( ))的产生过程
S =>SS =>(S)S =>(( ))S =>(( ))(S) =>(( ))(SS) =>(( ))(( )S) => (( ))(( )( ))
这是形式语言所研究的问题。
接收一个语言,目的就是使用某种自 动机模型来接收句子,该模型所接收 的所有句子,也形成一个语言。
这是自动机所研究的问题。
1.6 常用术语
(1) 用代表空串,{}代表仅含有
空串的集合。
(2) 用代表空集,表示一个元素 都不包含的集合。
(3) 用代表字母表。
常用术语(续)