形式语言自动机(2)—— 文法的一般理论
- 形式语言自动机课程笔记
- 学到编译原理的时候用到了文法相关概念,复习自动机正好把以前的笔记整理一下也贴上来
一、问题的提出
- 语言是给定字母表上字符串的一个集合
- 任何有意义的语言,都是符合某些规则要求的字符串的集合
- 我们把这种有意义的语言称作
文法
- 文法可以用自然语言描述,如英语语法
- 文法也可以用严格的规则形式描述,比如C语言文法,这种文法称为
形式文法
二、形式文法和形式语言
(1)形式文法
-
文法
:用有限个规则描述无穷多字符串的集合 -
形式文法(G)
:一个文法G是一个四元组 G = ( V, T, P, S ),其中:- V:是
变元
的有限集。 - T:是
终结符
的有限集。 - P:是
产生式
的有限集,其中每个产生式都是α→β
的形式- 其中,且其中至少有一个V中的符号;。
- S:称为文法G的
开始符号
,决定这组规则最终要定义什么,S∈V。
示例:
- V:是
-
文法表示方式的约定:
符号 | 表示 |
---|---|
变元 | 大写字母ABCD…除非特殊说明,否者S表示开始符号 |
终结符号 | 小写字母abcde/数字123… |
终结符串 | 小写字母uvwxyz |
变元和终结符混合串 | 希腊字母αβγ… |
-
若有若干产生式左部一致,记为
-
上述约定下,写一个文法只需写出产生式集合
示例:
-
可以表示为:S→aSb|ab -
给出文法G,它的产生式是:
- S→aB∣bA
- A→a∣bAA∣aS
- B→b∣aBB∣bS
则L(G)是由相等个数a和b组成的(次序不限)所有串的集合 (可以用归纳法证明)
-
- 字符串/文法推倒与规约
-
最左(右)推倒
:对于推导α→β,如果每一步都是对α中的最左非终结符进行替换的,则我们称这种推导为最左推导
,如果每一步都是对α中的最右非终结符进行替换的,则我们称这种替换为最右推导
, 例如:
-
(2)形式语言
-
形式语言
:给出文法 G=(V,T,P,S),它所产生的语言记作L(G)
,由下述集合定义:
L(G)是由G中开始符号S推导出来的全体终结符号串所构成的集合,也就是所有句子的集合。
三、文法等价
-
文法等价
:对于两个不同的文法如果,则称文法与等价。 - 在两个四元组的各对应部分中,只要有一点点不同,就应当看作是不同的文法,在这个意义下,任何一个语言都可以有无穷多个文法(都等价)产生它。
四、文法的乔姆斯基分类
对于文法 G=(V,T,P,S)按以下方法分为四类:
-
0型文法
,或短语结构文法(PSG)
:- 产生式不加另外的限制。
- 产生
短语结构语言(PSL)
-
1型文法
,或上下文有关文法(CSG)
:- 产生式α→β都满足 |α|≤∣β|
- 产生
上下文有关语言(CSL)
-
2型文法
,或上下文无关文法(CFG)
:- P中每个产生式都具有如下形式:A→β,β∈(V∪T)*,A∈V
- 产生上
下文无关语言(CFL)
-
3型文法
,或正则文法(RG)
:- P中每个产生式都具有如下形式:A→a或A→aB,a∈T∪{ε},AB∈V
- 产生
正则语言(RL)