第2章+文法和语言
第2章 文法和语言的基本知识
例如, ∑′={0,1}是一个字母表,由0 和1两个元素组成。 不同的语言有不同的字母表,如英文的字 母表是26个字母、数字和标点符号的集合,C语 言的字母表是由字母、数字和若干专用符号组 成。 2. 符号(字符) 字母表中的元素称为符号,或称为字符。 例如,前述例子中,a,b,c是字母中∑ 中的符号;0和1是字母表∑′中的符号。
例如:用A表示∑ + ,用式子A→0表示符号串 0∈A或A生成符号串0,符号“→”读做“生成”或 “由……组成”。则集合A可表示成 A→0 A→1 A→A0 A→A1 显然,由A生成的符号串属于∑+,这就是用文 法描述语言。
编译原理授课教案
2.2.2 文法的形式定义
1. 规则 规则也称产生式,它是一个符号与一个符号 串的有序对(A,β),通常写做 A→β(或A::=β) 其中,A是规则左部,它是一个符号;β是 规则右部,它是一个符号串;“→”和“::=”表 示“定义为”或”生成”,意思是左部符号用右 部的符号串定义或左部符号生成右部是集合, 而{ε}表示由空符号串ε所组成的集合,但 这样的集合不是集合φ={}。 3. 符号串的幂运算 设x是符号串,则x的幂运算定义为 x0=ε X1= x x2 = xx ………… xn = xxxx……xx=xxn-1 ( n > 0)
编译原理授课教案
编译原理授课教案
试设计一个表示所有标识符的文法。 例2.2 :
分析 题意是用文法定义标识符,必须确 定P中规则。为了设计出一组规则,首先应搞清 楚集合中符号串的结构特征。标识符的定义是 字母或以字母开头的字母数字串,结构如图:
字母 字母或数字串
用I代表标识符,L代表字母,D代表数字, 则定义标识符的方法为 G = (VN ,VT, P , S)
编译原理第二版作业答案_第2章
第二章 文法和语言p48 4、6(6)、11、 12(2)(6)、18(2)4 证明文法G=({E,O},{(,),+,*,v ,d},P ,E )是二义的,其中P 为 E → EOE | (E) | v | d O → + | * 证明:因为E=〉 EOE =〉EOEOE =〉EOEOv =〉EOE+v=〉EOv+v =〉E*v+v =〉v*v+v , 句子v*v+v 有两棵不同的语法树所以文法G 是二义的。
问题:1)只有文字说明,比如v*v+v 有两棵语法树,但没有画出语法树或者最左(最右)推导过程2)给出的是不同句子(v*v+d v+v*d )的语法树 6、已知文法G :EEEE OO v*v+ vE EE E O O v+v* v〈表达式〉∷=〈项〉|〈表达式〉+〈项〉〈项〉∷=〈因子〉|〈项〉*〈因子〉〈因子〉∷=(〈表达式〉)| i试给出下述表达式的推导及语法树(6)i+i*i推导过程:〈表达式〉=〉〈表达式〉+〈项〉E=〉E+T =〉〈表达式〉+〈项〉*〈因子〉=〉E+ T*F=〉〈表达式〉+〈项〉* i =〉E+ T*i=〉〈表达式〉+ 〈因子〉* i =〉E+F*i=〉〈表达式〉+ i* i =〉E+i*i=〉〈项〉+ i* i =〉T +i*i=〉〈因子〉+ i* i =〉F +i*i=〉i +i*i =〉i +i*i 共8步推导语法树:〈表达式〉+〈因子〉〈项〉i 〈因子〉i〈项〉〈项〉〈因子〉i*11、一个上下文无关文法生成句子abbaa的推导树如下:(1)给出该句子相应的最左推导和最右推导(2)该文法的产生式集合P可能有哪些元素?(3)找出该句子的所有短语、简单短语、句柄。
(1)最左推导:S=〉ABS=〉aBS=〉aSBBS=〉aBBS=〉abBS=〉abbS =〉abbAa=〉abbaa最右推导:S =〉ABS=〉ABAa=〉ABaa=〉ASBBaa=〉ASBbaa=〉ASbbaa=〉Abbaa=〉abbaa(2)该文法的产生式集合P可能有下列元素:S→ABS | Aa|εA→a B→SBB|b(3)因为字符串中的各字符有相对的位置关系,为了能相互区别,给相同的字符标上不同的数字。
第2章 前后文无关文法和语言(姚版)
第2章 前后文无关文法和语言
终结符号是指语言不可再分的基本符号,通常 是一个语言的字母表;终结符代表了语法的最小元 素,是一种个体记号。非终结符号也称语法变量, 它代表语法实体或语法范畴;非终结符代表一个一 定的语法概念,因此,一个非终结符是一个类、一 个集合。例如,在程序语言中,可以把变量、常数、 “+”、“*”等看作是终结符,而像“算术表达式” 这个非终结符则代表着一定算术式组成的类,如 i*(i+i)、i+i+i等;也即每个非终结符代表着由一 些终结符和非终结符且满足一定规则的符号串组成 的集合。
第2章 前后文无关文法和语言
“我是大学生”。是汉语的一个句子 〈句子〉∷=〈主语〉〈谓语〉 〈主语〉∷=〈代词〉|〈名词〉 〈代词〉∷=我|你|他 〈名词〉∷=王明|大学生|工人|英语 〈谓语〉∷=〈动词〉〈直接宾语〉 〈动词〉∷=是|学习 〈直接宾语〉∷=〈代词〉|〈名词〉
第2章 前后文无关文法和语言
{ } ......
* 2
* { } * 2 3 ......
第2章 前后文无关文法和语言
例:Σ={a,b} Σ*={ε,a,b,aa,ab,ba,bb,aaa,aab,…} Σ+={a,b,aa,ab,ba,bb,aaa,aab,…}
第2章 前后文无关文法和语言
文法和语言的形式定义
如何来描述一种语言?
如果语言是有穷的(只含有有穷多个句子),可以 将句子逐一列出来表示 如果语言是无穷的,找出语言的有穷表示。语言的 有穷表示有两个途经: - 生成方式 (文法):语言中的每个句子可以用 严格定义的规则来构造。 - 识别方式(自动机):用一个过程,当输入的一 任意串属于语言时,该过程经有限次计算后就会停 止并回答“是”,若不属于,要么能停止并回答 “不是”,(要么永远继续下去。)
编译原理第二章 文法和语言资料
第二章文法和语言本章讲述目前广泛使用的上下文无关文法。
即用上下文无关文法作为程序设计语言语法的描述工具。
阐明语法的一个工具是文法。
本章将介绍文法和语言的概念。
本章重点:上下文无关文法及其句型分析中的有关问题。
第一节文法的直观概念当我们表述一种语言时,无非是说明这种语言的句子,如果语言只含有有穷多个句子,则只需列出句子的有穷集就行了,但对于有无穷句子的语言来讲,存在着如何给出它的有穷表示的问题。
以自然语言为例,人们无法列出全部句子,但是人们可以给出一些规则,用这些规则来说明(或者定义)句子的组成结构,比如:“我是大学生”。
是汉语的一个句子。
汉语句子可以是由主语后随谓语而成,构成谓语的是动词和直接宾语,我们采用EBNF来表示这种句子的构成规则:〈句子〉∷=〈主语〉〈谓语〉〈主语〉∷=〈代词〉|〈名词〉〈代词〉∷=我|你|他〈名词〉∷=王明|大学生|工人|英语〈谓语〉∷=〈动词〉〈直接宾语〉〈动词〉∷=是|学习〈直接宾语〉∷=〈代词〉|〈名词〉“我是大学生”的构成符合上述规则,而“我大学生是”不符合上述规则,我们说它不是句子。
这些规则成为我们判别句子结构合法与否的依据。
一旦有了一组规则以后,我们可以按照如下方式用它们去推导或产生句子。
我们开始去找∷=左端的带有〈句子〉的规则并把它表示成∷=右端的符号串,这个动作表示成:〈句子〉⇒〈主语〉〈谓语〉,然后在得到的串〈主语〉〈谓语〉中,选取〈主语〉或〈谓语〉,再用相应的规则∷=右端代替之。
比如,选取了〈主语〉,并采用规则〈主语〉∷=〈代词〉,那么得到:〈主语〉〈谓语〉⇒〈代词〉〈谓语〉,重复做下去,我们得到句子:“我是大学生”的全部动作过程是:〈句子〉⇒〈主语〉〈谓语〉⇒〈代词〉〈谓语〉⇒我〈谓语〉⇒我〈动词〉〈直接宾语〉⇒我是〈直接宾语〉⇒我是〈名词〉⇒我是大学生符号⇒的含义是,使用一条规则,代替⇒左边的某个符号,产生⇒右端的符号串。
显然,按照上述办法,不仅生成“我是大学生”这样的句子,还可以生成“王明是大学生”,“王明学习英语”,“我学习英语”,“他学习英语”,“你是工人”,“你学习王明”等几十个句子。
文法和语言21文法的基本概念一个程序设计语言是一个记
1.L∪D 2.LD 3.L4 则分别代表什么集合?
4. L(L∪D)* 5. D+ 6.D+∪L*
1.字母或数字(包括ε)的集合
2.由字母开头后面跟一个数字的集合
3.由4个字母组成的字符串的集合
4.由字母开头后面是字母数字(可省略)的集合
5.数字串集合
A
11
6.数字串和字母串集合(包括ε)
约定:当对符号串z=xy的头感兴趣而对其余部分不感兴趣时, 可以采用省略写法:z=x···;如果只是为了强调x在符号串 z中的某处出现,则可表示为:z=···x···;如果只是为 了强调x在符号串z中的末尾出现,则可表示为:z=···x;
A
9
显然:
Σ1是字母表中的所有单个字符组成的字符串
Σ2是所有由字母表中二个的字符组成的字符串
Σ3是所有由字母表中三个的字符组成的字符串
Σn是所有由字母表中长度为n的字符串集合
定义 2.11
A的闭包
A*=A0∪A1∪A2∪···
A的正闭包 A+= A1∪A2∪A3∪···
显然A+=AA*=A*A A*=A0∪A+
语法上的正确不能保证语义上的正确213推导与递归定义220如果每次推导最左非终结符称最左推导记为定义221如果每次推导最右非终结符称最右推导最右推导又称为规范推导记为由最右推导得出的句型称为右句型又称规范句型递归规则与递归文法由于语言通常是无穷的而文法是有限的用有限的文法定义无穷的语就必须使用递归定义
A
2
则: <句子>=><主语><谓语>=><冠词><形容词><名词><谓语>
第2章文法和语言终
第2章文法和语言本章目的:为语言的语法描述寻求工具, 工具要对程序设计语言给出精确无二义的语法描述。
(严谨、简洁、易读)形式工具:形式语言抽象地定义为一个数学系统。
“形式”:语言的所有规则只以什麽符号串能出现的方式来陈述2.1 语言概述和文法的直观概念2.2 符号和符号串2.3 文法和语言的形式定义2.4 文法的类型2.5 上下文无关文法及语法树2.6 句型的分析2.7 文法实用性的一些说明2.1 语言概述和文法的直观概念一、基本概念语言:是由句子组成的集合,是由一组符号所构成的集合。
汉语:所有符合汉语语法的句子的全体。
英语:所有符合英语语法的句子的全体。
程序设计语言:所有该语言的程序的全体。
二、语言研究的内容语法:每个句子构成的规律/每个程序构成的规律。
表示构成语言句子的各个记号之间的组合规律。
在形式语言理论中,阐明语法的工具是文法。
语义:每个句子的含义/每个程序的含义。
表示各个记号的特定含义。
(各个记号和记号所表示的对象之间的关系)。
语用:每个句子和使用者的关系/每个程序和使用者的关系。
表示在各个记号所出现的行为中,它们的来源、使用和影响。
三、文法的直观描述采用EBNF来表示句子的构成规则。
先给定如下一组规则:〈句子〉∷=〈主语〉|〈谓语〉〈主语〉∷=〈代词〉|〈名词〉〈代词〉∷=我|你|他〈名词〉∷=王明|大学生|工人|英语〈谓语〉∷=〈动词〉|〈直接宾语〉〈动词〉∷=是|学习〈直接宾语〉∷=〈代词〉|〈名词〉例:“我是大学生”。
具体操作如下:〈句子〉⇒〈主语〉|〈谓语〉⇒〈代词〉〈谓语〉⇒我〈谓语〉⇒我〈动词〉〈直接宾语〉⇒我是〈直接宾语〉⇒我是〈名词〉⇒我是大学生文法:就是这样一些规则的有穷集合,它是以有穷规则集来刻划无穷句子集合的工具。
2.2 符号和符号串一、基本概念字母表:元素的非空有穷集,记为Σ符号:字母表中的元素符号串:符号的有穷序列空符号串:什么符号也不含的符号串,记为ε例:Σ={a,b,c,d,……z}a、b、c……都称为符号hello、stri、aezfg、main都是Σ上的符号串。
文法和语言
因为εx=xε=x,所以{ε}A= A{ε} =A
9. 方幂运算:
符号串集合的方幂 有任一符号串集合A,定义 : A0 ={ε}, A1=A, A2=AA, A3=AAA, … An=An-1A=AAn-1 =A A … A n个 其中:n≥0 符号串的方幂 有任一符号串X,定义: X0 = ε X1 = X X2=XX X3=XXX … Xn=XX … X n个
语言概述
语言是由句子组成的集合,或说是由一组符号串所构成的集合。 汉语——所有符合汉语语法的句子的全体 英语——所有符合英语语法的句子的全体 程序设计语言——所有该语言的程序的全体 每个句子构成的规律 研究语言 每个句子的含义 每个句子和使用者的关系 研究程序设计语言 每个程序构成的规律 每个程序的含义 每个程序和使用者的关系 语言研究的三个方面 语法 Syntax 语义 Semantics 语用 Pragmatics
4.符号串集合:由符号串构成的集合。
二、符号串和符号串集合的运算
5.符号串相等:若x、y是集合上的两个符号串,则x=y iff(当且仅当)组成x的每一个符号和组成y的每一个符号依 次相等。 6.符号串的长度:x为符号串,其长度|x|等于组成该符 号串的符号个数。 例: x=STV , |x|=3 特别地, |ε| =0
当我们表述一种语言时,无非是要说明这种语言的句子,如果语言只 含有穷多个句子,则只需列出句子的有穷集就行了,但对于含有无穷句子 的语言来讲,就存在着如何给出它的有穷表示的问题。 以自然语言为例,人们无法列出全部句子,但是人们可以给出一些规 则,用这些规则来说明(或者定义)句子的组成结构,比如汉语句子可以是 由主语后随谓语而成,构成谓语的是动词和直接宾语。 任何语言均可看作一个集合。这个集合中的每个元素都是在一定符号集 (字母表)上的一个符号串。 对于自然语言来说,它们是定义在某个字母表上的句子的集合。 对于程序语言来说,它们也是定义在某个字母表上的句子的集合。这里 的句子,就是一个源程序。 通常,源程序是由关键字、标识符、常数、运算符以及一些界限符组成。 这些语法成分统称为单词或单词符号。 单词符号是语言中具有独立意义的最基本单位。语言的单词符号是由词法 规则所确定的,即词法规则规定了单词符号的形成规则。
2文法和语言的形式定义
语言及其文法
计算机科学系 李静
本章主要内容
语言概述 基本定义 文法(Grammar)的定义 CFG的分析树(Parse Tree) 文法的分类 文法的构造
VN={N, L,D} VT={a, b, c, 1, 2, 3} P:
N →L N →NL N →ND L →a|b|c D →1|2|3
L代表<字母> D代表<数字> N代表<标识符>→β1,α→β2…,α→βn 可以简单地记为: α→β1|β2|…|βn 读作:α定义为β1,或者β2,…,或者βn。 并且称它们为α产生式。β1,β2,…,βn 称为候选式(Candidate)。
例:
变量=表达式 if 条件then 语句 while条件do 语句
语言概述
形式化语言理论
用数学方法研究自然语言(如英语)和人工语言(如 程序设计语言)的产生方式、一般性质和规则的理论。
描述形式——文法
语法——语句
语句的组成规则 描述方法:BNF范式、语法(描述)图
词法——单词
单词的组成规则 描述方法:BNF范式、正规式
(1) ε是Σ上的一个符号串。 (2) 若x是Σ上的符号串,而a是Σ的元素,则xa是Σ上的符 号串。 (3) y是Σ上的符号串,当且仅当它由(1)和(2)导出。
由字母表中的符号所组成的任何有穷序列被称之 为该字母表上的符号串。
基本定义
符号串的长度: x=abcd ,|x|=4 空符号串:ε 符号串的头尾:z=xy 符号串的固有头: z=xy,y≠ ε 符号串的固有尾: z=xy,x≠ ε
编译原理第二章_文法与语言
(8)符号串集合的自反闭包
设符号串集合为A,则A的自反闭包记为A* ,定义为: A* = A0 ∪ A1 ∪ A2∪… ∪ An
即A* = A0 ∪ A+ = {ε} ∪ A+ 例如: A= {a,b},则 A*={ε, a, b, aa, ab, ba, bb, aaa, …… }
AB={xy|x∈A,y∈B} 如:若A={ab,c}, B={d,efg},则AB={abd,abefg,cd,cefg} 特别地,有:{ε}A=A{ε}=A
• 空集φ 表示不含任何元素的空集{ }。 有: φA=A φ= φ
<注>请区别: ε,{},{ε}三种表示方法的含义
12
(5) 符号串的方幂
a1 an 表示:从a1出发经过一步或若干步,可推导出an 。
定义2.5 长度为n(n≥0)的推导 a1 an 表示:从a1出发经过0步( a1 =an )或若干步,可推导
出an 。
22
2.2.3 句型、句子、语言
1.句型:设G[S]是一个文法,S是它的开始符号,若S α , 则称α是文法G[S]的句型。
5
(1) <句子>::= <主语> <谓语>
推导过程(3/5)
(2) <主语>::= <代词> | <名词> (3) <代词>::= 我 | 你 | 他 (4) <名词>::=王明| 大学生|工人|英语
(5) <谓语>::=<动词> <直接宾语>
编译原理讲义(第二章文法与语言)
语言的定义(短语,简单短语)
• 短语:对于文法G[Z],如果Z =>* xUy, U=>+ u。显然,w=xuy是一个句型。我 们称u是句型w中相对于U的短语。 • 简单短语:在上面的定义中,如果U ::= u是G的一个规则,那么,u是句型w中相 对于U的简单短语。 • 例子:P22页例2.13。
语言的定义(短语,句柄)
• 注意:在寻找一个句型的短语(或简单 短语)时,必须要求将这个短语规约为 相应的非终结符号后所得到的符号串仍 然是句型。 • 句柄:一个句型的最左简单短语称为该 句型的句柄。 • 定义句柄的原因:在自底向上识别一个 符号串时,总是规约这个句柄。
语言的定义(文法的语言)
• 文法的语言:一个文法G[Z]的语言,用 L(G[Z])表示,定义如下: L(G[Z]) = {x | Z=>* x 并且 x VT+} • 一个文法的语言就是该文法的所有的句子的 集合。 • 文法的语言是所有终结符号串所组成的集合 的子集,一般是真子集。
• 定理2.7 对于CFG,如果存在句型 x=x1x2…xn且x=>*y,必然存在y1,y2,…,yn 使得: xi=>*yi且y= y1y2…yn。 • 定理2.8 如果:x=>*y,如果x的首符号是 终结符号,则y的首符号也是终结符号; 反之,如果y的首符号是非终结符号,那 么x的首符号也是非终结符号。
形式语言与程序设计语言
• 虽然程序设计语言的语法都使用上下文 无关文法来描述,但是通常语言都是上 下文相关的。 • 使用上下文无关文法描述语言的原因是: 存在高效处理上下文无关文法的技术。
关于CFG的进一步讨论
• Chomsky范式:所有的上下文无关语言 都可以用如下形式的文法产生:所有的 规则都形如:U ::= VW 或者 U::=T,其 中U,V,W为非终结符号,T为终结符号。 • Greibach范式:所有上下文无关语言都能 由这样的文法产生:U::=Tu,这里U为非 终结符号,T为终结符号。
编译原理课件CHAPTER2(GrammarandLanguage)
例如: Σ={a,b} a, b, aa, ab, aabba…都是Σ上的符号串 ε是任何Σ上的符号串
在语言理论中,符号串又称为: 句子(sentence)、字(word)
4
2019/2/24
2.1 串和语言
符号串的长度
符号串中包含符号的个数
符号串 s 的长度记为 |s|
例,对于字母表{a,b,c},aab 是其上的一个符号 串, | aab |=3
2019/2/24 1
Chapter2 Grammar and Language
三.教学内容 串和语言(Strings and Languages ) 文法和语言的定义 (Definitions of Grammar and Language) 文法和语言的分类 (Classification of Grammar and Language) 分析树与句型 (Parse Tree and Sentential form)
Chapter2 Grammar and Language
一.教学目的 掌握文法、语法树、推导、归约、句子、语言、规范推导与归 约、短语、简单短语、句柄、二义性定义,了解文法的分析过程、 文法实用限制、语言分类等。 二.教学重点和难点 重点掌握: 1.串和语言的概念。 2.文法和语言的定义。 3.文法和语言的分类。 4.分析树与句型。 难点: 1.文法和语言的分类。 2.分析树与句型。
2019/2/24
2
2.1 串和语言
字母表(alphabet):
字母表是符号(symbols)的非空有穷集合,
用∑表示
符号:可以相互区别的记号(元素)
不同的语言有不同的字母表
计算机程序编译原理 第2章 形式语言概论
文法举例
例2.6 1型文法G6=(VN ,VT ,P,S),其中VN={S,X,Y,Z}, VT={x , y , z} , P={S→xSYZ|xYZ, xY→xy, yY→yy, yZ→yz, ZY→YZ, zZ→zz} 例2.7 2型文法G7=(VN,VT,P,S),其中VN={S,T},VT={a, b,c, d},P={S→aTd, T→bT|cT|b|c } 例2.8 2型文法G8=(VN,VT,P,B),其中VN={B},VT={(,) }, P={B→(B)|BB|( )} 例2.9 2型文法G9=(VN,VT,P,S),其中VN={S},VT={0,1 }, P={S→0S1, S→01} 例2.10 正规文法G10=(VN,VT,P,A),其中VN={A, B, C, D}, VT={x, y, z },P={A→xB|yC, B→zB|y|yC, C→xD, D→yD|x }
文法和语言的几点说明
(1) 文法中某些非终结符不在任何规则的右部出现,该非 终结符称为不可到达的; (2) 文法中某些非终结符,由它不能推出终结符号串来, 称为不可终止的(无用非终结符); (3)可空终结符,可以用于消除左递归; (4)一个文法,如果它的一个句子有两棵或两棵以上的语法 树,则称该句子具有二义性。如果一个文法含有二义性的 句子,则该文法具有二义性。形如U→U的产生式。会引起 文法的二义性。
推导
定 义 2.3 G= ( VN, VT, P, S ) , α→β 是 文 法 G 的 产 生 式 , γ,δ∈V* , 若 有 v, w 满 足 : v=γαδ, w= γβδ, 则 说 : v (应用规则α→β)直接产生w 或说:w是v的直接推导 或说:w 直接归约到v 记作 v ⇒w。 例 G[S]:S→0S1, S→01 直接推导: 0S1⇒0011 (v=0S1,w=0011,使用规则S→01,γ=0,δ=1) S ⇒0S1 (v=S,w=0S1,使用规则S→0S1,γ=ε,δ= ε ) 0S1⇒00S11 (v=0S1,w=00S11,使用规则S→0S1,γ=0,δ=1) 定义2 定义2.4 v⇒+u 若存在v =α0 =>α1=>…=>αn=u, (n>0) 则称u为u的一个推导,记为v⇒+u。 定义2 定义2.5 v⇒*u 表示v⇒+u 或 v=u
第二章 文法与语言
• 符号串:由字母表中的符号所组成的任 何有限序列。
• 例:设A={a,b,c}为一字母表,则a, b,c,aa,……为符号串。
• 字母表上全部符号串所组成的集合为无限 集。
• 符号串的长度:符号串中所含符号个数。 例如:符号串abc长度为3,记为|abc|=3,不 包含任何符号的符号串称为空串,记为ε 。
2.2.2 文法和语言的形式定义
• 我们可以从产生语言的角度给出文法与
语言的形式定义。
• 考虑描述英语句子语法的方法,我们是 用语法规则来描述英语句子的构成:
①.<句子>::=<主语短语><动词短语>
②.<主语短语>::=the<名词> ③.<动词短语>::=<动词><宾语短语>
④.<宾语短语>::=<冠词><名词>
• 符号串的前缀、后缀及子串:设 X 为一
符号串,其尾部删去若干符号(包括 0
个)之后剩余部分称为 X 的前缀。类似,
可定义X的后缀。取掉X的前缀和后缀,
剩 余 部 分 称 为 X 的 子 串 。
• 符号串的连接与方幂:设X,Y为符号串,
Y直接拼接在X之后所的符号串被称为符号
串X,Y的连接。记为XY。一符号串X与自
集合,则A的方幂运算可定义如下:A0
={ε } ,A1 =A,A2=AA,……An =A An-1= An-1A,n>0。 A的正闭包: A+
A的自反传递闭包: A*
• 可以证明:符号串x∈A+,当且仅当存在某 个n,有x∈An;符号串y∈A*,当且仅当 y=ε 或y∈A+;
《编译原理》第2章 文法和语言的基本知识
文法和语言的基本知识
教学目标
1. 本章是编译原理课程的理论基础,要求掌握形 式语言的基本术语和概念,重点掌握短语、直接 短语、句柄、素短语、规范推导、规范归约。 2. 掌握文法和语言的定义,文法的二义性与递归 性的判断方法及句型的分析方法,文法分类。 3. 熟练使用文法定义程序设计语言的单词和语法 成分。 4. 对形式语言的理论有一个初步认识。
2013年8月16日
符号串集合的闭包运算
设A是符号串集合,定义 A+= A1 ∪ A2 ∪ A3 ∪……∪ An ∪…… 称为集合A的正闭包。 A*= A0 ∪A+ 称为集合A的闭包。 例:A={x,y} A+=? {x,y, xx,xy,yx,yy , xxx,xxy,xyx,xyy, ……}
A1 A A A2 A A3 A
2013年8月16日
文法的直观概念:以汉语中的“我是大学生”为例。
①一组终结符号 采用BNF来表示汉语句子的构成规则为: (语言的基本符号) 〈句子〉::=〈主语〉〈谓语〉 ②一组非终结符号 〈主语〉::=〈代词〉|〈名词〉 (语法单位) ③一个开始符号 〈代词〉::=我|你|他 文法的四部分 (一个特殊的非终结 〈名词〉::=王明|大学生|工人|英语 符号,最感兴趣的语 〈谓语〉::=〈动词〉〈直接宾语〉 法单位) 〈动词〉::=是|学习 ④一组规则(也称产 生式或产生规则) 〈直接宾语〉::=〈代词〉|〈名词〉 根据上述规则,“我是大学生”的构成符合上述规则,而“我 大学生是”不符合,我们说它不是句子。这些规则成为我们判别 句子结构合法与否的依据。换句话说,这些规则看成是一种元语 言,用它描述汉语。这种的语言描述成为文法。
说明: (1) 有若干语法成分同时存在时,我们总是从最左的语法成 分进行推导,这称之为最左推导,类似的有最右推导(一般推 导)。 (2) 从一组规则可推出不同的句子,如以上规则还可推出 “大象吃象”、“大花生吃象”、“大花生吃花生”等句子, 它们 在语法上都正确,但在语义上都不正确。
形式语言 第2章 文法
2020/11/5
h
16
2.2 形式定义
• 约定
⑴ 对一组有相同左部的产生式 αβ1,αβ2 ,… ,αβn 可以简单地记为: αβ1|β2|…|βn 读作:α定义为β1,或者β2,…,或者βn。并
且称它们为α产生式。β1,β2,…,βn称为 候选式(candidate)。
2020/11/5
h
17
2020/11/5
h
7
2.1 启示
<动词>走在 <动词>进入 <形容词短语>很抽象的 <名词短语>北京 <名词短语>哈尔滨 <名词短语>形式语言
2020/11/5
h
8
2.1 启示
<名词短语>中国
<名词短语>教育
<名词短语>集合
<名词短语> WTO
<名词短语>美丽的城市
<名词短语>祖国的首都
<名词短语>数学的基础
中有时候又称之为语法范畴。
20/11/5
h
12
2.2 形式定义
– T——为终极符(terminal)的非空有穷集。 a∈T,a叫做终极符。由于V中变量表 示语法范畴,T中的字符是语言的句子中
出现的字符,所以,有V∩T=Φ。
– S——S∈V,为文法G的开始符号(start symbol)。
2020/11/5
<名词短语>社会发展的前面
<句号>。
2020/11/5
h
9
2.1 启示
• 表示一个语言,需要4种东西 ⑴形如<名词短语>的 “符号”
第二章 前后文无关文法和语言
“我大学生是”是否为<句子>?
英语句子
sentence –> <subject> <verb-phrase> <object> subject –> This | Computers | I verb-phrase –> <adverb> <verb> | <verb> adverb –> never verb –> is | run | am | tell object –> the <noun> | a <noun> | <noun> noun –> university | world | cheese | lies This is a university. Computers run the world. I am the cheese. I never tell lies.
S→bA
A→aA|a 它定义了一个什么语言呢? 从开始符S出发,我们可以推出如下句子: SbA ba
SbA baA baa
可以写为:L(G1)={ban|n≥1}
SbA baA … baa…a
2.5 语言和文法的形式定义
1、上下文无关文法
一个上下文无关文法G定义为四元组(VN,VT,P,S ) 其中:
Σ*包含Σ上的所有符号串, Σ+包含Σ上除 空串ε外的任意符号串。
四、语言上的有关运算
1、语言:由句子组成的集合,为一符号串集合。
即:字母表上的一个语言是上的一些符号串的集合, 是*的一个子集。 L={S|S∈*} 例如:字母表Σ ={a,b} 集合 {w|w∈Σ *且w=anbn,n≥1}为上的一个语言。 集合 {w|w∈Σ *且w=an,n≥1} 为上的一个语言。 {}、{ε }都是语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
规范推导
定义2.5-句型、句子
x,则称x是文法G的句型; 设有文法G。若S
*
若S x,且x∈VT*,则称x是文法G的句子。
*
规范句型
由规范推导所得的句型称为规范句型。
定义2.6- 语言
由文法G生成的语言记为L(G),它是文法G的一切 句子的集合。
定义2.7-文法等价
每个结点都有一个标记,此标记是V的一个符号。 根的标记是S。 若一结点n至少有一个它自己除外的子孙,并且有 标记A,则肯定A∈VN。 如果结点n有标记A,其直接子孙结点从左到右的次 序是n1,n2,…,nk,其标记分别为A1,A2,…, Ak,那么A→A1A2…Ak一定是P中的一个产生式。
符号串的方幂
符号串集合及其运算
若集合A中的一切元素都是字母表上的符号串,则 称A为该字母表上的符号串集合。 合并:字符串集合A和B的合并A∪B={α|α∈A或 α∈B}。 乘积:字符串集合A和B的乘积AB={αβ|α∈A且 β∈B}。 显然{ε}A=A{ε}=A。 幂:An=An-1A=AAn-1(n>0),并规定A0={ε}。 正闭包:A+ =A1∪A2∪…∪An∪…。 闭包:A*=A0∪A+。 显然Σ*=Σ0∪Σ1∪Σ2∪…∪Σn ∪… 。 Σ*表示Σ上的所有有穷长的串的集合
第2章
文法和语言
一个程序设计语言是一个记号系统,它的完整 定义应包括两个方面:
语法 指一组规则,用它可以形成和产生一个合适的程序。 语义 静态语义 是一系列限定规则,并确定哪些合乎语法的程序是合 适的; 动态语义 也称作运行语义或执行语义,表明程序要做些什么, 要计算什么。
文法是阐明语法的一个工具
一棵语法树表示了一个句型的种种可能的(但未 必是所有的 )不同推导过程,包括最左(最右 )推 导。从左到右读出推导树的叶子标记连接成的 文法符号串为G的句型。
若一个文法存在某个句子对应两棵不同的语法 树,则称这个文法是二义的。或者说,若一个 文法存在某个句子有两个不同的最左(右)推 导,则称这个文法是二义的。
若L(G1) = L(G2),则称文法G1和G2是等价的。
2.4 文法的类型
Chomsky分类
0型文法– 短语文法
对任一产生式α→β,都有α∈(VN∪VT)+且至少含有一个 非终结符, β∈(VN∪VT)*
1型文法-上下文有关文法(CSG)
对任一产生式α→β,都有|β|≥|α|, 仅仅 S→ε除外
2.3 文法和语言的形式定义
引例1 ∑={a}, A={an|n≥1}
引例2 ∑={a,b}, A={anbm|n,m≥1}
引例3 ∑={a,b}, A={anbn|n≥1}
定义2.1-文法 文法G定义为四元组(VN,VT,P,S)。其中 VN: 非终结符的非空有穷集; VT: 终结符的非空有穷集; P: 产生式(也称规则)的非空有穷集; S: 开始符号,它是一个非终结符,至少要 在一条规则中作为左部出现。 通常用V表示VN VT,V称为文法G的文法 符号集。
2. 2 符号和符号串
字母表
字母表是元素的非空有穷集合 字母表中的元素称为符号
符号
符号串
由符号组成的任何有穷序列 符号串x的长度:x所包含的符号个数,记作|x| 空符号串
符号串的头、尾、固有头、固有尾 符号串的连接
设x和y是符号串,它们的连接xy是把y的符号写在x 的符号之后得到的符号串。 设x是符号串,把x自身连接n次得到符号串z,即 z=xx...xx,称为符号串x的方幂。 α0=ε, αn =ααn-1 =αn-1α(n>0)
如果有A β,则称β是句型αβδ相对于非终 结符A的直接短语(简单短语)。 一个句型的最左直接短语称为该句型的句柄。
*
例 设文法G[E]: E→E+T|T T→T*F|F F→(E)|i 求句型i*i+i的短语、直接短语和句柄
2.7 有关文法Βιβλιοθήκη 用中的一些说明在实用中,我们将限制文法中不得含有有害规则 和多余规则。
定义2.3 -推导
若存在v w0 w1 ... wn=w (n>0),则 说v推导出w,或说w归约到v,记为 v w。
定义2.4星推导 若有v w,或v=w,则记为
v w。
*
最左(最右)推导
如果在推导的任何一步 ,其中 ∈V* ,都是 对中的最左(最右)非终结符进行替换,则称这 种推导为最左(最右)推导 在形式语言中,最右推导常被称为规范推导。
句型分析
句型分析就是识别一个符号串是否为某文法的句型, 是某个推导的构造过程。 在语言的编译实现中,把完成句型分析的程序称为分 析程序或识别程序。
分析程序(识别程序)
分析算法
自上而下分析法 自下而上分析法 考虑文法G[S]: S cAd A ab Aa
识别输入串w=cabd是否该文法的句子。
有害规则是形如 U U的产生式。 多余规则是文法中连一个句子的推导都用不到的规则 。一种是不在任何规则的右部出现的非终结符(称为 不可到达的非终结符);另一种是不能从它推出终结 符号串的非终结符(称为不可终止的非终结符)。
上下文无关文法中某些规则可具有形式A→ε, 其中A ∈VN。这种规则称为ε规则。
例1
∑={a,b},
m n A={a b |m≥n≥0}
例2
∑={a,b}, A={wwR|wR是w的反向串}
例3
G[S]: SaSBE|aBE EB BE aB ab bB bb bE be eE ee
定义2.2-直接推导、直接归约 设 是文法G=(VN ,VT,P,S)的规则, 和是V*中的任意符号串。若有符号串v,w满 足:v=, w=,则说 v(应用规则 )直接产生w,或说w是v的直接推导,或说 w直接归约到v,记作 vw。
2型文法-上下文无关文法(CFG)
3型文法-正规文法(RG)
对任一产生式α→β,都有α∈VN , β∈(VN∪VT)*
任一产生式α→β的形式都为A→aB或A→a,其中 A∈VN ,B∈VN ,a∈VT
0型文法
1型文法 2型文法
3型文法
0型文法产生的语言称为0型语言
1型文法或上下文有关文法产生的语言称为1 型语言或上下文有关语言 2型文法或上下文无关文法产生的语言称为2 型语言或上下文无关语言 3型文法或正规文法产生的语言称为3型语言 正则规语言
例1
G[E]: EE+E|E*E|(E)|I 例2 G[E]: E-EE|-E|a|b|c
文法的二义性和语言的二义性是两个不同的概 念。因为可能有两个不同的文法G和G′,其中 G是二义的,但是却有L(G)=L(G′),也就是说 ,这两个文法所产生的语言是相同的。
2.6 句型的分析
例
给出一个正规文法G,使 n m L(G)={a b |n,m≥1}
2.5 上下文无关文法及其语法树
引例
G[S]: SaAS | a ASbA | SS | ba 写出aabbaa的最左推导和最右推 导。
给定文法G=( VN,VT,P,S),对于G的任何句型 都能够造与之关联的语法树。这棵树满足下列 4个条件:
自上而下分析法的主要问题: 假定要被替换的最左非终结符是V且有n条产生式: V α1 | α2 |…| αn,那么如何确定用哪个右部去替 换 V?
自下而上分析法的关键问题:
从当前串中选择一个可以归约到某个非终结符的子 串(称为“可归约串”)。
定义3.8-短语,直接短语,句柄 设文法G[S] 如果有S αAδ且A β,则称β是句型αβδ相 对于非终结符A的短语。