第二章形式语言理论

合集下载

第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
文法分类的意义
文法分类对于实现程序设计语言的编译 程序具有重要意义。

形式语言理论

形式语言理论

形式语言理论形式语言理论(formal language theory)用数学方法研究自然语言(如英语)和人工语言(如程序设计语言)的产生方式、一般性质和规则的理论。

形式语言是模拟这些语言的一类数学语言,它采用数学符号,按照严格的语法规则构成。

从广义上说,形式语言是符号取自某个字母表的字符串的集合。

如同自然语言具有语法规则一样,形式语言也是由形式文法生成的。

一个形式文法是一个有穷变元集合,这些变元也称为非终结符或语法范畴。

每个变元都可以用来定义语言,定义方式可以是递归的,即通过一些称为终结符的原始符号,加上变元自身,递归地加以定义。

和变元有关的规则称为生成式,生成式决定了语言是如何构造出来的。

一个典型的生成式表示:给定变元所代表的语言包含这样一些字符串,它们是通过连结运算,将另外某些变元语言中的字符串和若干终结符连结起来而得到的。

形式文法被严格地定义为四元组G=(V,T,P,S),其中V和T分别是变元和终结符的有穷集合,并且V和T分别是变元和终结符的有穷集合,并且V和T没有公共元素,即V∩T=Ø。

S是一个特殊变元,称为开始符号。

P是生成式的有穷集合,生成式的基本形式是:a→β,这里a和β,这里a和β都是(V∪T)*中的元素,即它们都是由变元和终结符组成的符号串,但要求a至少含有一个非终结符。

在形式文法定义中,生成式集合P是至关重要的。

在对使用符号的惯例作某些约定后,仅仅考查生成式,就能推断出一个文法的变元、终结符和开始符号,故可以通过列出生成式来定义一个形式文法。

形式文法G=(V,T,P,S)产生的形式语言记为L(G)。

L(G)中的字符串ω都具有如下特点:①该字符串仅由终结符组成,即ω∈T*;②该字符串能由开始符号S派生出来,即从S出发,通过应用零个或多个P中的生成式,由S可以推导出ω。

根据P中生成式a→β的特点,可以将形式文法及其产生的形式语言分类,构成所谓的形式语言谱系。

形式语言理论中重点研究四类文法和语言:①0型文法。

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

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

第二章形式语言的基本知识第二章形式语言的基本知识2-1什么是形式语言2-2字母表和符号串的基本概念2-3用文法产生法描述语言2.3.1通过文法产生语言的方式2.3.2为已知的语言构造相应的文法2-4句型分析2.4.1短语和简单短语2.4.2文法的二义性和语言的二义性2-5文法和语言的分类2-6文法的其他表示方法2-7C--语言的形式定义2-8小结2-1什么是形式语言2-2字母表和符号串的基本概念2-3用文法产生法描述语言2.3.1通过文法产生语言的方式2.3.2为已知的语言构造相应的文法2-4句型分析2.4.1短语和简单短语2.4.2文法的二义性和语言的二义性2-5文法和语言的分类2-6文法的其他表示方法2-7C--语言的形式定义2-8小结2- 1什么是形式语言一、形式语言的提出目标程序源程序编译程序如何确切地描述或定义高级程序设计语言形式语言2-1什么是形式语言一、形式语言的提出形式语言是研究符号的语言,它仅考虑符号间的关系,不考虑含义。

即用数学方法(主要是代数方法)对语言进行形式化描述。

从非形式化的角度来讲,语言是人们交流思想的工具,从语言学本身来说,也是一门古老的科学,在很早以前人们就用数学方法开始对语言学进行研究。

1847年,俄国数学家布拉库夫斯基就用概率论进行语法词源及语言历史比较研究。

1904年,波兰语言学家指出,语言学家不仅要掌握初等数学而且还要掌握高等数学。

1931年,俄国数学家就用概率论研究俄语元音字母和辅音字母序列。

特别是1946年电子计算机问世以来更加促使数学和语言学结合研究。

