词法分析及习题解答
编译原理词法分析习题集带答案

《编译原理》习题(一)——词法分析一、就是非题(请在括号内,正确得划√,错误得划×)1.编译程序就是对高级语言程序得解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一得终态。
(×)9.两个正规集相等得必要条件就是她们对应得正规式等价。
(× )二、选择题1.词法分析器得输出结果就是_____。
A.( ) 记号B.( ) 相应条目在符号表中得位置C.( ) 记号与属性二元组D.( ) 属性值2. 正规式M 1 与M 2 等价就是指_____。
A.( ) M1与M2得状态数相等B.( ) M1与M2得有向边条数相等C.( ) M1与M2所识别得语言集相等D.( ) M1与M2状态数与有向边条数相等3.语言就是A.句子得集合B.产生式得集合C.符号串得集合D.句型得集合4.编译程序前三个阶段完成得工作就是A.词法分析、语法分析与代码优化B.代码生成、代码优化与词法分析C.词法分析、语法分析、语义分析与中间代码生成D.词法分析、语法分析与代码优化5.扫描器所完成得任务就是从字符串形式得源程序中识别出一个个具有独立含义得最小语法单位即A. 字符B.单词C.句子D.句型6.构造编译程序应掌握______。
A.( )源程序B.( ) 目标语言C.( ) 编译方法D.( ) 以上三项都就是7.词法分析得任务就是A.识别单词B.分析句子得含义C.识别句子D.生成目标代码三、填空题1.计算机执行用高级语言编写得程序主要有两种途径:___解释__与__编译___。
3、编译过程可分为( 词法分析) ,(语法分析),(语义分析与中间代码生成),(优化)与(目标代码生成)五个阶段。
6、扫描器得任务就是从( 源程序中)中识别出一个个( 单词符号)。
17、一张转换图只包含有限个状态,其中有一个被认为就是(初)态;而且实际上至少要有一个(终)态。
1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
编译原理教程课后习题答案

第二章 词法分析2.1 完成下列选择题: (1) 词法分析器的输出结果是 。
a. 单词的种别编码 b. 单词在符号表中的位置 c. 单词的种别编码和自身值 d. 单词自身值 (2) 正规式M1和M2等价是指 。
a. M1和M2的状态数相等 b. M1和M2的有向边条数相等 c. M1和M2所识别的语言集相等 d. M1和M2状态数和有向边条数相等 (3) DFA M(见图2-1)接受的字集为 。
a. 以0开头的二进制数组成的集合 b. 以0结尾的二进制数组成的集合 c. 含奇数个0的二进制数组成的集合 d. 含偶数个0的二进制数组成的集合 【解答】 (1) c (2) c (3) d图2-1 习题的DFA M2.2 什么是扫描器?扫描器的功能是什么? 【解答】 扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
通常是把词法分析器作为一个子程序,每当词法分析器需要一个单词符号时就调用这个子程序。
每次调用时,词法分析器就从输入串中识别出一个单词符号交给语法分析器。
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 是一非确定有限自动机。
先画出NFA M 相应的状态图,如图2-2所示。
图2-2 习题的NFA M用子集法构造状态转换矩阵,如表表2-1 状态转换矩阵1b将转换矩阵中的所有子集重新命名,形成表2-2所示的状态转换矩阵,即得到 M ′=({0,1,2},{a,b},f,0,{1,2}),其状态转换图如图2-3所示。
编译原理复习资料 例题习题讲解(ch3)

0 S 0 V 1 1 0 U 1 Z
图2文法 G[S]的状态转换图 对符号串 100101 的识别过程经历了状态 S、V、S、U、S、U、Z,终止于终止状态 Z,所以 100101 是此文法的句子。 对符号串 100111 的识别过程经历了状态 S、V、S、U、S、V识别出 10011 后,在 状态V无法进一步识别,所以 100111 不是此文法的句子。 例 7 给出描述包含奇数个 1 或奇数个 0 个二进制数串的正规表达式: 【解】解题思路: 本题求二进制串,并且要求包含奇数个 0 或奇数个 1,由于 0 和 1 都可以在二进制串中
任何地方出现,所以本题只需要考虑一种情况,另外一种情况也可以类似求得。考虑包含奇 数个 0 的字符串:由于只关心 0 的个数的奇偶数,我们可以把二进制串分成多段来考虑,第 1 段为二进制串的开始到第 1 个 0 为止, 这一段包含 1 个 0, 并且 0 的前面有 0 个或多个 1, 对于剩下的二进制串按照每段包含两个 0 的方式去划分,即以 0 开始,以 0 结尾,中间可以 有 0 个或多个 1,如果一个二进制串被这样划分完后,剩下的部分如果全部是全 1 串(这些 全 1 串在前面划分的串之间或最后) ,则该二进制串就具有奇数个 0,所以该二进制可以这 * * * 样描述:以第 1 段(1 ) )开始,后面由全 1 串(1 )以及包含两个 0 的串(01 0)组成, * * * * * 所以包含奇数个 0 的正规表达式为:1 0(1|01 0) ,本题的解答则是:1 0(1|01 0) * * * * |0 1(0|10 1) 。 例 8 语言 L 是所有由偶数个 0 和偶数个 1 组成的句子的集合,给出定义 L 的正规文法。 【解】解题思路: 这道题可以从状态转换图着手,由于每读入 1 个“0” , “0”的个数的奇偶数就会变,每 读入 1 个“1” , “1”的个的奇偶数也会改变,因此本题可以引入 4 个状态,分别代表偶数个 “0”和“1” 、奇数个“0”和“1” 、奇数个“1”偶数个“0”和奇数个“0”偶数个“1” , 那么,能接受语言 L 的状态转换图如下图 3 所示。
第二章课后习题及解析

