第二章 文法和语言基本知识

合集下载

z第二章 文法和语言

z第二章 文法和语言

例子:考虑一个文法
G=({a, b}, {S}, S,P) 其中 P:SaSb ab。试推导其语言。 SaSb aaSbb a3Sb3 …… an-1Sbn-1 anbn 其语言为:L(G)={anbn |n>=1}
说明:
★ 只用一个产生式并不足以定义一个语法范 畴,在绝大部分情况下都需要用好几个产生式, 特别是需要含有递归的产生式(产生式左部的 符号直接在右部出现). ★ VN∩VT=Φ:即文法中的任意一个符号要么 为非终结符号,要么为终结符号.
A A1 A 2 A 3 ......

定理2.1 若A是符号串集合,则A*=(A*)* 。
证明 显然 A* (A*)* , 现证 (A*)* A* 任给符号串 x∈(A*)*,则存在n,使得 x∈(A*)n, x 必存在n个子串x1 ,…,xn , 使得x= x1…xn ,且 xi∈A* (i=1,…,n)。 由xi∈A* ,必存在整数pi ,使得xi∈Api , 令 n
句型、句子和语言
* ,其中 S 是开始符号, ∈ V* ,则称 若S 为文法G的句型。 * 特别地,若 S ,且 ∈ VT* ,则称 为 G 的 句子。 文法G所定义的语言,记作:
L(G)={|∈VT*,且S}
*
同一句型有不同的推导序列
设有文法G[N1]: N1→N N →ND|D D→0|1|2 则句子12可由三种不同的推导序列推导出来: (1) N1 N ND N2 D2 12 (2) N1 N ND DD 1D 12 可见,同一句型(句子)可以通过不同的推导 序列推导出来。

|x|= 2 |y|= 3 |z|= 5
|xy|=|x|+|y|

编译原理第02章文法和语言的基本知识

编译原理第02章文法和语言的基本知识

01
02
03
04
05
短语、直接短语和句柄
文法和语言的形式定义
语法树和文法的二义性
字母表和符号串
文法和语言的分类
第二章 文法和语言的基本知识
对程序设计语言的描述是从语法、语义和语用三个因素来考虑。
1
语法是对语言结构的定义。
2
语用则是从使用的角度去描述语言。
3
语义是描述了语言的含义。
4
2.0 概 述
文法的形式定义 A→n …
对于若干个左部相同的规则,如
A→1
缩写为:A→1 | 2 | … | n i称为A的一个候选式。
A→2
第一条规则的左部是识别符号。
对文法G不用四元式显示表示,仅
只将规则写出。
我们约定:
2.3.1 文法的形式定义
VN={A}
S=A
VT={0,1} P: A→ 0 | 1 | A0 | A1
4. 句型和句子
设有文法G[S](S是文法G的开始符号)
如果S x, x ∈(VN∪VT)* 则称符号串x 为文法G[S]的句型。
*
如果S x, x ∈VT* 则称符号串x为文法 G[S]的句子。
*
2.3.2 语言的形式定义
例1 设有文法G[S]:
我们有:
由该文法所确定的语言为
该文法所定义的语言是什么?
L(G[S])={ε, 0, 1, 00, 01, 10, 11, …} ={ x | x∈{0,1}* }
1
2
3
4
2.3.2 语言的形式定义
L(G[A])={ yxn | n≥1}
A→yB
B →xB | x 例5 设有文法G[A]: 该文法所定义的语言是什么?

第二章 文法和语言基本知识

第二章 文法和语言基本知识

0型(无限制):G=(VT,VN,S,P) 规则形式 : , (VTVN)*, 并且至少含有一个非终结符号; 1型(上下文有关) : A u u (V V )+, A u ,S 除外; 2型(上下文无关):规则形式 : A A VN, (VTVN)* ; 3型(右线性): A B或 A (左线性) A B 或 A , VT*, A,B VN
S a
A
b b A a
S
a
S
a
关于分析树的几点说明
1. 一个句型推导或分析用一棵树结构图示 出来,它反应了一个句型语法结构的层次。
2. 对于一个句子的多种推导(若文法是无二义 性的),采用各种推导过程,画出的分析树是 一样的。分析树并未描述推导过程,它是不同 推导过程的抽象共性。 3. 在书中,用画分析树的过程解释语法分析过 程,用分析树图解语法结构。
1. 2. 3. 4. 5. • • • • 符号串的连接 εy=yε=y 集合的乘积 {ε}A=A{ε}=A 符号串的幂运算 y0=ε y1=y y2=yy 集合的幂运算 A0={ε} A1=A A2=AA 集合A的闭包A*与正闭包A+ ∑的闭包∑*: ∑上所有符号串的全体 例如,若 ∑={a,b}, 则∑+={a,b,aa,ab,ba,bb,aaa,…} 则∑*={ε,a,b,aa,ab,ba,bb,aaa,…}= ∑0 U ∑+
+
文法对应的语言示例:
见课本p16,例2.7—2.9 S → 01 | 0S1 S → 0S | 1S | ε
A → yB