2-1什么是形式语言一、形式语言的提出1956年,28岁的N.Chomsky(乔姆斯基)在《信息论杂志》上发表了《语言描写的三个模型》,他首次采用Markov模型来描写自然语言,对于有限状态模型、短语结构模型和转换模型等三个模型,从语言学和数学的角度进行了理论上的分析,建立了形式语言理论,具有划时代意义。

编译原理 形式语言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

第二章 形式语言基础

第二章 形式语言基础
1
第二章 形式语言基础知识
§2.1 引言
一、形式语言提出 二、语言描述方法 八、 递归文法 九、短语和简单短语 十、最左推导和最右推导 十一、文法二义性
§2.2 用文法生成法对语言 进行描述
一、巴科斯范式 二、语法和语义 三、语法树
§2.4 语法分析初步
一、自顶向下语法分析 二、自底向上语法分析
§2.3 形式语言基本概念和 术语
§2.1 引言
一、形式语言提出 二、语言描述方法 八、 递归文法 九、短语和简单短语 十、最左推导和最右推导 十一、文法二义性
§2.2 用文法生成法对语言 进行描述
一、巴科斯范式 二、语法和语义 三、语法树
§2.4 语法分析初步
一、自顶向下语法分析 二、自底向上语法分析
§2.3 形式语言基本概念和 术语
9
3. 自动机识别法:用自动机对语言中的句子进行识别,自动 机是描述离散变量的一个系统(数学模型),因在形式语言中 称为识别器,也可看成是一个识别程序。不同语言对应不同自 动机,对应某个语言的自动机能接受该语言的句子,否则不接 受。
下面我们着重讨论用文法生成法来描述语言。
10
第二章 形式语言基础知识
三、语法树
除了上面可以根据语言语法规则来推导出句子,还 可以用图解形式来表示。以图解(树)形式来描述句子 语法结构关系,称语法树。
26
句子 the man has a book的推导过程及对应的语法树
<句子>
27
句子 the man has a book的推导过程及对应的语法树
<句子> <主语> <谓语>
16
巴科斯范式是描述语法规则的一种表示方法,它是由巴科斯 为了描述 ALGOL 语言在 ALGOL60 报告中首先提出的。采用 这种形式定义语法规则,可以用简洁的公式把各种语法规则 严格而清晰描述出来。例如,在高级语言中大家所熟知的 〈标识符〉这种语法成分,它用巴科斯范式描述为: 〈 标识符〉∷=〈字母 〉|〈 标识符 〉〈字母〉|〈标识符〉 〈数字〉 〈字母〉∷= A|B|C|D|…|Z 〈数字〉∷= 0|1|2|…|9 这样便刻画出了〈标识符〉是以字母开始的一串字母和数字

形式语言概论.

形式语言概论.

第二章 形式语言概论
本章主要介绍形式语言理论中的一些最基 本的概念和基础知识,它是学习以后各章 节的基础。 大多数程序设计语言的单词和语句是由正 规文法和上下文无关文法来描述的。 有穷自动机是词法分析的理论基础。
2.1 语言成分
一个语言的成分包括字母表 (Alphabet),文法(Grammar)以及它的语 义。 本节将主要讨论字母表和符号串的一 些基本概念。
字母表与符号 :字母表是元素的非空有穷集合。
字母表中的元素称为符号。举例说明。
符号串及其运算 :
① 符号串的概念 ③ 符号串的连接。 ⑤ 符号串的方幂。 ⑦ 符号串集合的正闭包。 闭包。 ② ④ ⑥ ⑧
符号串的长度。 符号串集合的乘积。 符号串集合的方幂。 符号串集合的自反
形式语言
形式语言是字母表上按某种规则构成的所 有串的集合,这些串称为句子或字。对于 一个具体的语言,都有语法和语义两个方 面,形式语言是指不考虑语言的具体意义。 形式语言的表示方法 有穷语言:枚举法 无穷语言:文法
3型文法(右线性文法和正规文法)
在正规文法中,P中的每个产生式(S→例外, S为文法的开始符号)只有两种形式:A→a , A→aB 。其中 A,BVN ,aVT。此外,如果 S→是P中的一个产生式,那么S不能出现在任何产 生式的右边。 例 正规文法G5(S)(十进制实数) SdB|+A|-A|· G AdB|· G BdB|· H|d GdH HdH|d 其中d代表十进制数字。
2型文法(上下文无关文法)
在1型文法的产生式中上下文1和2用空符号 串代替,则有以下形式的产生式称为2型文法: A→ 其中,AVN,(VN∪VT)+。 例 2型文法G3=(VN,VT,P,E) 其中, VN={E,T,F} VT={+,*,(,),i } P={E→E+TT,T→TFF,F→(E) i } 3型文法(右线性文法和正规文法)

