精品课件-《编译原理教程》-第二章
合集下载
编译原理第2章(1).ppt

例 “变量是一个算术表达式; 若E1和E2是算术表达式,则E1+E2,E1*E2和(El)也 是算术表达式。” 对于这个定义,若用产生式来描述,则可将它写成: E→i E→E+E E→E * E E→(E)
一个上下文无关文法G是一个四元式(VT,VN,S,ρ), 其中 VT是一个非空有限集,它的每个元素称为终结符号; VN是一个非空有限集,它的每个元素称为非终结符号, VT∩VN=φ S是一个非终结符号,称为开始符号; ρ是一个产生式集合(有限),每个产生式的形式是 P→α,其中,P∈VN, α∈(VT∪VN)* 。开始符号S 至少必须在某个产生式的左部出现一次。
2.2.3 数据类型与操作
一个数据类型通常包括以下三种要素: 用于区别这种类型数据对象的属性 这种类型的数据对象可以具有的值 可以作用于这种类型的数据对象的操作
2.2.3 数据类型与操作
一.初等数据类型 数值类型:整型、实型、复数、双精度, +, -, *, / 等 逻辑类型:布尔运算:∨,∧,┑ 字符类型:符号处理 指针类型
返回语句 return (E)
说明语句:定义各种不同数据类型的变量或运算,定 义名字的性质。
简单句和复合句
简单句:不包含其他语句成分的基本句 复合句:句中有句的语句
2.3 程序语言的语法描述
重点讨论上下文无关文法、语法分析树,以及文 法的二义性问题。最后还将对形式语言进行简单 概述。
字母表与符号
最左(最右)推导
所谓最左(最右)推导指:任何一步a => β都是对α中 的最左(最右)非终结符进行替换的。 最右推导也称为规范推导或规则推导。 (i*i+i)的最右推导: E =>(E) =>(E+E) =>(E+i) =>(E*E+i) =>(E*i+i) =>(i*i+i)
编译原理讲义第二章文法与语言.ppt

• 注意:在寻找一个句型的短语(或简单 短语)时,必须要求将这个短语规约为 相应的非终结符号后所得到的符号串仍 然是句型。
• 句柄:一个句型的最左简单短语称为该 句型的句柄。
• 定义句柄的原因:在自底向上识别一个 符号串时,总是规约这个句柄。
语言的定义(文法的语言)
• 文法的语言:一个文法G[Z]的语言,用 L(G[Z])表示,定义如下:
文法和语言的定义(推导)
• 直接推导:,,并且是文法中的一个重 写规则,那么我们说v可以直接推导到w, 或者w可以直接规约到v。记作 v => w。
• 例如: • 〈主语〉〈谓语〉〈状语〉 • =>〈名词〉〈谓语〉〈状语〉
文法和语言的定义(推导)
• 推导:对于符号串v和w,如果存在一个 直接推导序列u0=>u1=>…=>,并且u0,, 那么我们说v可以推导到w,或者w规约 到v。记作v =>+ w。
编译原理讲义 (章:文法与语言)
文法与语言
• 文法被用来精确而无歧义地描述语言的 句子的构成方式.
• 文法描述语言的时候不考虑语言的含义。
字母表
定义:字母表是有穷非空集合。
字母表包含了语言中所允许出现的一切符 号。
符号串
• 定义:符号串是由字母表中的符号所组 成的有穷序列。
• 一个语言的句子总是它的字母表的符号 串。这个符号串的组成必须是按照文法 规则组合而成的。
符号串集合
• 定义:若集合A中的一切元素都是同一个 字母表上的集合,那么A被称为该字母表 上的符号串集合。
• 在本课程中,语言被认为是句子的集合。 (外延定义?)所以,一个语言就是对 应于它的字母表上的一个符号串集合。
符号串集合的运算
• 句柄:一个句型的最左简单短语称为该 句型的句柄。
• 定义句柄的原因:在自底向上识别一个 符号串时,总是规约这个句柄。
语言的定义(文法的语言)
• 文法的语言:一个文法G[Z]的语言,用 L(G[Z])表示,定义如下:
文法和语言的定义(推导)
• 直接推导:,,并且是文法中的一个重 写规则,那么我们说v可以直接推导到w, 或者w可以直接规约到v。记作 v => w。
• 例如: • 〈主语〉〈谓语〉〈状语〉 • =>〈名词〉〈谓语〉〈状语〉
文法和语言的定义(推导)
• 推导:对于符号串v和w,如果存在一个 直接推导序列u0=>u1=>…=>,并且u0,, 那么我们说v可以推导到w,或者w规约 到v。记作v =>+ w。
编译原理讲义 (章:文法与语言)
文法与语言
• 文法被用来精确而无歧义地描述语言的 句子的构成方式.
• 文法描述语言的时候不考虑语言的含义。
字母表
定义:字母表是有穷非空集合。
字母表包含了语言中所允许出现的一切符 号。
符号串
• 定义:符号串是由字母表中的符号所组 成的有穷序列。
• 一个语言的句子总是它的字母表的符号 串。这个符号串的组成必须是按照文法 规则组合而成的。
符号串集合
• 定义:若集合A中的一切元素都是同一个 字母表上的集合,那么A被称为该字母表 上的符号串集合。
• 在本课程中,语言被认为是句子的集合。 (外延定义?)所以,一个语言就是对 应于它的字母表上的一个符号串集合。
符号串集合的运算
编译原理课件_第二章1