表2-2 重命名后的状态转换矩阵
f
字符
a
b
状态
0
2
1
1
—
2
2
2
2
将图2-4所示的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。最后,得到如图25所示的化简了的DFA M′。
A.一定不存在 C.可能存在 (6) DFA适用于 。 A.定理证明 C.词法分析
一个DFA M′,使L(M)=
B.一定存在 D.可能不存在
B.语法分析 D.语义加工
(7) 下面用正规表达式描述词法的论述中,不正确的是 。
A.词法规则简单,采用正规表达式已足以描述
B.正规表达式的表示比上下文无关文法更加简洁、直
先画出NFA M相应的状态图,如图2-3所示。
图2-3 习题2.3的NFA M
用子集法构造状态转换矩阵,如表2-1所示。
表2-1 状态转换矩阵
I {x} {y} {x,y}
Ia {x,y}
— {x,y}
Ib {y} {x,y} {x,y}
将转换矩阵中的所有子集重新命名,形成表2-2所示的 状态转换矩阵,即得到M′=({0,1,2},{a,b},f,0,{1,2}),其状 态转换图如图2-4所示。
用子集法将图2-6和图2-7分别确定化为如图2-8(a)和(b) 所示的状态转换矩阵,它们最终都可以得到最简DFA,如图 2-9所示。因此,这两个正规式等价。
编译原理词法分析习题集带答案

《编译原理》习题(一)——词法分析一、是非题(请在括号内,正确的划√,错误的划×)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )二、选择题1.词法分析器的输出结果是_____。
A.( ) 记号B.( ) 相应条目在符号表中的位置C.( ) 记号和属性二元组D.( ) 属性值2.正规式M 1 和M 2 等价是指_____。
A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.语言是A.句子的集合B.产生式的集合C.符号串的集合D.句型的集合4.编译程序前三个阶段完成的工作是A.词法分析、语法分析和代码优化B.代码生成、代码优化和词法分析C.词法分析、语法分析、语义分析和中间代码生成D.词法分析、语法分析和代码优化5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A.字符B.单词C.句子D.句型6.构造编译程序应掌握______。
A.( )源程序B.( ) 目标语言C.( ) 编译方法D.( ) 以上三项都是7.词法分析的任务是A.识别单词B.分析句子的含义C.识别句子D.生成目标代码三、填空题1.计算机执行用高级语言编写的程序主要有两种途径:___解释__和__编译___。
3.编译过程可分为(词法分析),(语法分析),(语义分析与中间代码生成),(优化)和(目标代码生成)五个阶段。
6.扫描器的任务是从(源程序中)中识别出一个个(单词符号)。
17.一张转换图只包含有限个状态,其中有一个被认为是(初)态;而且实际上至少要有一个(终)态。
1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
编译原理词法分析习题集带答案