第2章 形式语言概述

第2章 形式语言概述
<动词> ::= 是|学习 <直接宾语> ::= <代词>|<名词>
软件学院
编译原理
2.2.2 文法的形式定义(1)
非终结符
出现在规则的左部,用<>括起来,表示一定语法概念的词,
用VN表示
终结符
语言中不可再分割的字符串(包括单个字符组成的串)
用VT表示 V= VN U VT
注:1型文法意味着,对非终结符进行替换时务必考虑上下文,并 且,一般不允许替换成 ,除非是开始符号产生
软件学院
编译原理
2型文法(上下文无关文法)
设G=(VN,VT,P,S),若P中的每个产生式α→β满足: α是一个非终结符, β∈(VN∪VT ) *,则此文法称为2 型文法或上下文无关文法。有时将2型 文法的产生式表示为形如:A→β,其中A∈VN 。 也就是当用β取代非终 结符A时,与A所在的上下文无关。上下文无关文法有足够的能力描述现 今的程序设计语言。 识别上下文无关语言的自动机称为下推自动机。它是。缩写为PDA。
3型语言2型语言1型语言0型语言
软件学院
编译原理
2.2.6 文法分类的意义
一个文法实际上是某种语言的一个简明、确切的描述,它表示了 该语言中所允许的一类语法结构。从一个文法能推导出多个终结 符的句子。但是知道了如何去构造属于某一个语言的一个合法串 只是问题的一个方面。同时我们还要有能力判定一个串是否合法 。也就是说,我们需要确定这个给定串的推导序列。如果从文法 出发找不到这个推导序列,则该串就是非法的。 程序设计语言的词法分析属于正规文法,与局部语法相关的部分 属于上下文无关文法,与全局语法和语义有关的部分属于上下文 有关文法。

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

第2章_形式语言的基本知识
C语言的字母表 A={a,b,…,0,1,…,9, +,-,×,_/, ( , ), =… if, else,for...}
符号:字母表中的元素 例: 0,1 符号串:由字母表中的符号组成的任何有穷序列
例:0,1, 01, 10, 011,.. 空符号串:无任何符号的符号串,用ε表示
编译原理
5 2020年6月1日
• [例]: x=abc的前缀有哪些? 符号串集合:若集合A中的一切元素都是某字母表上的符号 串,则称A为该字母表上的符号串集合。 例:={a,b,c} A={ a,aa,ac}
• 空集Φ、空串ε和{ε} ?
编译原理
8 2020年6月1日
符号串的运算
符号串的连接运算 符号串x和y的连接:是把y的符号写在x的符号之后 得到的符号串xy 例如x=00,y=11,则xy=0011 对于任意一个符号串s,有εs= sε=s
[例]: x=ab y=cd xy=?
编译原理
9 2020年6月1日
符号串的幂运算
符号串自身连接n次得到的符号串sn 定义为 ss…ss ,包括n个s,称为符号串的幂运算
s0=ε,s1=s,s2=ss,……
设s=01,则
s0=ε
s1=01
s2=0101
……
• [例]: x=a x2=?

x=ab x2=?
Σ的闭包* 表示上的一切符号串(包括ε)组成的集合
Σ的正闭包+ 表示上的除ε外的所有符号串组成的集合
* {} 2 ......
* {} * 2 3 ......
例:Σ={a,b} Σ*={ε,a,b,aa,ab,ba,bb,aaa,aab,…} Σ+={a,b,aa,ab,ba,bb,aaa,aab,…}

《编译原理》.第二章形式语言与自动机理论基础(PDF)