4、符号串集合的和与积
和运算(A,B为符号串集合)
A+B(或A B) ={w | w A,或 w B} A•B(或 AB)= { xy |x A, y B}
积运算(A,B为符号串集合)
显然, A+ = +A = A ; A = A = ; {}A = A{} = A
A0= {} A1=A={a, b, c} A2={aa,ab,ac,ba , bb,bc,ca,cb, cc} …… A*={ε, a, b, c, aa, ab, ac, ba, bb, bc, ……} A*实际上就是A上所有符号串构成的集合
18
符号串及其相关运算 (3)说明
语言是由句子组成的集合(一组符号所构成的集合)
第二章 前后文无关文 法和语言
西北工业大学计算机学院 曾雷杰
1
在20世纪50年代,N.Chomsky首先对语言的描述问 题进行了探讨。他提出了一种用来描述语言的数 学系统,并以此定义了四类性质不同的语言,称 为语言(文法)的Chomsky分类。 人们把用一组数学符号和规则来描述语言的方式 称为形式描述,把所用的数学符号和规则称为形 式语言。 目前,形式语言与自动机理论已成为计算机科学 中的一个重要分支。 本章将初步介绍形式语言中的某些基本概念和知 识,重点是与编译技术密切相关的一些术语和概 念,诸如文法、语言、句子、句型、短语、句柄 以及句型分析等。
5
概念辨析:语法、文法、词法
概念辨析:语法、文法、词法
语法(Syntax):语言的构成规则(元素是词, 相对于词法而言) 词法(Lexical Rule):词汇的构成规则 文法(Grammar):语法、词法表示的是具有 不同特点的语言。文法是对语言构成的结构规 则的统称--实际上是描述语法的表示方法
编译原理第二章(1)

