编译原理课后答案——第二章 词法分析ppt课件

合集下载

编译原理 第2章 词法分析

编译原理 第2章 词法分析

㈢单词二元式编码
经词法分析后,单词用二元式 (code,val) 表示。 code表示单词的种别,用整数码表示。单词种别表示单词 的语法特性,在语法分析时使用。 val表示单词的值,在本书中用字符串表示。单词值表示了 单词的语义特性,在语义分析时使用。
㈣编码原则
通常将标识符归为一种,常数按类型分种,基本字、运算 符及界符采用一符一种。 如果一个种别仅包含一个单词,那么单词种别就可代表该 单词,无需给出单词值。为了输入和处理的方便,无意义的 单词值用字符串"NUL"表示。若一个种别含有多个单词,除 给出种别外,还需给出它的值。
②预处理主要工作 删除注释 删除续行符,以及后续换行符(0AH)。 换行符、TAB和空格具有界符作用,预处理时通常予以保留。 在后面的分析中可以看到,它们的存在反而给后续的单词识别 带来方便。为了简化判断,可在预处理时,将换行符和TAB统 一替换为空格。 大多数语言(除C语言)不区分大小写,可在预处理时,将 大写字母变换成小写字母,或相反,以方便后续处理。 对于受书写格式限制的语言(例Fortran和Cobol),还应识 别标号区,正确给出语句标号。识别续行标志,把相继行捻接 在一起,给出语句结束符。 上述源程序经预处理后,扫描缓冲区中的内容如下所示:
第2章 词法分析
2.1 词法分析器的设计考虑及手工构造
2.1.1 单词类型及二元式编码 2.1.2 源程序的输入及预处理 2.1.3 基本字的识别和超前搜索 2.1.4 遍 2.1.5 状态转换图和词法分析器的手工构造
2.2 正规式、自动机及词法分析器的自动生成
2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 基本概念 正规式与正规集 确定有限自动机(DFA) 非确定有限自动机(NFA) 正规式与确定有限自动机的等价性

编译课后答案-陈火旺等编著第三版ppt课件

编译课后答案-陈火旺等编著第三版ppt课件