B → xB | x
S → aB | bA A → a | aS B → b | bS | | bAA aBB

编译原理第二章文法和语言

编译原理第二章文法和语言

语言的语法结构
总结词
语言的语法结构是语言形成和发展的核心要素,决定 了语言的表达方式和意义。
详细描述
语言的语法结构是指语言的组织规律和规则,包括词 法、句法、语义等方面的规则。词法规定了词汇的构 成和变化规则,如名词、动词、形容词等词类的划分 ;句法规定了句子结构的规则,如主语、谓语、宾语 等句子的成分及其排列顺序;语义则涉及到词汇和句 子的意义和解释。语言的语法结构是语言理解和生成 的基础,也是语言演变和发展的关键因素。
文法和语言的应用前景
1 2
人工智能领域
文法和语言是人工智能领域的重要基础,可用于 自然语言处理、机器翻译、语音识别等技术的研 究和应用。
计算机科学教育
文法和语言是计算机科学专业的重要课程之一, 对于培养计算机科学人才具有重要意义。
3
软件工程领域
文法和语言可用于软件工程领域中的编译器设计 和开发,提高软件开发的效率和可靠性。
05
文法和语言的未来发展
文法和语言的研究方向
形式语言理论
深入研究形式语言的基本理论, 包括语法、语义和语用等方面, 为自然语言处理和人工智能等领 域提供理论基础。
自然语言处理
结合自然语言处理技术,研究自 然语言的语法、语义和语用规律, 提高自然语言处理的准确性和效 率。
计算语言学
将计算语言学与形式语言理论相 结合,研究语言处理算法和模型, 为机器翻译、语音识别等领域提 供技术支持。
文法和语言的发展趋势
深度学习与文法和语言的结合
01
随着深度学习技术的发展,文法和语言的研究将更加注重与深
度学习的结合,以提高语言处理的性能和效率。
跨媒体语言处理
02
随着多媒体数据的普及,文法和语言的研究将逐渐扩展到跨媒

编译原理第2章文法和语言

编译原理第2章文法和语言

