第二章 形式语言理论
第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课件

表示 ,例如上例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章形式语言概论

,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章 编译基础-形式语言与有穷自动机

句型、推导
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.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 文法的形式定义(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章_形式语言的基本知识

符号:字母表中的元素 例: 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,…}
形式语言理论

特点
形式语言与自然语言有两个重要的区别。形式语言的界限是明确的,而自然语言的界限往往不明确。因为自 然语言有许多方言和习惯用法,而且处于不断发展之中。其次,自然语言不管如何庞大,它总是有限的。形式语 言则以无限的语言为主要研究对象。例如,所有由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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
描述的1型语言为L1(G[S])={anbncn | n1}
3.2型文法(上下文无关)
若文法G=(VN,VT, P, S)中的每一条规则的形式为: A β 其中AVN , β(VN∪VT)* , 则该文法G为2型文法。相 应的语言称为2型语言。
例如:文法G=(VN,VT, P, S),其中VN={A,B,S} VT={a,b}
1.0型文法
如果对于文法G,P中每个规则具有下列形式: α→β 其中α∈V+ ,β∈V*,则该文法G为0型文法。相应
的语言称为0型语言。
例如:文法G=(VN,VT, P, S),其中VN={A,B,S} VT={0,1}
P={ S→0AB,1B→0,B→SA|01,A1→SB1,A0→S0B } 描述的 0 型语言为 L0(G[S])={ }
符号串及其运算
由字母表中的符号组成的任何有穷序列。
例如:0,00,10是字母表∑={0‚1}上的符号串 a,ab,aaca是∑1={a‚b,c}上的符号串
符号串中的符号是有序的,顺序不同,意义不同。
例如: ab和ba不同
不含任何符号的符号串称为空串,用ε表示。 符号串长度: 符号串中含有符号的个数。
例如:文法G: S→0S1, S→01
S0S1 00S11 03S13 … 0n-1S1n-1 0n1n L(G)={0n1n|n≥1}
文法G生成的每个终结符号串都在L(G)中,L(G)
中的每个串确实能被G生成。文法一旦确定,语言也
就唯一,语言可由不同的文法表示。
2.语法树
句子 主语 代词 They 系词 are 名词 连接词 students and 表语 名词 teachers 定语 前置词 of 冠词
则 AB = ab0,ab1,cde0,cde1
显然 {ε}A = A{ε} = A 注意:{ε}并不等于空集合{ }
4.符号串集合的方幂
设A是符号串的集合,则称An为符号串集A的方 幂,其中n是非负整数。 A0 ={ε} A1 = A A2 = A A An = AA......A(n个)
例如: X= {abc}
例如:They are students and teachers of the Physics
名词
the
Department.
名词
Physics
Department
它的结点由符号组成。根结点对应于开始符号。 只有非终结符号对应的结点有子结点。并且,一个 结点和它的子结点分别对应于文法中的一个产生式 的左部和右部。 作为识别句子的辅助工具,语法树可以表示句 子的结构。 直观地描述上下文无关文法的句型推导过程。 给定文法G=(VN,VT,P,S),对于G的任何句型都能构 造与之关联的语法树。
的完整形式及推导。
2. 设有文法G[A1]: S → A B,A → a A | a,B → b B | b,写出该文法的完整形式及推导。
2.4.语言和语法
1.句型、句子和语言 设有文法G[S],若符号串α是从开始符推导出来 的,即 S =>*α ,且α∈V*,则称α是文法G的句型。
若α仅由终结符组成,即 S =>*α ,且α∈VT*,则
对文法G中任何规则A,我们有A,即推导 的依据是规则。
2.3 文法的分类
对文法中的规则施加不同限制,将文法和语言
分为四大类:
0型文法(PSG): 0型语言或短语结构语言。
1型文法(CSG):1型语言或上下文有关语言。
2型文法(CFG):2型语言或上下文无关语言。 3型文法(RG):3型语言或正则(正规)语言。
VN,VT和P是非空有穷集。
VN∩VT=φ。
V=VN∪VT,V称为文法G的字母表。
VN={A} VT={0,1} P: A→ 0 | 1 | A0 | A1 S=A
例如:文法 G=(VN,VT,P,S )
2. 推导和直接推导
α→β是文法G的产生式,若有v,w满足: v=γαδ,w=γβδ, 其中γ,δ∈V* 则称v直接推导出w,或w直接归约到v,记作vw。
P={S→aB|bA, A→a|aS|bAA,B→b|bS|aBB } 描述的2型语言为L2(G[S])={x|x{a,b}+ 且x中a和b的 个数相同}
4.3型文法(右线性文法和正规文法)
若文法G=(VN,VT, P, S)中的每一条规则的形式为:
Aa或 AaB
其中A,BVN , aVT* , 则该文法G为3型文法。相应 的语言称为3型语言。
例如: a1=a a2=aa a0=ε
3.符号串集合的乘积
若集合A中所有元素都是某字母表上的符号 串,则称A为字母表上的符号串集合。
符号串集合A和B的乘积定义为: AB ={xy|x∈A且y∈B},即AB是由A中的串x 和B中的串y连接而成的串xy组成的集合。
例如:集合A = ab,cde B = 0,1
是组成语言的基本符 号,是一个语言的不 可再分的基本符号, 通常用小写字母表示。
P(Production):产生式(规则)集合。
S:开始符号或识别符号。
是一个非终结符,且 至少要在一条产生式 的左部出现。
P中产生式(重写规则)形如: A→α|β
其中A∈VN且至少含一个非终结符,α,β∈V*。
X0 ={ } ,X1 ={abc} ,X2 = {abcabc}
5.符号串集合的正闭包
Σ+ = Σ1∪Σ2∪Σ3∪…称为Σ的正闭包。
+ 表示上的除ε外的所有有穷长串的集合。
例如:设A={ a, b },则: A+={ a, b, aa, ab, ba, bb, aaa, aab, …}
6.符号串集合的自反闭包
语法树的相关概念
结点:每个树的结点对应于一个符号。结点的名 字就是该符号。
边:两个结点之间的连线。 根结点:没有边进入的结点。 分支:某个结点向下射出的边和其结点称为分支。
末端结点:没有向下射出的边的结点成为末端结 点。在相对于句型的语法树中,末端结点可能是非 终结符号。
语法树的特征
例如: |abc|=3 | ε|=0
1.符号串的连接
设x、y是符号串,它们的连接是把y的符号写在 x的符号之后得到的符号串xy。
例如: x=ST,y=abu ,则 xy=STabu 显然εx = xε=x
2.符号串的方幂
把 符 号 串 a 自 身 连 接 n 次 得 到 的 符 号 串 an = aa…aa。
无需考虑A 在上下文中 的出现情况 产生式全部 是规定形式
3型文法
(右线性文法)
如何判断4种文法
1型文法:|β|≥|α|≥1,规则左部至少有一个非
终结符; 2型文法:规则左部是单个非终结符; 3型文法:看格式。
例3:试分析书中P22的例2.6、2.7、2.8、2.9、
2.10的文法。
练习: 1. 设有文法G[A]: A→yB,B→xB|x,写出该文法
语法:赋值语句由一个变量,后随一个赋值号
“=”,其后面再跟一个表达式构成;
语义:首先计算语句右部表达式的值,然后把所得
结果送给左部变量中;
语用:赋值语句可用来计算和保存表达式的值。
形式语言
用一组数学符号和规则来描述语言的方式称为形
式描述,而把所用的数学符号和规则称为形式语言。
形式语言:只是从语法上研究语言。它是抽象的
将A替换成b 时,必须考 虑A的上下 文
(上下文有关文法)
α=r1Ar2,β=r1br2
A∈VN, α,β∈V* b∈V+
1型语言(上下 文有关语言)
2型文法
(上下文无关文法)
A→β,A∈VN , β∈V* A→aB 或 A→a,
A,3型语言
a∈VT,正规文法
或 *
+ 若有v w 或 v=w, * 则记为v w,v广义推导出w,w广义规约到v(可
以包含0步推导)。
三种推导的比较
直接推导()的长度为1。 直接推导序列( +)的长度n≥1。 广义推导( *)的长度≥0。
推导和规则的区别
形式上的区别:推导用“”,规则用“”。
称α是文法G的句子。
所有的句子一定是句型,句型不一定是句子。
例如:文法G[S]: S→0S1, S→01
S 0S1 00S11 000S111 00001111 句型:S,0S1,00S11,000S111,00001111 句子:00001111
语言:由文法G生成的语言记为L(G),它是文法G的一 切句子的集合,即 L(G)={x|S =>+ x,且 x∈VT* }
第二章
形式语言概论
语言成分
语言和文法
文法的分类 语言和语法 文法和语言的一些特性 分析方法简介
2.1 语言成分
对程序设计语言的描述是从语法、语义和语用
三个因素来考虑。
语法:是对语言结构的定义。
语义:是描述了语言的含义。
语用:则是从使用的角度去描述语言。
例1: 写出赋值语句 s=2*3.1416*r*(r+h)的非 形式化的描述。
数学系统,用于模拟程序设计语言的语法,或者是 并不很成功地模拟自然语言(如英语的语法)。
形式语言理论是编译理论的重要基础,它主要研
究组成符号语言的符号串的集合及它们的表示法、 结构与特性。
字母表和符号
字母表:元素的非空有穷集合,记为∑。
例如:∑={0‚1} ∑1={a‚b,c}
字母表中至少包含一个元素。 字母表中的元素,可以是字母、数字或其他符号。 不同的语言有不同的字母表。 符号:字母表中的元素称为符号或字符。