第三章 文法和语言
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有如下规则: <标识符>→<字母> <标识符> → <标识符> <字母> <标识符> → <标识符> <数字> <字母> → A <字母> → B <字母> → C <数字> → 0 <数字> → 1
问:该规 则可以产 生什么语 言?
19来自百度文库
第 三 节 文法和语言的形式定义
文法的定义 规则的定义 推导的定义 句型、句子及语言的定义
广义推导: *
若有v + w 或 v=w, 则记为v * w,v广义推导出w,w广义规约到v(可以 包含0步推导)
28
例:设有文法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 (3) N1 N ND DD D2 12
如果U + U…,则称该文法左递归于U;
如果U + …U,则称该文法右递归于U。 以上形式的规则(产生式)也称为递归规则。
36
例1:C-语言中:
program→declaration_list declaration_list→declaration_list declaration | declaration
例如:
x1=x, x2=xx, x3=xxx,
设x=ab,则
x0=
x3=xxx=ababab
xn=xxn-1=xn-1x
|xn|=n|x|
11
符号串集合
符号串集合:若集合中所有元 素都是某字母表上的符号串, 则称之为该字母表上的符号串 集合。通常用大写英文字母 A,B,C…表示。
例: 枚举表示法 {1,11,111,1111} 省略表示法
34
例2: 文法G[S]: (1)S→aSBE (2)S→aBE (3)EB→BE (4)aB→ab (5)bB→bb (6)bE→be (7)eE→ee L(G)={ anbnen | n≥1 }
35
文法的递归性和等价性
文法的递归性定义:对于某文法,存在U∈VN, 如果U + …U..., 则称该文法递归于U;
17
引例1
<句子>::=<主语><谓语><状语> <主语>::=<名词> <谓语>::=<动词> <状语>::=<介词><名词> <名词>::=Peter | Berry | river <动词>::=swims <介词>::=in 注:<句子>为要定义的目标,称为识别符号或开始符号。
18
引例2
空集:φ,注意与ε 的区别。
字母是一个符号串集合,每个 符号串的长度为1.
{1,11,111,…} 描述表示法 {x|x全由1组成,且 |x|≥1}
12
符号串集合的乘积
符号串集合的乘积定义为: 例: 设A={a,b}, B={c,d,e},
则
AB {xy | x A , 中的符 y B} x 是符号串集合 A 号串,y是符号串集合B中 的符号串。
x
An ,
14
则 |x|=n
符号串集合的闭包与正闭包
闭包:Σ *称为Σ 的闭包,若Σ *表示Σ 上的所有有 穷长的串的集合。
* 2 3 { } ......
正闭包: Σ +称为Σ 的正闭包,若
* { } 2 3 ......
第二章 文法和语言
语言概述 基本概念:符号串与符号串集合 文法和语言的形式定义 语法树与文法的二义性 形式语言的分类
1
第一节 语言概述
一、语言
某一字母表上符号串(句子)的集合。 语言研究的三个方面: 语法—构成语言句子的各个记号之间的组合规 律。 语义—按照各种表示方法所描述的各个记号的 特定的含义。 语用—在各个记号所出现的行为中,它们的来 源、使用和影响。
EE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a
32
小结:文法和语言的关系
已知描述语言,可以写出相应的文法。 (注意:该文法并不惟一。) 已知文法,可以得到由该文法产生的语言。 (用推导的方法得到的所有句子的集合)
33
语言的形式定义
语言 L(G)={ x | S * x,其中S为文法开始符号,且 x ∈VT+} 文法描述的语言是该文法一切句子的集合。 例1:G: S→0S1, S→01 L(G)={0n1n|n≥1}
29
规范推导和规范归约 最左推导和最右推导:对于一个推导序列中的每一步
直接推导,都是对最左(最右)非终结符进行替换。 最右推导也称规范推导,它的逆过程称为最左规约, 也称规范规约。 . 若用 表示规约,设A→a是文法G中的一个规则, 则对于 . xAy xay 有 xay xAy
30
例:文法G[S]: S→AB A→A0|1B B→0|S1 请给出句子101001的最左和最右推导。
设α → β是文法G的产生式,若有v,w满足:
v=x α y, w= x β y, 其中x∈V*, y∈V* 则称v直接推导到w, 记作:v w 或w直接归约到v 例:G: S→0S1, S→01 S 0S1 00S11 000S111 00001111
27
直接推导序列: + 若存在v =u0 u1 ... un=w, (n>0) 则称v + w,v推导出w,或w归约到v(至少有1步推 导),这个直接推导序列的长度为n。
问题2:如何由文法产生语言?
基本思想是:从识别符号开始,把当前产生的符号 串中的非终结符号替换为相应规则右部的符号串, 直到最终全由终结符号组成。这种替换过程称为推 导或产生句子的过程,每一步成为直接推导或直接 产生。 注:语法上的正确性不能保证语义上的正确性。
26
二、直接推导和规范推导
直接推导“”
2
二、形式语言
Chomsky于1956年提出了一种用来描述语言的数学系统。 人们把用一组数学符号和规则来描述语言的方式称为形式 描述,而把所用的数学符号和规则称为形式语言。 形式语言,只是从语法上研究语言。它是抽象的数学系统, 用于模拟程序设计语言的语法,或者是并不很成功地模拟 自然语言如英语的语法。 形式语言理论是编译理论的重要基础,它主要研究组成符 号语言的符号串的集合及它们的表示法、结构与特性。
4
第二节 符号串和符号串集合
基本定义 它们的运算
5
符号与字母表
字母表:由若干元素(符 号、字母)所组成的有限 非空集合。常用大写英文 字母A,B… 或希腊字母Σ 表示。 符号:可以相互区别的记 号(元素)。
例如:
Σ = {0,1}
V = {a, b,c…z} A={begin,if,real,end}
15
字母表的闭包与正闭包
对于字母表A,它的 闭包:
A* A0 A1 A 2 A 3 ......
正闭包:
A A1 A 2 A 3 ......
显然 A* A0 A A+=AA*=A*A
16
举例
例1:回忆C语言所采用的输入字母表。 例2:设字母表A={a},其上有符号串t=aa。写出 下列符号串及其长度: (1)t0 (2)ttt (3)t3 (4)t5 例3:若有字母表A={0,1},则A+=?它可以用于 描述什么语言? 例4:令字母表L={A,B,C,…,Z,a,b,c,…,z}, D=(0,1,2,…9),求下列运算的结果? (1)L∪D (2)LD4 (3)L(L∪D)15 (4)D+
20
一、文法
规则的非空有穷集合,用G[S]表示,G是文法名, S是识别符号。文法通常表示成四元组的形式: G=(VN,VT,P,S) 其中:VN—非终结符,用来表示语法范畴。 VT —终结符,语言中不可再分的字符串。 S —开始符号或识别符号,一个特殊的非终 结符,表示所定义的最大的语法范畴。 P —规则
3
三、语言的描述方法
枚举法 当某种语言中的句子有限时。例如只含有两个句子的语 言:{“She is a girl”,“she is my friends”} 形式化描述 指定有限个规则,用于产生所要描述的语言的全部句子, 这些规则构成了该语言的文法。 自动机方法 建立一种装置(算法或过程),它以某字母表上的符号 串为输入,判别该符号串是否为其所描述的语言的句子, 此装置即为自动机。
23
例:试构造产生标识符的文法。
S→L|LP P →T|PT
T →L|D
L →a|b|c|d…|z
D →0|1|…|9
24
例:写一文法,使其语言是奇数集合,但不 允许出现以0开头的奇数。
N →A|MA M →B|MD
A →1|3|5|7|9
B →1|2|3|4|5|6|7|8|9
D →0|B
25
例如:字母表A={a,b,c} 上的符号串x=abc, 则x 的 前缀:ε, a, ab, abc, 后 缀:ε, c, bc, abc 真前缀: ε, a, ab,
真后缀:ε, c, bc
9
对符号串的运算——连接
设x、y是同一字母表上的 两个符号串,则把y的各个 符号写在x的符号之后得到 的符号串,称为x与y的连 接,记作xy。 对于任何字母表上的符号 串x,有 x x x 注意:不同字母表上的符 号串不能进行连接运算。
21
问题1:什么是规则(产生式)?
形式为U::=u (或U→u) 其中U∈V+且至少包含一个非终结符;
u∈V* ;且 V=VN∪VT。 U称为规则(产生式)左部,u称为(产生式)规 则右部。 非终结符号:需要进一步定义的符号,不会出现在 程序中。
终结符号:不需要再定义,会出现在程序中。
22
注意: 1、VN∩VT=Ø,即文法中的任意一个符 号要么是非终结符,要么是终结符。 2、只用一个产生式并不足以定义一个语 法范畴,一般都需要几个产生式,特 别是需要含有递归的产生式。 3、开始符号至少必须在某个产生式的左 部出现一次。
最左推导: S AB 1B B10B 10S1 10AB1 101BB1 1010B1 101001 最右推导: S AB AS1AAB1 AA01 A1B01 A1001 1B1001 101001
31
例:有文法如下,G[E]:E→E+T|T T→T*F|F F→(E)|a 该文法的开始符号是?非终结符号集是?终结符号 集是?如何得到句子a+a*a?
|ε|= 0
7
子符号串
设有非空符号串 u=xvy,其中符号串
例如 符号串x=a+b*(c+d),则
V≠ε ,则称v为符 号串u的子符号串。
a, a+b*, 与(c+d)等都是 x的子符号串,且
其长度分别为|a|=1, |a+b*|=4, |(c+d)|=5
8
符号串的前缀与后缀
如果z=xy是一个符 号串,则x是z的前 缀,而y是z的后缀。 如果y非空,则x是z 的真前缀;如果x非 空,则y是z的真后 缀。
AB={ac,ad,ae,bc,bd,be}
13
符号串集合的方幂
A0= { } A1=A, A2=AA, …
例如:
An=An-1A=AAn-1
字母表是一个特殊的符 号串集合。当A为字母 表时 若
字母表A={a,b,c},则 A2=AA={a,b,c}{a,b,c} ={aa,ab,ac,ba,bb,bc,ca,c b,cc}
例如:
字母表{a,b,c}上有符号 串x=ab与y=cba,则
z=xy=abcba
考虑:
|x|= |y|= |z|=
2 3 5
10
|xy|= |x|+|y|
对符号串的运算——方幂
设x是符号串,把x自 身连接n次得到的符号 串,即z=xx…x(n个x), 称为x的n次方幂,记 作xn。 注意:x0= ,|x0|=0
6
符号串及其长度
符号串:由字母表中的 符号组成的任何有穷序 列称为符号串。常用小 写英文字母u,v等表示 符号串。 符号串的长度:符号串 中符号的个数, 符号串x 的长度用|x|表示。 空串ε:长度为0的符号 串。
例如:
a, b, c, ab, ac, aaa, abc都是字 母表{a, b, c}上的符号串。 (还有哪些字符串?) abc的长度是|abc|=3, 100010 的长度|100010|=6
问:该规 则可以产 生什么语 言?
19来自百度文库
第 三 节 文法和语言的形式定义
文法的定义 规则的定义 推导的定义 句型、句子及语言的定义
广义推导: *
若有v + w 或 v=w, 则记为v * w,v广义推导出w,w广义规约到v(可以 包含0步推导)
28
例:设有文法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 (3) N1 N ND DD D2 12
如果U + U…,则称该文法左递归于U;
如果U + …U,则称该文法右递归于U。 以上形式的规则(产生式)也称为递归规则。
36
例1:C-语言中:
program→declaration_list declaration_list→declaration_list declaration | declaration
例如:
x1=x, x2=xx, x3=xxx,
设x=ab,则
x0=
x3=xxx=ababab
xn=xxn-1=xn-1x
|xn|=n|x|
11
符号串集合
符号串集合:若集合中所有元 素都是某字母表上的符号串, 则称之为该字母表上的符号串 集合。通常用大写英文字母 A,B,C…表示。
例: 枚举表示法 {1,11,111,1111} 省略表示法
34
例2: 文法G[S]: (1)S→aSBE (2)S→aBE (3)EB→BE (4)aB→ab (5)bB→bb (6)bE→be (7)eE→ee L(G)={ anbnen | n≥1 }
35
文法的递归性和等价性
文法的递归性定义:对于某文法,存在U∈VN, 如果U + …U..., 则称该文法递归于U;
17
引例1
<句子>::=<主语><谓语><状语> <主语>::=<名词> <谓语>::=<动词> <状语>::=<介词><名词> <名词>::=Peter | Berry | river <动词>::=swims <介词>::=in 注:<句子>为要定义的目标,称为识别符号或开始符号。
18
引例2
空集:φ,注意与ε 的区别。
字母是一个符号串集合,每个 符号串的长度为1.
{1,11,111,…} 描述表示法 {x|x全由1组成,且 |x|≥1}
12
符号串集合的乘积
符号串集合的乘积定义为: 例: 设A={a,b}, B={c,d,e},
则
AB {xy | x A , 中的符 y B} x 是符号串集合 A 号串,y是符号串集合B中 的符号串。
x
An ,
14
则 |x|=n
符号串集合的闭包与正闭包
闭包:Σ *称为Σ 的闭包,若Σ *表示Σ 上的所有有 穷长的串的集合。
* 2 3 { } ......
正闭包: Σ +称为Σ 的正闭包,若
* { } 2 3 ......
第二章 文法和语言
语言概述 基本概念:符号串与符号串集合 文法和语言的形式定义 语法树与文法的二义性 形式语言的分类
1
第一节 语言概述
一、语言
某一字母表上符号串(句子)的集合。 语言研究的三个方面: 语法—构成语言句子的各个记号之间的组合规 律。 语义—按照各种表示方法所描述的各个记号的 特定的含义。 语用—在各个记号所出现的行为中,它们的来 源、使用和影响。
EE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a
32
小结:文法和语言的关系
已知描述语言,可以写出相应的文法。 (注意:该文法并不惟一。) 已知文法,可以得到由该文法产生的语言。 (用推导的方法得到的所有句子的集合)
33
语言的形式定义
语言 L(G)={ x | S * x,其中S为文法开始符号,且 x ∈VT+} 文法描述的语言是该文法一切句子的集合。 例1:G: S→0S1, S→01 L(G)={0n1n|n≥1}
29
规范推导和规范归约 最左推导和最右推导:对于一个推导序列中的每一步
直接推导,都是对最左(最右)非终结符进行替换。 最右推导也称规范推导,它的逆过程称为最左规约, 也称规范规约。 . 若用 表示规约,设A→a是文法G中的一个规则, 则对于 . xAy xay 有 xay xAy
30
例:文法G[S]: S→AB A→A0|1B B→0|S1 请给出句子101001的最左和最右推导。
设α → β是文法G的产生式,若有v,w满足:
v=x α y, w= x β y, 其中x∈V*, y∈V* 则称v直接推导到w, 记作:v w 或w直接归约到v 例:G: S→0S1, S→01 S 0S1 00S11 000S111 00001111
27
直接推导序列: + 若存在v =u0 u1 ... un=w, (n>0) 则称v + w,v推导出w,或w归约到v(至少有1步推 导),这个直接推导序列的长度为n。
问题2:如何由文法产生语言?
基本思想是:从识别符号开始,把当前产生的符号 串中的非终结符号替换为相应规则右部的符号串, 直到最终全由终结符号组成。这种替换过程称为推 导或产生句子的过程,每一步成为直接推导或直接 产生。 注:语法上的正确性不能保证语义上的正确性。
26
二、直接推导和规范推导
直接推导“”
2
二、形式语言
Chomsky于1956年提出了一种用来描述语言的数学系统。 人们把用一组数学符号和规则来描述语言的方式称为形式 描述,而把所用的数学符号和规则称为形式语言。 形式语言,只是从语法上研究语言。它是抽象的数学系统, 用于模拟程序设计语言的语法,或者是并不很成功地模拟 自然语言如英语的语法。 形式语言理论是编译理论的重要基础,它主要研究组成符 号语言的符号串的集合及它们的表示法、结构与特性。
4
第二节 符号串和符号串集合
基本定义 它们的运算
5
符号与字母表
字母表:由若干元素(符 号、字母)所组成的有限 非空集合。常用大写英文 字母A,B… 或希腊字母Σ 表示。 符号:可以相互区别的记 号(元素)。
例如:
Σ = {0,1}
V = {a, b,c…z} A={begin,if,real,end}
15
字母表的闭包与正闭包
对于字母表A,它的 闭包:
A* A0 A1 A 2 A 3 ......
正闭包:
A A1 A 2 A 3 ......
显然 A* A0 A A+=AA*=A*A
16
举例
例1:回忆C语言所采用的输入字母表。 例2:设字母表A={a},其上有符号串t=aa。写出 下列符号串及其长度: (1)t0 (2)ttt (3)t3 (4)t5 例3:若有字母表A={0,1},则A+=?它可以用于 描述什么语言? 例4:令字母表L={A,B,C,…,Z,a,b,c,…,z}, D=(0,1,2,…9),求下列运算的结果? (1)L∪D (2)LD4 (3)L(L∪D)15 (4)D+
20
一、文法
规则的非空有穷集合,用G[S]表示,G是文法名, S是识别符号。文法通常表示成四元组的形式: G=(VN,VT,P,S) 其中:VN—非终结符,用来表示语法范畴。 VT —终结符,语言中不可再分的字符串。 S —开始符号或识别符号,一个特殊的非终 结符,表示所定义的最大的语法范畴。 P —规则
3
三、语言的描述方法
枚举法 当某种语言中的句子有限时。例如只含有两个句子的语 言:{“She is a girl”,“she is my friends”} 形式化描述 指定有限个规则,用于产生所要描述的语言的全部句子, 这些规则构成了该语言的文法。 自动机方法 建立一种装置(算法或过程),它以某字母表上的符号 串为输入,判别该符号串是否为其所描述的语言的句子, 此装置即为自动机。
23
例:试构造产生标识符的文法。
S→L|LP P →T|PT
T →L|D
L →a|b|c|d…|z
D →0|1|…|9
24
例:写一文法,使其语言是奇数集合,但不 允许出现以0开头的奇数。
N →A|MA M →B|MD
A →1|3|5|7|9
B →1|2|3|4|5|6|7|8|9
D →0|B
25
例如:字母表A={a,b,c} 上的符号串x=abc, 则x 的 前缀:ε, a, ab, abc, 后 缀:ε, c, bc, abc 真前缀: ε, a, ab,
真后缀:ε, c, bc
9
对符号串的运算——连接
设x、y是同一字母表上的 两个符号串,则把y的各个 符号写在x的符号之后得到 的符号串,称为x与y的连 接,记作xy。 对于任何字母表上的符号 串x,有 x x x 注意:不同字母表上的符 号串不能进行连接运算。
21
问题1:什么是规则(产生式)?
形式为U::=u (或U→u) 其中U∈V+且至少包含一个非终结符;
u∈V* ;且 V=VN∪VT。 U称为规则(产生式)左部,u称为(产生式)规 则右部。 非终结符号:需要进一步定义的符号,不会出现在 程序中。
终结符号:不需要再定义,会出现在程序中。
22
注意: 1、VN∩VT=Ø,即文法中的任意一个符 号要么是非终结符,要么是终结符。 2、只用一个产生式并不足以定义一个语 法范畴,一般都需要几个产生式,特 别是需要含有递归的产生式。 3、开始符号至少必须在某个产生式的左 部出现一次。
最左推导: S AB 1B B10B 10S1 10AB1 101BB1 1010B1 101001 最右推导: S AB AS1AAB1 AA01 A1B01 A1001 1B1001 101001
31
例:有文法如下,G[E]:E→E+T|T T→T*F|F F→(E)|a 该文法的开始符号是?非终结符号集是?终结符号 集是?如何得到句子a+a*a?
|ε|= 0
7
子符号串
设有非空符号串 u=xvy,其中符号串
例如 符号串x=a+b*(c+d),则
V≠ε ,则称v为符 号串u的子符号串。
a, a+b*, 与(c+d)等都是 x的子符号串,且
其长度分别为|a|=1, |a+b*|=4, |(c+d)|=5
8
符号串的前缀与后缀
如果z=xy是一个符 号串,则x是z的前 缀,而y是z的后缀。 如果y非空,则x是z 的真前缀;如果x非 空,则y是z的真后 缀。
AB={ac,ad,ae,bc,bd,be}
13
符号串集合的方幂
A0= { } A1=A, A2=AA, …
例如:
An=An-1A=AAn-1
字母表是一个特殊的符 号串集合。当A为字母 表时 若
字母表A={a,b,c},则 A2=AA={a,b,c}{a,b,c} ={aa,ab,ac,ba,bb,bc,ca,c b,cc}
例如:
字母表{a,b,c}上有符号 串x=ab与y=cba,则
z=xy=abcba
考虑:
|x|= |y|= |z|=
2 3 5
10
|xy|= |x|+|y|
对符号串的运算——方幂
设x是符号串,把x自 身连接n次得到的符号 串,即z=xx…x(n个x), 称为x的n次方幂,记 作xn。 注意:x0= ,|x0|=0
6
符号串及其长度
符号串:由字母表中的 符号组成的任何有穷序 列称为符号串。常用小 写英文字母u,v等表示 符号串。 符号串的长度:符号串 中符号的个数, 符号串x 的长度用|x|表示。 空串ε:长度为0的符号 串。
例如:
a, b, c, ab, ac, aaa, abc都是字 母表{a, b, c}上的符号串。 (还有哪些字符串?) abc的长度是|abc|=3, 100010 的长度|100010|=6