2.1 文法和语言的定义
文法分类
2型文法(上下文无关文法):如果对1型文法施加以下的限制,就得到2 型文法: G的任何产生式为Aβ, A∈VN,β∈(VN∪VT)*
这种文法意味着,每一规则左部只有一个非终结符,无需考虑该非终结 符在上下文中的出现情况。
总结3型:文法(正则文法):如果对2型文法施加以下的限制,就得到3型文法: 右α,β其部G3称2∈中型的正、形文任A规V法3,何式文TB型称产∈)法仅为生V。文则N右式为, 法线为α为A,性Aβ规3∈文型αV法则αBT或|文B左β左|,法或β线部,者性或,仅A文者否法为B;Aα则非3|β型为,终文B2法结α型等|符β价文(于,法正A若规,式B规,∈则所V以N又,
VVVNN=,VV∪NT,∪PV三T=VФ个T表集VVP示=NT合==文{均{{N法为0NG,}非10的;}空N字;,有N母穷表集1或N合词,N汇表0, N1};
S=N。
2.1 文法和语言的定义
文法
文法产生式的其它表示法:
规则1:{a}表示a的0次或多次重复出现,即{a}表示ε或a或aa或aaa或 a…a;{a}mn 表示a的m到n次出现。
要求: (1)能根据文法分析其所产生的语言; (2)能根据语言构造其文法。
2.1 文法和语言的定义
根据文法抽象语言
文法 G={VN,VT,P,S},其中: VN={<数>,<数字串>,<数字>}; VT={0,1,2,3,4,5,6,7,8,9}; P: <数><数字串> <数字串><数字串><数字>|<数字> <数字>0|1|2|3|4|5|6|7|8|9 S=<数>

编译原理第二章 文法和语言资料

编译原理第二章  文法和语言资料

第二章文法和语言本章讲述目前广泛使用的上下文无关文法。

即用上下文无关文法作为程序设计语言语法的描述工具。

阐明语法的一个工具是文法。

本章将介绍文法和语言的概念。

本章重点:上下文无关文法及其句型分析中的有关问题。

第一节文法的直观概念当我们表述一种语言时,无非是说明这种语言的句子,如果语言只含有有穷多个句子,则只需列出句子的有穷集就行了,但对于有无穷句子的语言来讲,存在着如何给出它的有穷表示的问题。

以自然语言为例,人们无法列出全部句子,但是人们可以给出一些规则,用这些规则来说明(或者定义)句子的组成结构,比如:“我是大学生”。

是汉语的一个句子。

汉语句子可以是由主语后随谓语而成,构成谓语的是动词和直接宾语,我们采用EBNF来表示这种句子的构成规则:〈句子〉∷=〈主语〉〈谓语〉〈主语〉∷=〈代词〉|〈名词〉〈代词〉∷=我|你|他〈名词〉∷=王明|大学生|工人|英语〈谓语〉∷=〈动词〉〈直接宾语〉〈动词〉∷=是|学习〈直接宾语〉∷=〈代词〉|〈名词〉“我是大学生”的构成符合上述规则,而“我大学生是”不符合上述规则,我们说它不是句子。

这些规则成为我们判别句子结构合法与否的依据。

一旦有了一组规则以后,我们可以按照如下方式用它们去推导或产生句子。

我们开始去找∷=左端的带有〈句子〉的规则并把它表示成∷=右端的符号串,这个动作表示成:〈句子〉⇒〈主语〉〈谓语〉,然后在得到的串〈主语〉〈谓语〉中,选取〈主语〉或〈谓语〉,再用相应的规则∷=右端代替之。

比如,选取了〈主语〉,并采用规则〈主语〉∷=〈代词〉,那么得到:〈主语〉〈谓语〉⇒〈代词〉〈谓语〉,重复做下去,我们得到句子:“我是大学生”的全部动作过程是:〈句子〉⇒〈主语〉〈谓语〉⇒〈代词〉〈谓语〉⇒我〈谓语〉⇒我〈动词〉〈直接宾语〉⇒我是〈直接宾语〉⇒我是〈名词〉⇒我是大学生符号⇒的含义是,使用一条规则,代替⇒左边的某个符号,产生⇒右端的符号串。

显然,按照上述办法,不仅生成“我是大学生”这样的句子,还可以生成“王明是大学生”,“王明学习英语”,“我学习英语”,“他学习英语”,“你是工人”,“你学习王明”等几十个句子。

编译原理第02章_文法与语言的基本知识

编译原理第02章_文法与语言的基本知识
该文法所定义的语言是什么?
L(G)={anbncn,n>1}
2.3.2 语言的形式定义
由文法确定语言的方法: 从文法的开始符号出发,反复使
用规则替换、展开非终结符,找出句 子的规律,用式子或自然语言描述出 来。
2.3.3 文法的形式定义
由语言构造文法
例1 设字母表∑={a, b},试设计一个文法, 描述语言 L= { a2n , b2n | n≥1 }
即:闭包为集合中元素的任意组合。 闭包比正闭包多含一个空符号串。
2.3 文法和语言的形式定义 ∑+=∑1∪∑2∪∑3∪… ={ 0, 1, 00, 10, 11, 01, 000, 100, …}
用A表示∑+
A→0 A→1 A→A0 A→A1
2.3.1 文法的形式定义
1. 规则 也称产生式
规则是一个符号与一个符号串的 有序对(A,β),通常写作:
2.2 符号串的运算
例如,设A={ a, b },则 A0={} A1=A={ a, b } A2=AA={ aa, ab, ba, bb } A3=AAA=A2A
={ aaa, aab, aba, abb, baa, bab, bba, bbb }

2.2 符号串的运算
5. 集合A的正闭包A+与闭包A* 设A是符号串的集合,则A的正闭
我们有 εx=xε=x
2.2 符号串的运算
2. 符号串集合的乘积 设A和B是符号串的集合, 则A和B
的乘积定义为:
AB={xy | x∈A, y∈B}
集合的乘积是满足于 x∈A, y∈B 的所有符号串 xy 所构成的集合。
2.2 符号串的运算
例如:设A={ aa, b }, B={ c, d } 则AB={ aac, aad, bc, bd }

编译原理讲义(第二章文法与语言)

编译原理讲义(第二章文法与语言)

整理ppt
9
文法和语言的定义(文法)
• 文法:文法G[Z]是一组有穷非空的重写 规则的集合。其中Z称为识别符号。G为 文法名字
• 文法例子:P22, 例子2.10。
• 所有的规则都是基于同一个符号表V。符 号表又可分划非终结符号集合VN和终结 符号结合VT。
整理ppt
10
• 〈句子〉::= <主语><谓语><状语> • <主语>::=<名词> • <名词>::=Peter | Berry | River • <谓语>::=<动词> • <动词>::=Swims • <介词>::= in • <状语>::= <介词> <名词>
=> 123
整理ppt
17
语言的定义(句型,句子)
• 对于文法G[Z],x称为G的一个句型如果:
Z =>* x 识别符号是最简单的句型。 • G[Z]的一个句型x被称为句子,如果:
xVT* 也就是说句子是全部由终结符号组成的 句型。
整理ppt
18
语言的定义(短语,简单短语)
• 短语:对于文法G[Z],如果Z =>* xUy, U=>+ u。显然,w=xuy是一个句型。我
• 句柄:一个句型的最左简单短语称为该 句型的句柄。
• 定义句柄的原因:在自底向上识别一个 符号串时,总是规约这个句柄。
整理ppt
20
语言的定义(文法的语言)
• 文法的语言:一个文法G[Z]的语言,用 L(G[Z])表示,定义如下:
L(G[Z]) = {x | Z=>* x 并且 x VT+} • 一个文法的语言就是该文法的所有的句子的

编译原理 第2章 文法和语言的基本知识

编译原理  第2章 文法和语言的基本知识
=> the <形容词><名词><谓语> => the big <名词> <谓语> => the big elephant <谓语>
=> the big elephant <动词><宾语>
=> the big elephant ate <宾语> => the big elephant ate <冠词><名词>
编译原理
2013年11月17日
2.1
字母表和符号串
不对 符号就是字符,对吗? 如={if,else,for,while} 字母表:符号的非空有限集 例:={0,1} C语言的字母表 A={a,b,…,0,1,…,9, +,-,×,_/, ( , ), =… if, else,for...} 符号:字母表中的元素 例: 0,1 符号串:由字母表中的符号组成的任何有穷序列 例:0,1, 01, 10, 011,.. 空符号串:无任何符号的符号串,用ε 表示
编译原理
2013年11月17日
2.2
文法和语言的形式定义
文法是对语言结构的定义与描述。(或称为“语法”)。
<赋值语句>::=<标识符>“=”<表达式> <表达式>::=<表达式>“+”<表达式> | <表达式>“*”<表达式> <表达式>::=“(”<表达式>“)” | <标识符> | <整数> | <实数>
T N
编译原理
2013年11月17日

第2章 文法和语言

第2章 文法和语言

句型。
2.句子:有文法G,若S =>* x,且x∈VT*,则称
x是文法G的句子。
例:G: S→0S1 | 01 S 0S1 00S11
G的句型: S,0S1 ,00S11, 000S111,00001111
000S111
00001111
G的句子:00001111, 01
32
推导句子a+a*a
例:G[E]:E→E+T|T T→T*F|F F→(E)|a
本章目的
构造编译程序,需针对特 定的程序语言,故需对被编 译的程序语言本身做精确地 描述。
为语言的语法(文法)描 述寻求工具。工具要对程序 设计语言给出精确无二义的 语法描述。(严谨、简洁、 易读)。
对于程 序设计者而 言,文法给 出了语言的 精确的语法 规范说明。
1
程序设计语言描述
语法Syntax:对语言结构的定义。 语义Semantics:描述语言的含义。 语用Pragmatics:从使用者角度描述语言。
2. 符号串:由字母表中的符号组成的任何有穷序
列称为该字母表上的符号串。
(1)空符号串ε:没有符号的符号串 。 例如: Σ={a,b} ε,a,b,aa,ab,aabba…都是上的符号串
7
(2)符号串s的头(前缀):移走符号串s尾部
的零个或多于零个符号得到的符号串。
如:b是符号串banana的一个前缀。 符号串s的尾(后缀):删去符号串s头部的零个
E E+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a
句子:用符号a,+,*,(和)构成的算术表达式
33

编译原理:文法与语言的基本知识

编译原理:文法与语言的基本知识
2
符号与符号串
– 例1: 1={0,1} 1是二进制数的字母表 2={a,b…….z} 2是英文小写字母 3={A….Z,0….9,+,-,*,/,.,(,),=,$,’,:} 3是FORTRAN4语言的字母表
注意:符号可能是字符的组合
– 如: 5= {ASCII码} 则<=为一个符号 再如: pascal语言的:= C语言的&&等等
若<U> +………<U>
称为右递归
3. 对文法G1、G2,如L(G1)=L(G2)
称文法 G1、G2等价
19
短语与句柄
• 2.3.3 短语与句柄
–定义7:设G[<S>]是一个文法,并设w=xuy 是该 文法的一个句型。若<S>*x<U>y且<U>+u, 则称u为句型w=xuy对非终结符<U>的一个短语。 若<S>*x<U>y且<U>u,则称u为句型w=xuy 相对于非终结符<U>的一个简单(直接)短语。 任何一个句型的最左简单短语称为柄短语(句 柄)。
– A0={}
An=AAn-1 (n>0)
– A*= A0∪ A1∪A2∪…∪An ∪……
称为A的闭包
– A+= A1∪A2∪…∪An ∪……
称为A的正闭包
7
• 由定义可知:A+=AA*=A*A • 例3:令A= 1={0,1}
– A*={,0,1,00,10,01,11…….} – A+= {0,1,00,10,01,11…….} – 令A= 3 则任一FORTRAN4语言所编
14
直接推导与推导

编译原理第二章_文法与语言

编译原理第二章_文法与语言
表示A上所有有穷长串的集合 例如:A={ab,c},AA={…… }, AAA={…… } A+ = A* A = AA*
(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) <谓语>::=<动词> <直接宾语>

编译原理_文法和语言

编译原理_文法和语言
形式上的区别“→”和“” 推导的依据是规则
2.3.3 语言的形式定义 例 文法G: S→0S1,S→01 有直接推导:
υ
ω
S 0S1 ( S→0S1 ) 0S1 00S11 ( S→0S1 ) 00S11 000S111 ( S→0S1 ) 000S111 00001111( S→01 )


2.3.3 语言的形式定义

从语言构造文法具体步骤为:(一般采用“凑规则” 的方法) • 找出语言的若干句子; • 分析句子的特点; • 根据句子的特点凑规则; • 形成文法; • 检验两个方面:语言的所有句子是否都是能由 文法的开始符推ห้องสมุดไป่ตู้得到;文法推导出的所有终 结符号串是否都是语言的句子。 • 注意:得到的文法是不唯一的。
例:给出语言为{anbn|n1}的文法。 解:G3(S):S aSb S ab 例:给出语言为{ambn|1nm2n}的文法。 解:G4(S): S aSb | aaSb S ab | aab
文法与语言的关系:
给定一个文法,就能从结构上唯一的确定其语言,即G L(G) 给定一种语言,能确定其文法,但这种文法不是唯一的, 即L—>G1、G2…等 若L(G1) = L(G2),则称文法G1和G2是等价的。
第二章 文法和语言的基本知识

学习目标
字母表和字符串 文法与语言的形式定义 短语、直接短语和句柄 语法树和文法二义性 文法和语言的分类

2.1 概述
一. 编译程序功能:高级语言翻译成等价的低级语 言 。
二. 构造编译程序,需针对特定的程序语言,故需 对被编译的程序语言本身进行精确描述。 三. 程序设计语言描述
2.3.2 文法的形式定义
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2、 子树
一棵分析树中一个特有的结点连同它的全部后裔, 连接这些后裔的边以及这些结点的标记。例如: S a A S
3、简单 子树
S
a
b
b
A
a
a
与短语等概念 的对应关系
2.5.2 文法的二义性( ambiguity)的定义
一个句型是否只对应一颗语法树? 考虑表达式下面的文法 G[E],其产生式如下: EE+EE*E (E) a
1. 2. 3. 4. 5. • • • • 符号串的连接 εy=yε=y 集合的乘积 {ε}A=A{ε}=A 符号串的幂运算 y0=ε y1=y y2=yy 集合的幂运算 A0={ε} A1=A A2=AA 集合A的闭包A*与正闭包A+ ∑的闭包∑*: ∑上所有符号串的全体 例如,若 ∑={a,b}, 则∑+={a,b,aa,ab,ba,bb,aaa,…} 则∑*={ε,a,b,aa,ab,ba,bb,aaa,…}= ∑0 U ∑+
2.2 字母表和符号串的基本概念
2.2.1 字母表和符号串
1、字母表:元素的非空有穷集合。 2、符号:字母表∑中的元素。 3、符号串(字) • 符号串:字母表∑中的符号所构成的一个有穷序列。 • 空字ε :不包含任何符号的序列。 • φ :不含任何元素的空集{}
2.2 字母表和符号串的基本概念
2.2.2 符号串的运算
设L和M是两个符号串集合,则
1.合并:L∪M={s|sL or sM} 2.乘积:LM={ st|sL and tM} 3.幂: L0={ε }, L1=L, L2=LL, ..., Ln=LLn-1 4. L的闭包,记作L*, L*=∪Li(i>=0) =L0∪L1∪L2∪L3 ∪… 5.L的正则闭包,记作L+(L+=L L*) L+=∪Li(i >=1) =L1∪L2∪L3∪L4∪…
如果一个文法存在某个句子对应两棵不同的语法树, 则称这个文法是二义的。 也就是某个句子有两个不同的最左(最右)推导。
人们已经证明,二义性问题是不可判定的。
为无二义性找寻一组充分条件 例如文法 G[E],其产生式如下:
EE+EE*E (E) i 是二义性文法,加 上限制规则:‘*’优先级高于‘+’且都 服从左结合,则有无二义文法如:
2.2 字母表和符号串的基本概念
2.2.1 字母表和符号串
1、字母表 字母表:字母表是元素的非空有穷集合。 任何程序语言都有自己的字母表,例如: • 机器语言:由符号“0”和“1”组成的字母表,∑={0,1} • ASCII字符集; • C语言字母表为: ∑= {AZ, az, 09, +, -, *, /, <, =, >,:, ‘,’, ; ,.,!, ~,%,&, ¦ ,^, (, ), {, },[, ] }
+ 有推导A A… + A …A + A …A…
注:语言是无穷集合,描述的文法一定是递归的。
2.4 短语、直接短语、句柄
短语: 设文法G=(VT,VN,P,S) * + 若有 S αAδ 且 A β, 则称β是句型αβδ相对于非终结符A的短语。
* 若S αAδ 且A=>β,则称β是直接短语。
E
E + E
最左推导 E
E
* E a E
E a a
*
E
a
E a
+
a
EE+E E+E*E E+E*a E+a*a a+a*a E E + E
E E*EE*a E+E*aE+a*a a+a*a E E * E a a E
最右推导 E a +
E
a a
*
E
a
ห้องสมุดไป่ตู้ 结论:
一个句型可能有不止一个最左(最右)推导, 对应不同的语法树,可以用完全不同的办法生 成一个句型。
a 2 S 5
a 9
A3 b 6 A 7
b 10
S 4
8 a 11 a
如何画出分析树
(自顶向下)
根据推导序列,对每步推导画相应分枝
S aAS aSbAS aabAS aabbaS aabbaa S a S a A b A S a a
b
如何画出分析树
(自底向上)
根据归约序列,对每步归约画相应分枝 S aAS aAa aSbAa aSbbaa aabbaa
例如:L={A~Z,a~z} D={0~9} 1.L∪D={A~Z,a~z ,0~9} 2.LD是由所有用一个字母后跟一个数字组成的符 号串所构成的集合。 3.L4是由所有的四个字母的符号串构成的集合。 4.L(L∪D)* 是由所有的字母开头的字母和数字 组成的符号串所构成的集合。 5.D+是由所有的长度大于等于1的数字串所构成的 集合。
+
n
3、 广义推导
0
*
n 表示 0 = n或者 0
+ n
2.3.3 语言的形式定义
4、句型和句子
设有文法 G=(VT,VN,S, P)。 * 如果S ,则称是一个句型。
仅含终结符号的句型是一个句子。
5、语言
由文法G产生的所有句子所组成的集合就是语言L(G)。 L(G)={ |S 且 ∈VT*} 注: L(G)是VT*的子集
第二章 文法和语言基本知识
本章知识点: • • • • • • 字母表和符号串的概念 文法和语言的形式定义 直接推导、推导、句型、句子 短语、直接短语、句柄 语法树、文法的二义性 了解文法和语言的分类
2.1 概述
• 编译程序是针对某种程序设计语言的。
• 程序设计语言的精确定义和描述: – 语法:语言结构的定义 – 语义:描述语言的含义 – 语用:从使用的角度来描述语言 • 非形式化描述 • 形式化描述:用一整套带有严格规定的符号体 系来描述问题。
+
文法对应的语言示例:
见课本p16,例2.7—2.9 S → 01 | 0S1 S → 0S | 1S | ε
A → yB

B → xB | x
S → aB | bA A → a | aS B → b | bS | | bAA aBB
2.3.4 规范推导和规范归约 • 最左推导: 推导中的每一步β,都是替换中最 左的非终结符号。 例如: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*aE+a*a T+a*a F+a*a a+a*a
S a
A
b b A a
S
a
S
a
关于分析树的几点说明
1. 一个句型推导或分析用一棵树结构图示 出来,它反应了一个句型语法结构的层次。
2. 对于一个句子的多种推导(若文法是无二义 性的),采用各种推导过程,画出的分析树是 一样的。分析树并未描述推导过程,它是不同 推导过程的抽象共性。 3. 在书中,用画分析树的过程解释语法分析过 程,用分析树图解语法结构。
它显然比较复杂,因此:
在能驾驭的情况下,可以使用二义性文法。
2.7 文法的实用限制
化简了的文法(限制条件)
1.产生式: A→A P ; 2. 每个非终结符号A必须都有用处。即,
* S αAβ , 且 A
+ * γ, γ ∈ V T
2.6 文法和语言分类
语言的分类:
对文法中的规则施加不同的限制 四种类型: 0型,1型,2型,3型
2.3
文法和语言的形式定义
2.3.1 形式语言
• 形式语言:符号串的集合
不考虑语义
程序←→符号串 • 有穷集合的语言描述:枚举法 • 无穷集合的语言描述:文法(含递归) 例 ∑={0,1} , 则集合 ∑+表示为递归文法: A→0 A →1 A→A0 A →A1
2.3
文法和语言的形式定义
2.3.2 文法的形式定义
其中,A是规则的左部, β是规则的右部
→表示生成或定义为
• 语言的语法结构用一组规则来表示。
• 终结符号、非终结符号
例 赋值语句→变量=表达式
2. 文法 文法是规则的非空有穷集合,通常表示成四元式 G= (VT,VN , S, P ),其中: VT是一个非空有穷终结符号集合; VN是一个非空有穷的非终结符号集合, 且VT∩VN=Φ; P是一个产生式的非空有穷集合,每个产生式的形式是 A (或A ::= ),其中 A∈VN, ∈(VT∪VN)*。 S VN ,称为开始符号,S必须至少在某个产生式的左部 出现一次 。 左部相同的产生式可以缩写成:A 1| 2| •文法是对语言结构的定义和描述,规则是其关键。
• 等价文法
2.3.3 语言的形式定义 1、直接推导
令G=(VT,VN,S,P), 若Aγ∈P,
且,β,γ ∈(VT∪VN)*,则称 Aβ直接推导出 γβ,表示成
Aβ γβ 2、推导
如果存在一个直接推导序列: 0 1 2 … n(n>0) 称为 0至 n的一个长度为n的推导, 表示成 0
2.3.4 规范推导和规范归约
• 最左推导: 推导中的每一步β,都是替换中最左的非终结符号。

最右推导:推导中的每一步β,都是替换中最右的非终结符号。
• 规范推导、规范句型 • 归约:推导的逆过程 β • 规范归约(最左归约)
.
2.3.5 递归规则与文法的递归性 1、递归规则 规则形如: A → A… 或 A → … A 或 A → …A… 2、文法的递归性
相关文档
最新文档