《编译原理》习题(一)——词法分析一、就是非题(请在括号内,正确的划√,错误的划×)1.编译程序就是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)9.两个正规集相等的必要条件就是她们对应的正规式等价。
(× )二、选择题1.词法分析器的输出结果就是_____。
A.( ) 记号B.( ) 相应条目在符号表中的位置C.( ) 记号与属性二元组D.( ) 属性值2. 正规式M 1 与M 2 等价就是指_____。
A.( ) M1与M2的状态数相等B.( ) M1与M2的有向边条数相等C.( ) M1与M2所识别的语言集相等D.( ) M1与M2状态数与有向边条数相等3.语言就是A.句子的集合B.产生式的集合C.符号串的集合D.句型的集合4.编译程序前三个阶段完成的工作就是A.词法分析、语法分析与代码优化B.代码生成、代码优化与词法分析C.词法分析、语法分析、语义分析与中间代码生成D.词法分析、语法分析与代码优化5.扫描器所完成的任务就是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A. 字符B.单词C.句子D.句型6.构造编译程序应掌握______。
A.( )源程序B.( ) 目标语言C.( ) 编译方法D.( ) 以上三项都就是7.词法分析的任务就是A.识别单词B.分析句子的含义C.识别句子D.生成目标代码三、填空题1.计算机执行用高级语言编写的程序主要有两种途径:___解释__与__编译___。
3、编译过程可分为( 词法分析) ,(语法分析),(语义分析与中间代码生成),(优化)与(目标代码生成)五个阶段。
6、扫描器的任务就是从( 源程序中)中识别出一个个( 单词符号)。
17、一张转换图只包含有限个状态,其中有一个被认为就是(初)态;而且实际上至少要有一个(终)态。
1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
习题参考答案 第4章 词法分析(注:部分解题过程略)

习题参考答案 第4章 词法分析(注:部分解题过程略)4.1 编写以下字符串集的正规式(若没有正规式则说明原因): (1)以a 开头和结尾的所有小写字母串; (2)以a 开头或/和结尾的所有小写字母串; (3)不以0开头的所有数字串;(4)每个5均在每个1之前的所有数字串;(可能有两种理解:a ,每个1前面总有个5;b ,所有5都在所有的1前面) (5)a 和b 的个数相等的所有ab 串。
解:(1)a(a|b|c|…|z)*a|a(2)a(a|b|c|…|z)*|(a|b|c|…|z)*a (3)(1|…|9)(0|1|2|…|9)*(4)((0|2|3|4|6|7|8|9)*51)*(0|2|3|4|6|7|8|9)* (按a 的理解) (5)“a 和b 的个数相等的所有ab 串”属上下文有关,正规式不能描述。
4.2 简述由下列正规式生成的语言: (1)(a|b)*a(a|b|ε) (2)(A|B|…|Z)(a|b|…|z)* (3)(aa|b)*(a|bb)*(4)(0|1|…|9|A|B|C|D|E|F)+(x|X) 解:(1)以a ,aa 或ab 结尾的ab 串; (2)以1个大写字母打头的小写字母串;(3)由若干个a 串和b 串交替出现的串,其中前段的a 串和后段的b 串的长度均为偶数; (4)十六进制数的一种表示形式,以x 或X 结尾。
4.3 构造4.1题的每个字符串集的DFA ,或说明不存在DFA 的原因。
解:(1)由正规式a(a|b|c|…|z)*a|a 构造的NFA1,以及确定化得到的DFA1分别为:(2)由正规式a(a|b|c|…|z)*|(a|b|c|…|z)*a 构造的NFA2,以及确定化简得到的DFA1…,zDFA2分别为:(3)由正规式(1|…|9)(0|1|2|…|9)*构造的DFA3为:(4)依题意构造的DFA4为:(5)确定有限自动机与3型文法等价。
而“a 和b 的个数相等的所有ab 串”属上下文有关,需要1型文法描述,故确定有限自动机不能描述。
第三章 词法分析 习题讲解