《编译原理》.第二章形式语言与自动机理论基础(PDF)
(2) (r)(s) (3) ( r )* (4) ( r )
正规表达式表达的语言 {}, {} {a} L( r ) , L(s) L( r ) L(s) L( r ) L(s) ( L( r ))* L( r )
9
2、有关正规式及正规集的说明
注意:
定义中的括号主要用于规定运算顺序。
一般规定优先级从高到低依次为 *, • , |, 可省略某些括号
A→x A→y 21
例子: 求正规式(a|b)(a|b|0|1)*对应的正规文法 G[S]:
S→aA|bA A→aA|bA|0A|1A|ε
22
练习: 求正规式a(a|d)*对应的正规文法
G[S]:
S→aA A→aA|dA|ε
23
正规式与有限自动机
ƒ定理2.4
⑪ 字母表∑上的确定的有限自动机M所接受的语言 L(M)是∑上的一个正规集;
正规文法转换成正规式
对于G = (VT,VN,S,P),存在一个Σ=VT上的正规 式r:L(G)=L(r)
步骤:
利用转换规则将每条产生式改写成正规式 用代入法解正规式方程组,最后剩下一个开始符号定义的正
规式,其中不含非终结符
文法产生式 正规式
规则1 规则2
A→xB B→y
A→xA|y
A=xy A=x*y
G[S]:
S→aA|a A→aA|dA|a|d
对应的正规式:
a(a|d)*
20
正规式转换成正规文法
步骤:
构造产生式S →r,并将S定义为G的开始符号
不断利用如下规则做变换,直到每个产生是最多含 有一个终结符为止
规则1
规则2 规则3
正规式 A=xy
A=x*y A=x|y

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

第章形式语言与自动机理论
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)*

形式语言理论

形式语言理论

特点
形式语言与自然语言有两个重要的区别。形式语言的界限是明确的,而自然语言的界限往往不明确。因为自 然语言有许多方言和习惯用法,而且处于不断发展之中。其次,自然语言不管如何庞大,它总是有限的。形式语 言则以无限的语言为主要研究对象。例如,所有由n个ɑ构成的字(n≥1)组成一个语言Lɑ={ɑ,ɑɑ,ɑɑɑ,…},它 就是无限的。因此,研究形式语言遇到的第一问题就是描述问题。描述的手段必须是严格的,而且必须能以有限 的手段描述无限的语言。
上述定义的4种语言类具有依次包含关系,即对于i=0,1,2,在不考虑空字符串时,i型语言都真包含i+1型 语言。
变换文法描述
周期时控文法乔姆斯基用变换文法作为形式语言的描述手段。例如,语言Lɑ可用如下的变换文法描 述:{S→ɑ,S→ɑS}。这个文法由两条变换规则组成。每一步变换(也叫推导)都用一条变换规则的右部替换它的 左部。S是出发点,代表Lɑ中任何一个可能的句子。例如,句子ɑɑɑɑɑ可以这样推导出来: S→ɑS→ɑɑS→ɑɑɑS→ɑɑɑɑS→ɑɑɑɑɑ。推导共分五步。前四步用了第二条规则,第五步用了第一条规则。按这个 办法,可以生成Lɑ中的所有句子,即整个Lɑ语言。
历史发展
形式语言的研究始于20世纪初,把形式语言用于模拟自然语言是50年代中期的事。当时,许多数理语言学家 致力于用数学方法研究自然语言的结构,尤其是1946年电子计算机出现以后,人们很快想到用计算机来作自然语 言的机械翻译。可是这项工作在取得一些初步的成功以后便停滞不前,翻译的质量很难提高,主要是因为当时对 自然语言结构的理解太表面化。1956年,N.乔姆斯基发表了用形式语言方法研究自然语言的第一篇文章。他对语 言的定义方法是:给定一组符号(一般是有限多个),称为字母表,以∑表之。又以∑表示由∑中字母组成的所 有符号串(或称字,也包括空字)的集合。则∑的每个子集都是∑上的一个语言。例如,若令∑为26个拉丁字母 加上空格和标点符号,则每个英语句子都是∑中的一个元素,所有合法的英语句子的集合是∑的一个子集,它构 成一个语言。乔姆斯基的语言定义方法为人们所公认,一直沿用下≤|β|,即得到一型文法。由一型文法生 成的语言称一型语言。一型文法也可以这样定义:它的所有产生式均取γAδ→γωδ的形式,其中γ,ω,δ∈ (V∪∑),|ω|>0,A∈V。其直观意义是:在左有γ,右有δ的环境下,A可以被ω所替换。因此,一型文法和一 型语言又分别叫上下文有关文法和上下文有关语言。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.3 文法的分类
Chomsky对文法中的规则施加不同限制,将文
法和语言分为四大类:

0型文法(PSG) 0型语言或短语结构语言
1型文法(CSG) 1型语言或上下文有关语言
2型文法(CFG) 2型语言或上下பைடு நூலகம்无关语言
3型文法(RG)3型语言或正则(正规)语言
0型文法

如果对于某文法G,P中每个规则具有下列形式: α→β 其中α∈V+ , β ∈ V*,则该文法G为 (Chomsky)0型文法或短语结构文法。相应的语言 称为0型语言或短语结构语言。
3、作用:直观地描述上下文无关文法的句型推导 过程。给定文法G=(VN,VT,P,S),对于G的任何句 型都能构造与之关联的语法树
语法树的相关概念





结点:每个树的结点对应于一个符号。结点的名字 就是该符号。 边:两个结点之间的连线。 根结点:没有边进入的结点。 分支:某个结点向下射出的边和其结点称为分支。 (父子结点,兄弟结点) 子树:语法树的某个结点和它向下射出的部分 末端结点:没有向下射出的边的结点成为末端结点。 在相对于句型的语法树中,末端结点可能是非终结 符号。

说明: V=VN∪VT,V称为文法G的字母表 P中产生式形如:α→β,其中α∈V+且至少含一个非终结 符,β∈V* VN,VT和P是非空有穷集 VN∩VT=φ S是一个非终结符,且至少要在一条产生式的左部出现 非终结符代表一个语言中的语法成分,如<赋值语句>, 它是构成程序的一个语法成分,这个符号本身不会在程 序中出现,而终结符是组成程序的具体的符号。
2型文法 (上下文无关文法) 3型文法 (正规文法)
A→β,A∈VN , β∈V*
A→aB 或 A→a, A,B∈VN ,a∈VT
四种文法之间的逐级“包含”关系
0型文法 1型文法 2型文法 3型文法
2.4.语言和语法
1、句型和句子 设有文法G[S],若符号串α是从开始符推导出来 的,即 S =>* α ,则称α是文法G的句型。若α仅由 终结符组成,即 S =>* α ,且α∈VT*,则称α是文法 G的句子。 例 文法G[S]: S→0S1, S→01 因为S 0S1 00S11 000S111 00001111 所以S,0S1 ,00S11 ,000S111,00001111都是G的句 型,00001111是G的句子 由规范推导所得的句型称为规范句型
构造语法树

方法:把开始符号做 为根结点,对每一个 直接推导画一个分支, 分支的名字是直接推 导中被替换的非终结 符号,直到再无分支 可画结束。

例如:推导
abccdd
S AB AcBd Accdd
S
A
B
a
b
c
B
d
c
d
语法树的构造过程
S AB AcBd Accdd abccdd
S S S
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=ε
(1)
A A
B
(2)
B
(3)
c B d
S
S
A
B
A
B
c
B
d
a
b
c
B
d
(4)
c 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.5文法的二义性(Ambiguity)
文法G:E→E+E|E×E|(E)|i 句子 i×i+i 对应的语法树

符号串集合的方幂: 设A是符号串的集 合,则称Ai为符号串集A的方幂,其中i 是非负整数。具体定义如下: A0 ={ε} A1 = A , A 2 = A A AK = AA......A(k个)
5.
集合的闭包 闭包 集合Σ的闭包Σ *定义如下: Σ * = Σ 0∪ Σ1∪ Σ 2∪ Σ 3∪… 例:设有字母表Σ={0,1} 则Σ*=Σ0∪Σ1∪Σ2∪… ={ε,0,1,00,01,10,11,000,…} 即Σ*表示Σ上所有有穷长的串的集合。
或+
若存在v =u0 u1 ... un=w, (n>0) 则称v + w,v推导出w,或w归约到v(至少有1步推 导),这个直接推导序列的长度为n。
* 3、广义推导: 或 *
若有v + w 或 v=w, 则记为v * w,v广义推导出w,w广义规约到v(可以 包含0步推导)
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 显然 {ε}A = A{ε} = A