第二章 文法和语言的基本知识
形式语言理论是编译的重要理论 基础。本章主要介绍编译理论中用到 的有关形式语言理论的最基本概念, 重点介绍如何采用形式化的方法描述 程序设计语言。
第二章 文法和语言的基本知识 字母表和符号串 文法和语言的形式定义 文法和语言的分类 短语、直接短语和句柄 语法树和文法的二义性
2.3.3 语言的形式定义
例如,设有文法G[S]: P为:S→ 0 1 | 0 S 1 有如下直接推导: S01 使用规则 S01 此时 x=, y= S0S1 使用规则 S0S1 此时 x=, y=
2.3.3 语言的形式定义
S→ 0 1 | 0 S 1
0S10011 00S11000S111 使用规则 S01 此时 x=0, y=1
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 字母表和符号串的基本概念
2.3.2 文法的形式定义
描述该语言的文法G“是否与前面文 法等价?
G"=( {A}, {a, b}, P", A ) P"={ A→aa | bb | Aaa | Abb }
此文法超出了所定义语言的范围。
2.3.2 文法的形式定义
例2 试设计一个表示所有标识符 的文法
字母 字母或数字串
用I代表标识符;L代表字母; D代表数字; 则定义标识符的文法 为:
5. 集合A的正闭包A+与闭包A* 设A是符号串的集合,则A的正闭 包A+和A的闭包A*的定义为: A+=A1∪A2∪ … ∪An …
形式语言理论是编译的重要理论 基础。本章主要介绍编译理论中用到 的有关形式语言理论的最基本概念, 重点介绍如何采用形式化的方法描述 程序设计语言。
第二章 文法和语言的基本知识 字母表和符号串 文法和语言的形式定义 文法和语言的分类 短语、直接短语和句柄 语法树和文法的二义性
2.3.3 语言的形式定义
例如,设有文法G[S]: P为:S→ 0 1 | 0 S 1 有如下直接推导: S01 使用规则 S01 此时 x=, y= S0S1 使用规则 S0S1 此时 x=, y=
2.3.3 语言的形式定义
S→ 0 1 | 0 S 1
0S10011 00S11000S111 使用规则 S01 此时 x=0, y=1
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 字母表和符号串的基本概念
2.3.2 文法的形式定义
描述该语言的文法G“是否与前面文 法等价?
G"=( {A}, {a, b}, P", A ) P"={ A→aa | bb | Aaa | Abb }
此文法超出了所定义语言的范围。
2.3.2 文法的形式定义
例2 试设计一个表示所有标识符 的文法
字母 字母或数字串
用I代表标识符;L代表字母; D代表数字; 则定义标识符的文法 为:
5. 集合A的正闭包A+与闭包A* 设A是符号串的集合,则A的正闭 包A+和A的闭包A*的定义为: A+=A1∪A2∪ … ∪An …
编译原理课件第二章

