形式语言
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A0 = { } An = An-1A n1
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组成的串的集合
(4)
用代表两个字符串与的连接 (并置)。 = a1a2a3…an, = b1b2b3…bm;
若
则= a1a2a3…anb1b2b3…bm。
显然,ε=ε=
用AB代表集合A与B的连接。 A={a1,a2,a3,…,an}, B={b1,b2,b3,…,bm};
(5)
再次强调:
语言就是字母表上的字符串组
成的一个集合。 语言中的字符串称为句子。
文法的作用就是产生一个语言。
定义2-1 短语结构文法(文法)的定义
文法G是一个四元式, G=(∑,V,S,P) ∑ 是一个有限字符的集合 ( 字母表 ) ,它的 元素称为字母或者终结符; V 是一个有限字符的集合 -- 非终结符集合, 它的元素称为变量或者非终结符;
<括号匹配串>::= ( ) <括号匹配串>::= <括号匹配串> <括号匹配串> <括号匹配串>::=(<括号匹配串>)
Chomsky 采用的符号化 ( 形式化 ) 的描述
方式,运用如下的规则(这些规则被称 为产生式): ① S→( ) ② S→(S) ③ S→SS
“→”读作“定义为”或者“是”
推导(派生)的定义2-2
文法G,α和β是集合(∑UV)上的串,
α= pvr ,β=pur(p和r可能同时为ε ), 而 v→u 是文法 G 的一个产生式 , 则称 α 可以 直接推导出β , 记为α=>β ,既 pvr =>pur。
推导的实质
产生式的右边替换产生式的左边。
非终结符代表在推导的过程中可以被
, 它的左边和右边分别称为该产生式的 左边和右边;
根据产生式
可以生成任意句子; 可以判断一个串是否为句子(语法分析)。
产生句子的过程为:
从S开始,反复利用产生式的右边代替 产生式的左边(称之为推导过程), 最后,得到匹配的()组成的句子。
例:句子(( ))(( )( ))的产生过程
S∈V,称为文法的开始符号; P 是有序偶对 (α, β) 的集合,其中 α是集
合 (∑UV) 上的字符串,但至少包含一个 非终结符; β 是集合 (∑UV)* 的元素。一 般,将有序偶对 (α, β) 记为 α→β,称为 产生式;
如果有α
→ε ,称之为空串产生式或者 ε 产生式。 如果有A→B,称之为单产生式。
A2=AA={00,01,10,11}
即长度为2的0和1组成的串集合 A3=A2A ={000,001,010,011,100,101,110,111} 即长度为3的0和1组成的串的集合
…
A* = A0 ∪ A1 ∪ A2 ∪ …∪ An ={0和1 组成的所有的串} ={w|w是0和1 组成的串}
注意
D→0|1|2|3|4|5|6|7|8|9 不能简写为 D→0|…|9
将I的定义加入到表达式中:
E→E+T|E-T|T T→T*F |T/F|F F →(E)|I I→L|IL|ID L→… D→…
2.2 文法和语言的关系
介绍语言的定义。 介绍文法的定义。 介绍文法与语言的关系。
L(G)={ω|S=>*ω,且ω∈∑*}
例
文法
G=({(,)},{S},S,{ S→( ), S→(S), S→SS })
产生语言 L(G)={w|w是括号匹配的串}
注意:
文法G产生语言L(G),必须:
①该文法推导产生的所有串都在该 语言中; ②语言中的任意一个句子都可以由 该文法产生。
一个产生式的左边可能不只一个符号; 第一个产生式的左边只能有一个符号,就 是开始符号S。
文法的作用就是产生一个语言。
约定:如果没有特别说明,则 第一个产生式左边的符号,就是开始符 号,可以不为S; 大写的英文字母代表非终结符; 小写的英文字母a,b,c,d,e和数字 代表终结符;
小写的英文字母u,v,w,x,y,z代 表 终结符串; 小写的希腊字母α,β代表非终结符和终 结符串;
本节介绍Chomsky对文法的分类。
语言是由文法产生的,对语言的
分类,是根据产生语言的文法的 分类而进行的。
0型文法
对于一般的短语结构文法(PSG) , G=(∑,V,S,P) G称为0型文法,对应的L(G)叫作0 型语言或者短语结构语言(PSL)、 递归可枚举集。
1型文法
如果对于任意∈P,均有
如果串 ω 是集合 A 的闭包中的
串,也称ω是集合A上的串。 对于任何集合A * * * 有(A ) = A 。
A+ 代表一个集合,称为 A 的正 闭包, A+=A∪A2∪A3∪…∪An 。
8)
A 与
*
+ A + A ∪ 0 A
A
*
=
即
A *
= A+ ∪ {ε}
语言的形式定义
问题:
将产生式S→SS换成
S→0S0或者S→00S 是否还产生相同的语言?
结论:
同一个语言,可以使用不同的产生式组
合来产生。
考虑
由奇数个1组成串的语言的产生规则。
例2-2
/、()的算术表达式(的语言)的产生。
高级程序设计语言中的包含有 + 、 、 * 、
自然语言的描述方式 ①单个变量是最基本的句子; ②若 E 是一个句子,则 EAE 是一个句子 (其中A代表运算符+、-、*、/) ③若E是一个句子,则(E)是句子;
第二章 形式语言简介
形式语言和自动机理论中的语言是一
个广泛的概念。 一个字母表上的语言就是该字母表的 某些字符串的集合。 语言中的字符串称为该语言的句子。
语言的的定义可以从两个方面进行:
1)从产生语言的角度; 2)从接收(或识别)语言的角度。
产生一个语言,目的就是根据语言中
的基本句子和句子的形成规则,得到 (产生)该语言所包含的所有句子。 这是形式语言所研究的问题。
对于文法G=(∑,V,S,P)
约定:
第一个产生式左边的符号,就是开始 符号(可以不是S); 大写的英文字母代表非终结符。
对于文法(G),只需给出该文法的
所有产生式即可。上例文法可以写成 S→( ) S→(S) S→SS
还可以再简单写成
S→( )|(S)|SS
2.3Chomsky对文法的分类
设是一个字母表,
L*, L称为字母表上的一个语言, wL, w称为语言L的一个句子。
2.1 例子语言
括号匹配串的语言。
该语言是指所有的左括号和右括号相 匹配的串的集合; ( ),(( )),( )( )等等都是该语言的句子 )( ,( ))等等不是该语言的句子。
如何产生这个语言呢?
代替的符号。 (和)称为终结符,在推导过程中,不可以 被代替的符号。 → 是产生式系统的元符号,不属于非终 结符,也不属于非终结符。
例2-1
由偶数个0组成的串的语言 规则的自然语言描述方式: ①00是该语言的基本的句子; ②若S是句子,则SS是句子;
形式化的描述方式:
① S→00 ② S→SS
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) (2)
且i=>i+1;对所有n>i≥1。
任意步推导(包括0步)
y=>*z
表示y可以经过任意步推导出z,即 ①y=z;或者 ②y=>+z。
思考:
对于任意文法G:
S=>*S S=>+S 一定都成立吗?
最左推导和最右推导
如果在推导的过程中,每一步都是将
推导产生的串的最左边的非终结符代 替掉--最左推导 如果每一步都是将推导产生的串的最 右边的非终结符代替掉--最右推导(规 范推导),
||≤||成立,则称G为1型文法, 或上下文相关文法(CSG)。 对应的L(G)叫作1型语言或者上下 文相关语言(CSL)。
1型文法
1型文法产生式的标准形式为:
yAz→yωz 其中:A∈V; y,z∈(∑∪V)*, ω∈(∑∪V)+;
当然,还有其它方式的推导过程
(例如混合)。 而最左推导和最右推导是比较常用 的推导方式。
对于文法G,如果S=>*ω,则称ω是
文法的一个句型, 若ω∈ *, ω称为句子。
定义2-3 语言的定义
给定文法 G ,有开始符号 S ,则把 S 可以
推导出所有句子的集合,称为由文法产 生的语言,记为L(G),即
E→ i E→EAE E→(E) 也可以记为: E→ i|EAE|(E)
注意:
这组产生式没有表示出运算符的优
先级。
表示出运算符的优先级的产生式:
E→E+T|E-T|T T→T*F|T/F|F F→(E)|i
其中:
E代表表达式,T代表项,F代表因子 (E)代表的是带小括号的表达式。 该组产生式表示出先算因子,再*、/, 最后+、-。
接收一个语言,目的就是使用某种自
动机模型来接收句子,该模型所接收 的所有句子,也形成一个语言。 这是自动机所研究的问题。
1.6 常用术语
(1)
用代表空串,{}代表仅含有 空串的集合。 用代表空集,表示一个元素 都不包含的集合。 用代表字母表。
(2)
(3)
常用术语(续)
例2-3
标识符(以字母开头的字母、数字的
串)的产生(仅考虑小写字母)。
I→L I→IL I→ID L→a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t u|v|w|x|y|z D→0|1|2|3|4|5|6|7|8|9
思考:
上例是从标识符的形成角度思考问题。 从标识符的定义角度考虑,则?
形式语言的描述方式 ① ② ③ ④ ⑥ E→ i (i代表单个变量) E→EAE E→(E) A→+ ⑤ A→A→* ⑦ A→/
思考:
字母表为?
若以A开始推导,则产生?
其中 : A→+ , A→- , A→* , A→/ 四个产生式 的左边是相同的符号,可以合并为 A→+|-|*|/ +、-、*、/ 称为A的侯选式。
即如何产生该语言所有句子呢?
实际上,就是需要给出语言中句子的
构造(形成)规则。 递归定义提供了语言的良好的定义方 式,使得语言中的句子的构造规律较 明显。 可以使用多种方法描述构造规则。
自然语言的描述方式,采用如下的
递归规则: ①( )是该语言的最基本的句子; ②若S是句子,则(S)是句子; ③若S是句子,则SS是句子;
替代的符号, 终结符代表在推导的过程中不可以被 替代的符号。
推导的逆过程称为归约。
与pvr =>pur对应,称串pur可以直 接归约成串pvr。
记为pvr <=pur。
多步推导(至少一步)
y=>+z 表示y可以经过多步推导出z,即
存在串的序列1,2,3 ,…,n ; 有y=1 ,z= n ,
这些规则称为形成规则,根据这些规则,
可以 (1)产生该语言的任意的句子; (2)判断某个串是否是该语言的句子。
例如
可以产生句子(())
而推断串 (())) 不是句子。
规则(的个数)是有限的,但可以产生无
限个句子和长度无限的句子; 因为规则是递归的。
BNF的描述方式
Байду номын сангаас
巴科斯和诺尔采用的巴科斯 - 诺尔范式( BNF-Backus-Naur Form)描述规则:
S =>SS =>(S)S =>(( ))S =>(( ))(S) =>(( ))(SS) =>(( ))(( )S) => (( ))(( )( ))
产生式的个数是有限的,规则是递归
的,因而 所有的小括号匹配的句子(有无限个) 均可以由它们产生,它们组成的集合 就称为一个语言。
S称为非终结符,在推导过程中,可以被