正规式 (0|1)*010(0|1)*
DFA:
4
1
0
01
00 11 20 3
01 1
1
05
最小化DFA:
1
0
0 011
20
3
2021/8/9
1
最新课件
0,1
11 11
CH.3.练习题10(P64.)
10. 用FA写出渡河的方法。
设:人---R;狼---L;羊---Y;菜---C;
左岸---Z;右岸---U;
依照字典序排列; 正规式 (a|A)*(b|B)*(c|C)*(d|D)*…(z|Z)*
2021/8/9
最新课件
99
CH.3.练习题9(P64.)
9.问题:没构造出DFA;没过程;方法没掌握。
(1) {0,1}上的含有子串010的所有串; 至少含一个。 正规式 (0|1)*010(0|1)* 或 (0*1*)*010(0*1*)*
问题:没写全;表达不准确
解:< int,->,
< CInt, “CInt”> ,
< ::,-> ,
< nMulDiv, “nMulDiv”> ,
<(,->,
< int,-> ,
< n1, “n1”> , < , , -> ,
< int,-> ,
< n2, “n2”> ,
< ),-> ,
< {, -> ,
最小化DFA:
a
0b
a
a
2 b3
b
初始: {0,1}, {2,3,4,5}

《编译原理》课件第2章

《编译原理》课件第2章

种别划分
标识符: 一般统归为一种 常 数: 可统归为一种,也可按整型、实型、布尔型等分
为几种 运算符: 采用一符一种 界 符: 采用一符一种
2.1 词法分析器设计方法
(2)单词自身的值 是编译中其它阶段所需要的信息
对于单词符号来说,如果一个种别只含有一个单词 符号,其种别编码就完全代表了它自身的值。如果一个 种别含有多个单词符号,那么对于它的每个单词符号, 除了给出种别编码之外还应给出单词符号自身的值。
2.1 词法分析器设计方法
对于不含回路的分支状态来说,可以让它对应一个 switch( ) 语句或一组if-else语句。
s=getchar( );
switch(s)
{ case 'a':
case 'b':

case 'z':
…;
//实现状态j功能的语句
case '0':
case '1':

case '9':
s=getchar ( );
getbe ( );
/*滤除空格*/
switch (s)
{
case 'a':
case 'b':

case 'z':
while (letter ( )‖digit ( ))
{
concatenation ( );
/*将当前读入的字符送入token数组*/
getchar ( );
大多数程序语言的单词符号都可以用状态转换图予以识 别。作为一个综合例子,我们来构造一个C语言子集的简单 词法分析器。
C语言子集的单词符号表示

《编译原理教程》第二章词法分析

《编译原理教程》第二章词法分析
优化正则表达式
通过优化正则表达式来减少DFA的状态数量和转 移边的数量,从而提高分析效率。例如,可以使 用贪婪匹配、非贪婪匹配、预读等技术来优化正 则表达式。
使用字符类和快速映射
将字符映射到相应的字符类,可以减少比较次数 和查表时间,提高分析效率。
并行处理和分布式处理
使用并行处理或分布式处理的方法来提高词法分 析器的处理能力和效率。例如,可以使用多线程 或多进程来处理多个输入字符串,或者使用分布 式系统来处理大规模的输入数据。
06
典型案例分析与实践
案例一:简单算术表达式词法分析
词法单元定义
定义算术表达式中的各类词法单元,如数字、 运算符等。
正则表达式描述
使用正则表达式描述各类词法单元的模式。
词法分析器实现
编写词法分析器,将输入的算术表达式拆分 为一个个的词法单元。
案例二:C语言子集词法分析
词法规则定义
定义C语言子集中的词法规则,包括关键字、标识符、 常量、运算符等。
词法分析的准确性对编译器的正确性和效率至关重要,因为任何错误或遗漏的词素都可 能导致编译失败或生成错误的代码。
本章学习目标和要求
掌握词法分析的基本概念和原理 ,了解词法分析器的作用和工作 流程。
了解词法分析中的常见问题和解 决方法,如处理空白、注释和特 殊字符等。
学习词法规则的定义和描述方法 ,能够编写简单的词法规则。
DFA与NFA之间转换关系
NFA转换为DFA
通过子集构造法可以将NFA转换为等价的DFA。该方法将NFA的状态集划分为不相交的 子集,每个子集代表DFA的一个状态。转换后的DFA具有与原始NFA相同的语言识别能
力。
DFA转换为NFA
任何DFA都可以直接看作是一个特殊的NFA,其中每个转移都是确定的,并且没有ε-转 移。因此,将DFA转换为NFA是简单的,只需保留原始DFA的结构即可。

编译原理课后答案——第二章 词法分析课件

编译原理课后答案——第二章 词法分析课件

换图如图2-3所示。
学习交流PPT
8
表2-2 状态转换矩阵
f 字 符
a
b
状 态
0
2
1
1

2
2
2
2
学习交流PPT
9

将图2-3所示的DFA M′最小化。首先,
将M′的状态分成终态组{1,2}与非终态组{0}。
其 次 , 考 察 {1,2} , 由 于
{1,2}a={1,2}b={2} {1,2},所以不再将其划分 了,也即整个划分只有两组:{0}和{1,2}。令

(2) 画 出 与 正 规 表 达 式
a(b|a(a|b))|b(a|b)对应的NFA,如图2-23所示。
学习交流PPT
46
a
1 a
X b 2
3 b
b
a
Y a
b
图2-23 习题2.10的NFA
学习交流PPT
47

用子集法将图2-21的NFA确定化,如
图2-24所示。
I {X} {1} {2} {3} {Y}
规式(a|b)*b。

(1) 试用有限自动机的等价性证明这
两个正规式是等价的;

(2) 给出相应的正规文法。

【解答】 (1) 正规式((a|b)*|aa)*b
对应的NFA如图2-14所示。
学习交流PPT
28
3
a
a
X
b
1
2
Y
a
4
b
图2-14 正规式((a|b)*|aa)*b对应的NFA
学习交流PPT
单词符号时就调用这个子程序。每次调用时,

贵州大学_编译原理课件第二章(编译原理完整版)

贵州大学_编译原理课件第二章(编译原理完整版)

下一页 最后一页
退出
• 字母表是组成字符串的所有字符的集合。换句话说,字 符串中的所有字符取自字母表
• 定义中强调两个有限,因为计算机的表示能力有限 : <1> 字母表是有限的,即字母表中元素是有限多个;
<2> 字符串的长度是有限的,即字符串中字符个数是有限 多个。
• 由于字符串的有序性,使得以字符串作为元素的集合, 与一般意义下的集合有所不同,反映在集合运算上,强
➢ 实现方法:
最后一页 退出
– 作为单独的一遍:把字符流的源程序变为单词序列,输 出在一个中间文件上,这个文件作为语法分析程序的输
入而继续编译过程。
– 作为语法分析的子程序:当语法分析程序需要一个单词 时,调用该子程序;词法分析程序每得到一次调用,便
从源程序文件中读入一些字符,直到识别出一个单词或 直到下一单词的第一个字符为止。
便。运算符可采用一符一种的分法,但也可以把具
有一定共性的运算符视为一种。至于界符一般用一
符一种的分法
2.1.2 词法记号的属性
目 录 ➢ 如果一个记号只含一个单词符号,那么,对于这个
第一页 单词符号,记号就完全代表它自身了。若一个记号
上一页 下一页
含有多个单词符号,那么,对于它的每个单词符号, 除了给出记号之外,还应给出有关单词符号的属性 信息。
上一页
fi (a == f (x) ) …
下一页 ➢在实数是a.b格式下,可以发现下面紧急方式的错误恢复
➢错误修补
2.2 词法记号的描述与识别
目 录 ➢ 2.2.1 串和语言
第一页 上一页
– 从词法分析的角度看程序设计语言,它是由记号组成的 集合。
– 定义2.1 语言L是有限字母表∑上有限长度字符串的集合。

最新编译原理(课后习题答案ppt课件

最新编译原理(课后习题答案ppt课件
(a) 请指出此文法的终结符号, 非终结符号和开始符号. 终结符号: or, and, not, (, ), true, false 非终结符号: bexpr, bterm, bfactor 开始符号: bexpr
10
(b) 试对于句子 not ( true or false) 构造一棵分析树.
bexpr bterm bfactor not bfactor
a S b S
(d) 此文法产生的语言是什么?
由相同个数的a和b组成的字符串.
9
1.3 考虑文法 bexpr bexpr or bterm | bterm bterm bterm and bfactor | bfactor bfactor not bfactor | ( bfactor ) | true | false
(a) 0 ( 0 | 1)* 0 由0和1组成且以0开始和结束的符号串全体.
(b) ( ( | 0 ) 1* ) * 由0和1组成的符号串全体.
(c) ( 0 | 1 )* 0 ( 0 | 1) ( 0 | 1) 由0和1组成且以000,001,010或011结束的符号串全体. 长度大于等于3且倒数第3个字符为0的01符号串全体.
16
3.4 对于下列语言分别写出它们的正规表达式:
(a) 英文字母组成的所有符号串, 要求符号串中顺序包含 五个元音字母. 令letter={非元音的英文字母} letter* (a|A) letter* (e|E) letter* (i|I) letter* (o|O) letter* (u|U) letter*
18
(e) 带有偶数个0和奇数个1的由0和1组成的符号串全体. E为带有偶数个0和1的由0和1组成的符号串全体. 即 ( 00 | 11)* ( ( 01 | 10 ) ( 00 | 11)* ( 01 | 10 ) ( 00 | 11)* )* E1E|E0E1E0E
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

d. M1和M2状态数和有向. 边条数相等
1
第二章 词法分析
(3) DFA M(见图2-1)接受的字集为 。 a. 以0开头的二进制数组成的集合 b. 以0结尾的二进制数组成的集合 c. 含奇数个0的二进制数组成的集合 d. 含偶数个0的二进制数组成的集合 【解答】 (1) c (2) c (3) d
3
4
5
{4,7} {3,6}

4
3

{1,Y} {2,5,Y} —
.
10
第二章 词法分析
a
0
2
a, b
b b
1
图2-3 习题2.3的DFA M′
.
11
第二章 词法分析
a
0
1
a, b
b
图2-4 图2-3化简后的DFA M′
.
12
第二章 词法分析
2.4 正规式(ab)*a与正规式a(ba)*是否等价?请 说明理由。
【解答】 正规式(ab)*a对应的NFA如图2-5所示, 正规式a(ba)*对应的NFA如图2-6所示。
.
13
第二章 词法分析
2
a
b
a
X
1
Y
图2-5 正规式(ab)*a对应的NFA
.
14
第二章 词法分析
2
b
a
a
X
1
Y
图2-6 正规式a(ba)*对应的DFA
.
15
第二章 词法分析
这两个正规式最终都可得到最简DFA,如图2-7所 示。因此,这两个正规式等价。
.
16
第二章 词法分析
a
0
1
b
图2-7 最简NFA
.
4
第二章 词法分析
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,So,Z), 由f的定义可知f(x,a)、f(y,b)均为多值函数,因此M
.
2
第二章 词法分析
0
X 0
Y1
图2-1 习题2.1的DFA M
.
3
第二章 词法分析
2.2 什么是扫描器?扫描器的功能是什么? 【解答】 扫描器就是词法分析器,它接受输入 的源程序,对源程序进行词法分析并识别出一个个单 词符号,其输出结果是单词符号,供语法分析器使用。 通常是把词法分析器作为一个子程序,每当词法分析 器需要一个单词符号时就调用这个子程序。每次调用 时,词法分析器就从输入串中识别出一个单词符号交 给语法分析器。
.
18
第二章 词法分析
2
5
6
a
a
b
ba
a
a
b
b
a
X
1
3
4
Y
图2-8 习题2-5的NFA
.
19
第二章 词法分析
用子集法将图2-8确定化,如图2-9所示。 由图2-9重新命名后的状态转换矩阵可化简为(也 可由最小化方法得到) {0,2} {1} {3,5} {4,6} {7} 按顺序重新命名为0、1、2、3、4后得到最简的 DFA,如图2-10所示。
第二章 词法分析
第二章 词法分析
2.1 完成下列选择题:
(1) 词法分析器的输出结果是 。
a. 单词的种别编码 b. 单词在符号表中的位置
c. 单词的种别编码和自身值 d. 单词自身值
(2) 正规式M1和M2等价是指 。
a. M1和M2的状态数相等
b. M1和M2的有向边条数相等
c. M1和M2所识别的语言集相等
.
20
第二章 词法分析
I {X} {1} {2} {3} {4} {5} {Y} {6}
Ia {1} {2} {1} — {Y} — {6} {Y}
Ib
S

0
{3}
1

重新命名
2
{4}
3
{5}
4
{4}
5

7

6
a 1 2 1 — 7 — 6 7
b — 3 — 4 5 4 — —
图2-9 习题2.5的状态转换矩阵
是一非确定有限自动机。
先画出NFA M相应的状态图,如图2-2所示。
.
5
第二章 词法分析
a
a b X b
Y
b
图2-2 习题2.3的NFA M
.
6
第二章 词法分析 用子集法构造状态转换矩阵,如表2-1所示。
表2-1 状态转换矩阵
I {x } {y} {x ,y}
Ia {x ,y}
— {x ,y}
Ib {y} {x ,y} {x ,y}
.
23
第二章 词法分析
0
0
2
3
4
7
0
00
1
0
0
0
1
0
0
1
X
1
5
6
Y
图2-11 习题2.6的NFA
.
24
第二章 词法分析 用子集法将图2-11的NFA确定化,如图2-12所示。
I {X}
I0 {X}
I1 {1}
S
0
1
0
0
1
{1}
{2,5}

1
2

{2,5} {3,6}

重新命名
2
3

{3,6} {4,7} {1,Y}
.
17
第二章 词法分析
2.5 设有L(G)={a2n+1b2ma2p+1| n≥0,p≥0,m≥1}。 (1) 给出描述该语言的正规表达式; (2) 构造识别该语言的确定有限自动机(可直接用 状态图形式给出)。 【解答】 该语言对应的正规表达式为 a(aa)*bb(bb)*a(aa)* , 正 规 表 达 式 对 应 的 NFA 如 图 2-8 所示。
.
7
第二章 词法分析
将转换矩阵中的所有子集重新命名,形成表2-2所 示的状态转换矩阵,即得到
M′=({0,1,2},{a,b},f,0,{1,2}),其状态转换图如图 2-3所示。
.
8
第二章 词法分析 表2-2 状态转换矩阵
f 字 符
状 态
a
b
0
2
1
1

2
2
2
2
.
9
第二章 词法分析
将图2-3所示的DFA M′最小化。首先,将M′的状 态分成终态组{1,2}与非终态组{0}。其次,考察{1,2}, 由于{1,2}a={1,2}b={2} {1,2},所以不再将其划分了, 也 即 整 个 划 分 只 有 两 组 : {0} 和 {1,2} 。 令 状 态 1 代 表 {1,2},即把原来到达2的弧都导向1,并删除状态2。 最后,得到如图2-4所示的化简了的DFA M′。
.
21
第二章 词法分析
a
b
a
a
b
b
a
0
1
2Leabharlann 34图2-10 习题2.5的最简DFA
.
22
第二章 词法分析
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,如图2-11所示。
相关文档
最新文档