递归子程序法
递归子程序法:对应每个非终结符语法单元,,编一个独 立的处理过程(或子程序)。语法分析从读入第一个单词 开始,由非终结符<程序>(即开始符)出发,沿语法描述 图箭头所指出的方向进行分析。当遇到非终结符时,则调 用相应的处理过程,从语法描述图看,也就进入了一个语 法单元,再沿当前所进入的语法单元所指箭头方向继续进 行分析。当遇到描述图中是终结符时,则判断当前读入的 单词是否与图中的终结符相匹配,若匹配,再读取下一个 单词继续分析。遇到分支点时,将当前的单词与分支点上 多个终结符逐个相比较,若都不匹配时可能是进入下一个 非终结符语法单位或是出错。
N ö í ³ ´
ò ¡ í ó ´ Ó ´ Î
á ÷ ½ Ê
PL/0编译程序语义分析的设计与实现
PL/0编译程序语法、语义分析的的核心程序是BLOCK过程 , 说明部分的分析与处理 表格管理 过程体(语句)的分析与处理
jmp jmp int lod lit opr sto opr int opr sto lod lit opr jpc cal lit lod opr opr opr opr sto jmp opr
0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 2 3 3 10 2 4 0 5 16 3 3 0 9 24 2 2 4 4 14 15 16 3 11 0
3 5 7 9 10 12 13 14
£ ¹ <
= =
Ç = ²
>
11
=
Ç = ²
, + - ( ¡ ¡
PL/0编译程序语法语义分析
PL/0编译程序语法分析的设计与实现
编译原理ppt课件

.
<句子> => <主语><谓语> => <冠词><形容词><名词><谓语> => the <形容词><名词><谓语> => the big <名词> <谓语> => the big elephant <谓语> => the big elephant <动词><宾语> => the big elephant ate <宾语> => the big elephant ate <冠词><名词> => the big elephant ate the <名词> => the big elephant ate the peanut
.
3. 由规则推导句子:有了一组规则之后,可以按照一定的方式 用它们去推导或产生句子。
推导方法:从一个要识别的符号开始推导,即用相应规则的 右部来替代规则的左部,每次仅用一条规则去进行推导。
<句子> => <主语><谓语> <主语><谓语> => <代词><谓语>
…… …… 这种推导一直进行下去,直到所有带< >的符号都由终结符号替代为止。
第2章 形式语言概论 (主要介绍形式语言理论中的一些基本概念和基础知识,包括、语言、语
法树和分析方法等)
.
2.1 字母表和符号串 2.2 文法及其分类 2.3 语言和语法树 2.4 关于文法和语言的几点说明 2.5 分析方法简介 2.6 小结
<句子> => <主语><谓语> => <冠词><形容词><名词><谓语> => the <形容词><名词><谓语> => the big <名词> <谓语> => the big elephant <谓语> => the big elephant <动词><宾语> => the big elephant ate <宾语> => the big elephant ate <冠词><名词> => the big elephant ate the <名词> => the big elephant ate the peanut
.
3. 由规则推导句子:有了一组规则之后,可以按照一定的方式 用它们去推导或产生句子。
推导方法:从一个要识别的符号开始推导,即用相应规则的 右部来替代规则的左部,每次仅用一条规则去进行推导。
<句子> => <主语><谓语> <主语><谓语> => <代词><谓语>
…… …… 这种推导一直进行下去,直到所有带< >的符号都由终结符号替代为止。
第2章 形式语言概论 (主要介绍形式语言理论中的一些基本概念和基础知识,包括、语言、语
法树和分析方法等)
.
2.1 字母表和符号串 2.2 文法及其分类 2.3 语言和语法树 2.4 关于文法和语言的几点说明 2.5 分析方法简介 2.6 小结
编译原理第二章课件

例1:文法G: S aSb | ab
L(G)={anbn|n≥1}
28
2.2.2 文法的分类
3型文法(又称线性文法、正则文法、正 规文法)
➢ 如果对文法G中的任一产生式均限制为形如: AB 或 A
其中: A,B∈VN , ∈VT 则称文法G为3型文 法。 ➢ 上述形式的3型文法也称为右线性文法。 ➢ 如果对文法G中的任一产生式均限制为形如:
A0 = { } A1 = { a,b } A2 = AA ={ aa,ab,ba,bb } A3 = A2A ={ aaa,aab,aba,abb,baa,bab,bba,bbb }
……
An =An-1A = AAA……A
12
2.1 基本概念
10.符号串集合的正闭包
设A为符号串的集合,则称A+为符号串集A的 正闭包.具体定义如下:
文法
字符串集合
16
2.2 .1 文法的定义
2.2.1 文法(Grammar)的定义 文法的定义
一个文法G是一个四元组: G = ( VN, VT, S, P )
其中:
➢ VT (Terminal Vocabulary)是一个非空的有限集合,
它的每个元素称为终极符号或终极符,一般用小 写字母表示。 从语法分析的角度看,终极符号是 一个语言不可再分的基本符号。
可合并为一个,缩写为:
P 1 | 2 | … | n
其中,每个i 称为 P 的一个候选式,符号“|” 读作“或” 。
21
⑥一个文法的核心是产生式。 一般约定:
用< >括起来或 大写字母:非终结符 不用< >括起来或小写字母:终结符
22
例1
G =(VN,VT, S, P) 其中:VN={ S , A}
L(G)={anbn|n≥1}
28
2.2.2 文法的分类
3型文法(又称线性文法、正则文法、正 规文法)
➢ 如果对文法G中的任一产生式均限制为形如: AB 或 A
其中: A,B∈VN , ∈VT 则称文法G为3型文 法。 ➢ 上述形式的3型文法也称为右线性文法。 ➢ 如果对文法G中的任一产生式均限制为形如:
A0 = { } A1 = { a,b } A2 = AA ={ aa,ab,ba,bb } A3 = A2A ={ aaa,aab,aba,abb,baa,bab,bba,bbb }
……
An =An-1A = AAA……A
12
2.1 基本概念
10.符号串集合的正闭包
设A为符号串的集合,则称A+为符号串集A的 正闭包.具体定义如下:
文法
字符串集合
16
2.2 .1 文法的定义
2.2.1 文法(Grammar)的定义 文法的定义
一个文法G是一个四元组: G = ( VN, VT, S, P )
其中:
➢ VT (Terminal Vocabulary)是一个非空的有限集合,
它的每个元素称为终极符号或终极符,一般用小 写字母表示。 从语法分析的角度看,终极符号是 一个语言不可再分的基本符号。
可合并为一个,缩写为:
P 1 | 2 | … | n
其中,每个i 称为 P 的一个候选式,符号“|” 读作“或” 。
21
⑥一个文法的核心是产生式。 一般约定:
用< >括起来或 大写字母:非终结符 不用< >括起来或小写字母:终结符
22
例1
G =(VN,VT, S, P) 其中:VN={ S , A}
编译原理―第2章 前后文无关文法和语言课件

?一组终结符号不能被替换的符号单词符号?一组非终结符号能够被替换为终结符号或非终结符号语法单位?一个开始符号从这个符号开始替换最大语法单位程序?一组产生式替换规则把左边的字符串替换为右边的字符串222文法和语言的形式定义19?关键思路?从文法的开始符号出发?反复使用产生式对非终结符进行替换展开?直到整个字符串中不再包含非终结符?这时得到了这个文法的一个句子一个程序?这个过程称为推导222文法和语言的形式定义20?文法的形式定义?产生式规则?产生式是一个有序对通常写作或
符号串集合的方幂: 设A是符号串的集合,则称Ai为符号串集A的 方幂,其中i是非负整数。具体定义如下:
A0 ={ε} A1 =A, A2=AA Ak= AA......A(k个)
11
2.2.1 基本概念和术语
集合的闭包
闭包
集合Σ的闭包Σ*定义如下:Σ*=Σ0∪Σ1∪Σ2∪Σ3∪… 例:设有字母表Σ={0,1},则
从文法的开始符号出发 反复使用产生式,对非终结符进行替换(展开) 直到整个字符串中不再包含非终结符 这时,得到了这个文法的一个句子(一个程序) 这个过程称为推导
19
2.2.2 文法和语言的形式定义
文法的形式定义
产生式(规则)
产生式是一个有序对(α, β),通常写作α→β(或α::=β)
Σ*=Σ0∪Σ1∪Σ2∪…={ε,0,1,00,01,10,11,000,…},即Σ*表示Σ上所有有穷长 的串的集合。
正闭包
Σ+ = Σ1∪Σ2∪Σ3∪…称为Σ的正闭包。 +表示上的除ε外的所有用穷长串的集合。
Σ*= Σ0∪Σ+ Σ+=ΣΣ*=Σ*Σ
12
2.2.1 基本概念和术语
例题 定义标识符是由字母开头、后跟字母或数字的任意组合构成, 设A={a,b,…,z},B={0,1,…,9},将所有标识符的集合用A和B的运算 来表示。
符号串集合的方幂: 设A是符号串的集合,则称Ai为符号串集A的 方幂,其中i是非负整数。具体定义如下:
A0 ={ε} A1 =A, A2=AA Ak= AA......A(k个)
11
2.2.1 基本概念和术语
集合的闭包
闭包
集合Σ的闭包Σ*定义如下:Σ*=Σ0∪Σ1∪Σ2∪Σ3∪… 例:设有字母表Σ={0,1},则
从文法的开始符号出发 反复使用产生式,对非终结符进行替换(展开) 直到整个字符串中不再包含非终结符 这时,得到了这个文法的一个句子(一个程序) 这个过程称为推导
19
2.2.2 文法和语言的形式定义
文法的形式定义
产生式(规则)
产生式是一个有序对(α, β),通常写作α→β(或α::=β)
Σ*=Σ0∪Σ1∪Σ2∪…={ε,0,1,00,01,10,11,000,…},即Σ*表示Σ上所有有穷长 的串的集合。
正闭包
Σ+ = Σ1∪Σ2∪Σ3∪…称为Σ的正闭包。 +表示上的除ε外的所有用穷长串的集合。
Σ*= Σ0∪Σ+ Σ+=ΣΣ*=Σ*Σ
12
2.2.1 基本概念和术语
例题 定义标识符是由字母开头、后跟字母或数字的任意组合构成, 设A={a,b,…,z},B={0,1,…,9},将所有标识符的集合用A和B的运算 来表示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章 词法分析 图2-14 习题2.5的最简DFA'
第二章 词法分析
2.6 有语言L={w | w∈(0,1)+,并且w中至少有两个1, 又在任何两个1之间有偶数个0},试构造接受该语言的确定有 限状态自动机(DFA)。
【解答】 对于语言L,w中至少有两个1,且任意两个1 之间必须有偶数个0;也即在第一个1之前和最后一个1之后, 对0的个数没有要求。据此我们求出L的正规式为0*1 (00(00)*1)*00(00)*10*,画出与正规式对应的NFA,如图215所示。
则该DFA M所能接受的语言可以用正规表达式表示为
。
A.( a∣b )*
B.aa ( a∣b )*
C.( a∣b )*aa
D.a ( a∣b )*a
第二章 词法分析
【解答】 (1) 由教材第一章1.3节中的词法分析,可知词法分析所 遵循的是语言的构词规则。故选B。 (2) 词法分析器的功能是输入源程序,输出单词符号。 故选B。 (3) 词法分析器输出的单词符号通常表示为二元式:(单 词种别,单词自身的值)。故选B。 (4) 虽然选项A、B、D都满足题意,但选项D更准确。故 选D。 (5) NFA可以有DFA与之等价,即两者描述能力相同;也 即,对于任一给定的NFA M,一定存在一个DFA M',使 L(M)=L(M′)。故选B。
序。每次调用时,词法分析器就从输入串中识别出一个单词符
号交给语法分析器。
2.3 设M=({x,y}, {a,b}, f, x, {y})为一非确定的有
限自动机,其中f定义如下:
f(x,a)={x,y}
f{x,b}={y}
f(y,a)= Φ
f{y,b}={x,y}
试构造相应的确定有限自动机M′。
第二章 词法分析 【解答】 对照自动机的定义M=(S,Σ,f, s0, Z),由f的
{0, 2} {1} {3, 5} {4} {6} {7} 按顺序重新命名为0、1、2、3、4、5后得到最简的DFA如 图2-13所示。
第二章 词法分析
a
a 0
b 1
b
b 2
4
a a
a
3
5
图2-13 习题2.5的最简DFA
第二章 词法分析
注意,如果将状态4和状态6作为等价状态,即得到划分后 的状态子集为
表2-3 合并后的状态转换矩阵
S
a
b
1
1
2
2
1
2
第二章 词法分析 由此得到最简DFA,如图2-20所示。
图2-20 习题2.7的最简DFA
第二章 词法分析 正规式(a | b)*b对应的NFA如图2-21所示。
图2-21 正规式(a | b)*b对应的NFA
第二章 词法分析 用子集法将图2-21所示的NFA确定化为如图2-22所示的状
定义可知f(x,a)、f(y,b)均为多值函数,因此M是一非确定有 限自动机。
先画出NFA M相应的状态图,如图2-3所示。
图2-3 习题2.3的NFA M
第二章 词法分析 用子集法构造状态转换矩阵,如表2-1所示。
表2-1 状态转换矩阵
I {x} {y} {x,y}
Ia {x,y}
— {x,y}
(5) 对于任一给定的NFA M,
L(M′)。
A.一定不存在
C.可能存在
(6) DFA适用于
。
A.定理证明
C.词法分析
一个DFA M′,使L(M)=
B.一定存在 D.可能不存在
B.语法分析 D.语义加工
第二章 词法分析
(7) 下面用正规表达式描述词法的论述中,不正确的
是
。
A.词法规则简单,采用正规表达式已足以描述
第二章 词法分析 图2-11 习题2.5的NFA
第二章 词法分析 用子集法将图2-11确定化,如图2-12所示。
图2-12 习题2.5的状态转换矩阵
第二章 词法分析
由图2-12重新命名后的状态转换矩阵可以看出:状态0和 状态2面对输入字符a、b的下一状态相同,状态3和状态5面对 输入字符a、b的下一状态相同,即得到划分后的状态子集为
【解答】 本题对应的正规表达式为b*( a∣ab )*,对应 的NFA如图2-23所示。
b
a
ε
X
Y
a
b
1
图2-23 正规式b*( a|ab )*对应的NFA
第二章 词法分析
用子集法将图2-23所示的NFA确定化为DFA,如图2-24所 示。
I
Ia
Ib
Sab
{X, Y} {1, Y} {X, Y} 重新命名 0 1 0
第二章 词法分析 第二章 词法分析
第二章 词法分析
2.1 完成下列选择题:
(1) 词法分析所依据的是
。
A.语义规则
B.构词规则
C.语法规则
D.等价变换规则
(2) 词法分析器的输入是
。
A.单词符号串
B.源程序
C.语法单位
D.目标程序
(3) 词法分析器的输出是
。
A.单词的种别编码
B.单词的种别编码和自
第二章 词法分析 用子集法将图2-6和图2-7分别确定化为如图2-8(a)和(b)
所示的状态转换矩阵,它们最终都可以得到最简DFA,如图29所示。因此,这两个正规式等价。
图2-8 图2-6和图2-7确定化后的状态转换矩阵
第二章 词法分析 图2-9 最简DFA
第二章 词法分析
实际上,当闭包*取0时,正规式(ab) *a与正规式a(ba)* 由初态X到终态Y之间仅存在一条a弧。由于(ab)*在a之前,故 描述(ab)*的弧应在初态结点X上;而(ba)*在a之后,故(ba)* 对应的弧应在终态结点Y上。因此,(ab)*a和a(ba)*所对应的 NFA也可分别描述为如图2-10(a)和(b)所示的形式,它们确定 化并化简后仍可得到图2-9所示的最简DFA。
第二章 词法分析 图2-2 DFA M
第二章 词法分析
2.2 什么是扫描器?扫描器的功能是什么?
【解答】 扫描器就是词法分析器,它接受输入的源程序,
对源程序进行词法分析并识别出一个个单词符号,其输出结果
是单词符号,供语法分析器使用。通常把词法分析器作为一个
子程序,每当语法分析器需要一个单词符号时就调用这个子程
G[A]:A→aA | bB | b B→aA | bB | b
G[A]可进一步化简为G[S]:S→aS | bS | b(非终结符B对应 的产生式与A对应的产生式相同,故两非终结符等价,即可合 并为一个产生式)。
第二章 词法分析
2.8 构造一个DFA,它接收Σ={a, b}上所有不含子串 abb的字符串。
第二章 词法分析 图2-5 图2-3化简后的DFA M′
第二章 词法分析 2.4 正规式(ab)*a与正规式a(ba)*是否等价?请说明理
由。 【解答】 正规式(ab)*a对应的NFA如图2-6所示,正规
式a(ba) *对应的NFA如图2-7所示。
图2-6 正规式(ab)*a对应的NFA
第二章 词法分析 图2-7 正规式a(ba)*对应的NFA
{0, 2} {1} {3, 5} {4, 6} {7} 按顺序重新命名为0、1、2、3、4后得到最简的DFA' 如图214所示。由图2-14可以看出,由状态4输入a可以到达状态3, 由状态3输入b可以到达状态2,即可形成如下的字符串:
aa…abb…baa…abb…baa…abb…baa…a 而不是本题正规表达式可形成的字符串:aa…abb…baa…a。
Ib {y} {x,y} {x,y}
第二章 词法分析 将转换矩阵中的所有子集重新命名,形成表2-2所示的状
态转换矩阵,即得到M′=({0,1,2},{a,b},f,0,{1,2}),其状 态转换图如图2-4所示。
图2-4 习题2.3的DFA M′
第二章 词法分析
表2-2 重命名后的状态转换矩阵
f
态转换矩阵。
图2-22 图2-21确定化后的状态转换矩阵
第二章 词法分析
比较图2-22与图2-19,重新命名后的转换矩阵是完全一 样的,也即正规式(a | b)*b可以同样得到化简后的DFA如图 2-20所示。因此,两个自动机完全一样,即两个正规文法等 价。
(2) 对图2-20,令A对应状态1,B对应状态2,则相应 的正规文法G[A]为
第二章 词法分析 图2-15 习题2.6的NFA
第二章 词法分析 用子集法将图2-15所示的NFA确定化,如图2-16所示。
图2-16 习题2.6的状态转换矩阵
第二章 词法分析 由图2-16可看出非终态2和4的下一状态相同,终态6和8
的下一状态相同,即得到最简状态为 {0} {1} {2,4} {3} {5} {6,8} {7}
一般对应一个循环语句。
A.不含回路的分叉结点
B.含回路的状态
结点
C.终态结点
D.A~C都不是
(10) 已知DFA Md= ({s0, s1, s2}, {a, b}, f, s0, {s2}), 且有:
f( s0, a ) =s1
f( s1, a ) =s2
f( s2, a ) =s2
f( s2, b ) =s2
按顺序重新命名为0、1、2、3、4、5、6,则得到最简DFA, 如图2-17所示。
图2-17 习题2.6的最简DFA
第二章 词法分析
2.7 已知正规式((a | b)*| aa)*b和正规式(a | b)*b。 (1) 试用有限自动机的等价性证明这两个正规式是等价 的; (2) 给出相应的正规文法。 【解答】 (1) 正规式((a | b)*| aa)*b对应的NFA如图 2-18所示。