③状态空间重新命名,得到的状态转换矩阵为:
④将其最小化,首先划分状态{1,2,3,4},{5}两个 状态由于状态2和状态4输入a后都达到状态3,输入b 后都达到4,所以状态2和状态4等价。
1
a
2 3 (4) 3 4 4
b
2 2 2 2
⑤所以最小DFA的初态集是0,终态集为{4}, 状态集为{1,2,3,4},字母表为{a,b} , 状态转换矩阵如上。
a {X} {1,2,3} {2,3,4} {} {2,3,4} {2,3,4,Y}
b 1 ε
b {1,2,3} {2,3} {2,3}
a 2
ε
b
3
a
4
a
Y
{2,3}
{2,3,4,{Y}}
{2,3,4}
{2,3,4,Y}
{2,3}
{2,3} a 1 2 3 4 (5) 3 5 3 5 b 2 4 4 4 4
2.1,2.5 2.6 2.8 2.9 2.10 2.13
1 构造与正规式(a|b|c)*a等价的DFA: 答:(1)与此正规式对应的NFA为 a
0
(2)状态转换矩阵为:
a {0,1,2}
ε
b
1
cபைடு நூலகம்
b
ε
2
c
a
3
{1,2,3}
{1,2}
{1,2}
{1,2,(3)}
{1,2}
{1,2,3}
{1,2,3}
⑤所以最小DFA的初态为1,终态集为{3},状态集为 {1,2,3},字母表为{a,b},状态转换矩阵如上。
{3}
2
3
4 写出在字母表{a,b}上,不是a开头,但以aa结尾的字符串集合的正规表达式?并
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
N(s)
y
试题分析——武汉大学
三、 (20 分 ) 设有语言 L={ α | α∈ {0,1} + ,且α 不以 0 开头,但以 00 结尾 } 。 ⑴ (5 分 ) 试写出描述 L 的正规表达式; ⑵ (15 分 ) 构造识别 L 的 DFA (要求给出 详细过程,并画出构造过程中的 NFA 、 DFA 的状态转换图,以及 DFA 的形式化描述 ) 。
试题分析
一、(15分)下面给出的是一个有限状态自动机 M的状态图,M有开始状态0和接受状态4。试 问下述哪一个实数可被M接受? ① +.47 ② -1. ③ .5 ④ -11.47
正规表达式到NFA
从正规式R构造NFA完整规则如下:
x y
正规式,构造NFA为:
对应正规式,构造NFA为: x 对应正规式a,构造NFA为: x
语言、推导、归约
文法的类型
0型文法:对任一产生式α →β ,都有α ∈ (VN∪VT)* 且至少含有一个非终结符, β ∈(VN∪VT)* 1型文法:对任一产生式α →β ,都有 |β |≥|α |, 仅仅 S→ε 除外 2型文法:对任一产生式α →β ,都有 α ∈VN ,β ∈(VN∪VT)* 3型文法:任一产生式α →β 的形式都为 A→aB或A→a,其中A∈VN ,B∈VN ,a∈VT
S1 S2 S3 S4 S5
S2 S2 S2 S2 S2
S3 S4 S3 S5 S3
6、标记S5: ε-closure({move(S5,b)})= {1, 2, 4, 5, 6, 7} =S3
S1 S2 S3 S4 S5
S2 S2 S2 S2 S2
S3 S4 S3 S5 S3
试题分析
2、(8分)将下图所示的NFA确定化为等价的 DFA。
2、标记S1: ε-closure({move(S1,b)})= {1, 2, 4, 5, 6, 7} =S3
S1 S2 S3
S2 S2 S2 S2 S2
S3 S4 S3 S5 S3
3、标记S2: ε-closure({move(S2,a)})={1, 2, 3, 4, 6, 7, 8}=S2
S1 S2 S3
*
试题分析——山西师范大学
3、文法 S→aaS|abc 定义的语言是( )。 A.{a2kbc|k>0} B.{akbc|k>0} C.{a2k-1bc|k>0} D.{akakbc|k>0} 4、令∑={a,b},则∑上所有的以b开头的,后跟若干个ab的串的正 则式表示为( )。 A.b(ab) B.b(ab)* C.b(ab)+ D.bab* 5、如果一个文法是二义的,则必然存在某个句子对应( ) A.恰好两棵相同的推导树 B.恰好两棵不同的推导树 C.两棵或两棵以上不同的推导树 D.最左推导和最右推导的推导树相同
词法分析复习及习题解答
数计学院 宋彩芳
词法分析复习
预备知识
编译的过程(第一章) 文法和语言的形式定义(第三章) 文法的类型(第三章)
单词的描述工具(正规文法和正规式) 单词的识别工具(DFA和NFA) 相互之间的等价性
词法分析(第四章)
编译程序结构(components)
词法分析程序
S1 S2 S3 S4
S2 S2 S2 S2 S2
S3 S4 S3 S5 S3
5、标记S4: ε-closure({move(S4,b)})= {1, 2, 4, 5, 6, 7,10}=S5
S1 S2 S3 S4 S5
S2 S2 S2 S2 S2
S3 S4 S3 S5 S3
6、标记S5: ε-closure({move(S5,a)})= {1, 2, 3, 4, 6, 7, 8} =S2
NFA到正规表达式
规则:
1
a.
r1
2
r2
3
1
r1r2
3
r1 b. 1 r2 2
1
r1|r2
2
r2
c. 1 r1 2 r3 3
1
r1r2*r3
3
试题分析
一、(15分)下面给出的是一个有限状态自动机M 的状态图,M有开始状态A和接受状态C。试问 下述正规表达式中的哪几个可被M接受? 正规表达式:① 0(10)*0 ② 11(01)*1 ③ 1(101)*00
S2 S2 S2 S2 S2
S3 S4 S3 S5 S3
3、标记S2: ε-closure({move(S2,b)})= {1, 2, 4, 5, 6, 7, 9}=S4
S1 S2 S3 S4
S2 S2 S2 S2 S2
S3 S4 S3 S5 S3
4、标记S3: ε-closure({move(S3,a)})= {1, 2, 3, 4, 6, 7, 8}=S2
语法分析程序
表 格 管 理 程 序 语义分析程序 中间代码生成程序 代码优化程序 目标代码生成程序 出 错 处 理 程 序
编译阶段的组合
分析(analysis)和综合(synthesis)
源程序的分析
词法分析、语法分析、语义分析
代码生成
目标程序的综合
编译阶段的划分前端(front end)和后端(back end) — 编译的前端
正规式和正规文法的转换
正规式到正规文法的转换:
A=xy,则AxB, By
A=x*y,则AxA|y
A=x|y, 则Ax和Ay
AxB, By, 则A=xy AxA|y, 则A=x*y Ax, Ay, 则A=x|y
正规式到正规文法的转换:
试题分析——北邮试题
一、(10分) 考虑如下文法: S→AB|AS A→a|aA B→b 下面哪一个正规表达式与上述文法等价? ① aa*b+ ② aa*b ③ (ab)* ④ a(ab)* ⑤ a(ab)*b单词的识别工具 Nhomakorabea
确定的有穷自动机DFA 不确定的有穷自动机NFA NFA的确定化 DFA的最小化
DFA 的状态图表示
一个确定的有穷自动机(DFA)M是一个五元组: M=(K,Σ,f,S,Z)
a U a
b
a
a,b
S Q
b
V
b
∑*上的符号串t被DFA M接受
例:证明t=baab被下图的DFA所接受。
试题分析——武汉大学
二、 (10 分 ) 请构造一个文法,使其产生这样的 表达式 E :表达式中只含有双目运算符 + 、 * ,且 + 的优先级高于 * , + 采用右结合, * 采 用左结合,运算对象只有标识符 i ,可以用括 号改变运算符优先级。要求给出该文法的形式 化描述。
词法分析复习
预备知识(第三章)
S1 S2 S3 S4
S2 S2 S2 S2 S2
S3 S4 S3 S5 S3
4、标记S3: ε-closure({move(S3,b)})= {1, 2, 4, 5, 6, 7} =S3
S1 S2 S3 S4
S2 S2 S2 S2 S2
S3 S4 S3 S5 S3
5、标记S4: ε-closure({move(S4,a)})= {1, 2, 3, 4, 6, 7, 8}=S2
1.
1、ε-closure({0}) = {0, 1, 2, 4, 7} = S1
S1
S2 S2 S2 S2 S2
S3 S4 S3 S5 S3
2、标记S1: ε-closure({move(S1,a)})={1, 2, 3, 4, 6, 7, 8}=S2
S1 S2
S2 S2 S2 S2 S2
S3 S4 S3 S5 S3
文法和语言的形式定义 文法的类型 单词的描述工具(正规文法和正规式) 单词的识别工具(DFA和NFA) 相互之间的等价性
词法分析(第四章)
单词的描述工具
正规文法
正规式
以标识符为例: I→l|Il|Id 或 I→l|lT T→l|d|lT|dT 以标识符为例: l ( l | d )*
a
U b
a
b, a
Q
S
b
a
V b
非确定有穷自动机
例中 NFA M' ,对符号串β =bbb可由3条路来识别。
b
b
2
1 b
a
3
b 第一条路:状态1状态2状态3状态2;
第二条路:状态1状态1状态2; 第三条路:状态3状态2状态3状态2;
NFA的确定化
状态集合I的ε -闭包,表示为ε -closure(I) 定义为一状态集,是状态集I中的任何状态S经 任意条ε 弧而能到达的状态的集合。状态集合I 的任何状态S都属于ε -closure(I)。 2. 状态集合I的a弧转换,表示为move(I,a) 定义为状态集合J,其中J是所有那些可从I中的 某一状态经过一条a弧而到达的状态的全体。
试题分析
1、已知文法G(S): S→a|∧|(T) T→T,S|S ⑴ 给出句子(a,(a,a))的最左推导并画出语法树; (5分) ⑵ 给出句型((T,S),a)的短语、直接短语、句柄。 (5分)
试题分析——武汉大学
一、 (10 分 ) 对于文法 G[S] : S → 1A | 0B | ε A → 0S | 1AA B → 1S | 0BB ⑴ (3 分 ) 请写出三个关于 G[S] 的句子; ⑵ (4 分 ) 符号串 11A0S 是否为 G [S] 的句型 ?试证明你的结论。 ⑶ (3 分 ) 试画出 001B 关于 G [S] 的语法树。