正闭包
Σ+ = Σ1∪Σ2∪Σ3∪…称为Σ的正闭包。 + 表示上的除ε外的所有有穷长串的集合

自反闭包Σ* = Σ0∪Σ+
Σ+ = ΣΣ* = Σ* Σ
2.2文法和语言
1、文法定义: 文法G(Grammar)定义为四元组(VN,VT,P,S) VN (Nonternimal):非终结符集 VT (Terminal):终结符集 P (Production):产生式(规则)集合 S:开始符号或识别符号
2. 推导和规范推导: α→β是文法G的产生式,若有v,w满足: v=γαδ,w=γβδ, 其中γ,δ∈V* 则称v直接推导出w,也称w直接归约到v, 记作 v w 直接推导就是用产生式的右部替换产生式的左 部的过程 直接归约就是用产生式的左部替换产生式的右 部的过程
+ 2、直接推导序列:
三种推导的比较

直接推导()的长度为1 直接推导序列( +)的长度n≥1 广义推导( *)的长度≥0
规范推导与规范规约

考虑两种特殊推导:最左推导和最右推导,即 对于一
个推导序列中的每一步直接推导,都是对最左(最右) 非终结符进行替换。

最右推导也称规范推导,它的逆过程称为最左规约, 也称规范规约。
因此我们重点研究2型文法。
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
2. 语法树
1、定义:语法树是这样的一个语法结构,它的结 点由符号组成。根结点对应于开始符号。只有 非终结符号对应的结点有子结点。并且,一个 结点和它的子结点分别对应于文法中的一个规 则的左部和右部。 2、引入语法树的意义:作为识别句子的辅助工具, 语法树可以表示句子的结构。这一点对于其后 的语义分析有非常重要的意义。
E E + T E
E + T
T
T
×
F
T
T
×
F
从语法树中看不出句型中的符号被替代的顺序
2.5 文法和语言的一些特性 1、无用非终结符:某个非终结符不出现在文法的 任何一个句型中,并且不能从它推出终结符号串。含
有该非终结符的规则即不可终止。
2、不可达文法符号:如果一个非终结符不出现在该文
法的任何其他的产生式的右部。该非终结符为不可达文 法符号,含有该非终结符的规则即不可达规则
第二章
形式语言理论
形式语言

Chomsky于1956年提出了一种用来描述语言的数学 系统。人们把用一组数学符号和规则来描述语言 的方式称为形式描述,而把所用的数学符号和规 则称为形式语言。

形式语言,只是从语法上研究语言。它是抽象的 数学系统,用于模拟程序设计语言的语法,或者 是并不很成功地模拟自然语言如英语的语法。 形式语言理论是编译理论的重要基础,它主要研 究组成符号语言的符号串的集合及它们的表示法、 结构与特性。
2型文法(上下文无关文法)
它是1型文法的特例,对任一产生式α→β,都 有 α∈VN , β∈(VN∪VT)* S→AB A→BS|0 B→SA|1
例 文法G[S]:
2型文法产生式的一般形式是: A→,它表示不管 A的上下文如何都可把A替换成,因此被称为上下文 无关文法。 通常程序设计语言的文法,可用2型文法来描述,
在程序设计语言中,正规文法通常用来描述单词的 结构。
文法类别 0型文法 (短语文法) 1型文法 (上下文有关文法)
产生式形式
产生的语言
说明 对产生式基 本无限制
α→β 0型语言 α∈V+ ,且至少含一 个非终结符,β∈V* α→β, |β|≥|α|
1型语言(上下 将A替换成 文有关语言) 时,必须考 虑A的上下 文 2型语言(上下 无需考虑A 文无关语言) 在上下文中 的出现情况 3型语言 (正规语言) 产生式全部 是规定的形 式
相关文档
最新文档