吉林大学软件学院编译原理与实现习题(三) 期末复习用

一.单选题

1.是否存在这样一些语言,它们能被确定有限自动机识别,但不能用正则表达式表示。

A、存在

B、不存在

C、无法判定是否存在

 

正确答案: B 

正则表达式和自动机在接受语言的能力上是等价的。

 

2.将识别各类单词的有限自动机合并后得到的有限自动机会:

A、可能是NFA,也可能是DFA

B、一定是DFA

C、一定是NFA

D、一定是最小的DFA

 

正确答案: A

 

3.词法分析器的输入是( )

A、单词符号串

B、源程序

C、语法单位

D、目标程序

 

正确答案: B 

词法分析器的功能是将源程序由字符序列转换等价的token序列,并检查源程序中的词法错误,因此词法分析器的输入是源程序。

 

4.作为语法分析程序子程序的词法分析程序,它的返回结果是( )

A、单词属性值

B、单词在符号表中的位置表示法

C、单词的种别编码和语义值

D、单词的种别编码

 

正确答案: C 

 当词法分析程序作为语法分析器的子程序存在时,语法分析器的每次调用,词法分析器都会返回一个token,token是单词的机内表示,包含单词的种类信息和语义值。

 

5.将编译程序分成若干个“遍”是为了( )

A、利用有限的机器内存并提高机器的执行效率

B、使程序的结构更加清晰

C、提高程序的执行效率

D、利用有限的机器内存但降低了机器的执行效率

 

正确答案: B 

所谓“遍”就是对源程序或源程序的中间表示形式从头到尾扫描一次,并作加工处理,生成新的中间结果或目标程序。编译程序分成若干“遍”,实际就是编译程序对源程序或其等价的中间代码扫描了若干次,每次都执行不同的功能,这样做的目的是编译程序的结构更加清晰。

 

6.词法分析中能够发现以下( )错误。

A、操作数类型不匹配

B、标识符重复声明

C、程序中出现非法符号

D、除法溢出

 

正确答案: C 

词法分析器的功能是将源程序由字符序列转换等价的token序列,并检查源程序中的词法错误,以上错误中,只有非法符合属于词法错误。

 

7.编译程序中的语法分析器接受以      为单位的输入,并产生有关信息供以后各阶段使用。

A、表达式

B、产生式

C、单词

D、语句

 

正确答案: C 

 

8.在词法分析阶段不能识别的是( )。

A、标识符

B、运算符

C、四元式

D、常数

 

正确答案: C

 

二.多选题

1.正则表达式和有限自动机的关系以下说法正确的是:

A、一个正则表达式只能等价于一个确定的有限自动机

B、正则表达式、NFA和DFA在接受语言的能力上是相互等价的

C、对任何形式正则表达式r,都存在一个NFA M,满足L(M)=L(r)

D、一个正则表达式可以转化为一个等价的自动机,但自动机不一定都能表示为等价的正则表达式

 

正确答案: BC 

正则表达式和自动机在接受语言的能力上是等价的,并且一个正则表达式有可能等价于多个自动机。

 

2.与DFA相比,NFA的非确定性体现在:

A、允许有多个开始状态

B、允许有多个终止状态

C、在没有任何输入的情况下允许进行状态转换

D、一个状态可以有多个不同后继状态

 

正确答案: AC 

 

3.关于NFA的确定化说法正确的是:

A、NFA的确定化算法具有消除ε空边的功能

B、给定一个NFA,一定存在一个DFA,使得两者等价

C、一个NFA只能存在一个DFA与其等价

D、NFA确定化后会使得状态转换函数成为单值函数

 

正确答案: ABD 

根据等价定理B正确。而且NFA确定化后转化为DFA,而DFA无空边,且状态转换函数是单值函数,所以A和D正确。C错是因为NFA等价的DFA可以有多个,但最简DFA就一个。

 

4.以下说法正确的是:

A、NFA确定化后就成为最简DFA

B、一个自动机的最简DFA是唯一的

C、没有等价状态的DFA是最简DFA

D、DFA终止状态和非终止状态是不等价的

 

正确答案: BD 

和NFA等价的DFA可以有多个,但最小化的DFA只有一个。C错是因为如果没有无关状态,也没有等价状态的DFA才是最简DFA。

 

三.简答题

1.对下图所示非确定有限状态自动机M,将M分别进行确定化和最小化。

 

 

正确答案:

(1)NFA非确定机转为DFA确定机 

 

a

b

{1,2,3,4}+

{2,3,4}

{2,3,4,5}

{2,3,4}

{2,3,4}

{2,3,4,5}

{2,3,4,5}*

{2,3,4}

{2,3,4,5}

 

(2)DFA化简

{1,2,3,4}和{2,3,4}遇到a和b的后继状态一样,为等价状态。

所以最简DFA为两个状态:A: {1,2,3,4} ,{2,3,4} ,  B:{2,3,4,5}

最简DFA如下:

 

PS:

吉大软院的编译原理课应该是大三下的时候开设的,刚好我们赶上了疫情所以只能是线上学习。对我个人而言,我更偏向于线上非直播类型的授课方式,因为在线下课堂里听老师上课难免会走神,一走神就跟不上老师的节奏,线上视频课就可以更方便地翻看不懂的知识点,方便平时梳理知识点及期末复习。刚好最近考试和毕设选题还有其他东西该忙的也都忙完了,想着把以前的资料整理一下分享给学弟学妹们(其实没有学妹了),就当作回馈当初帮助我的学长们。
分享的资料清单包括平时所用教材、测验题以及期末复习资料。
资料皆仅限于学习交流用途,禁止商用!
需要的同学可以关注我的个人微信公众号:Jose的写字台
关注后回复关键字即可,之后会有更多的资料整理完毕后发布在公众号上,希望能帮助到你们!

  • 13
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
1. 实验内容 每一个正规集都可以由一个状态数最少的DFA所识别,这个DFA是唯一的(不考虑同构的情况)。任意给定的一个DFA,根据以下算法设计一个C程序,将该DFA 化简为与之等价的最简DFA。 2. 实验设计分析 2.1 实验设计思路 根据实验指导书和书本上的相关知识,实现算法。 2.2 实验算法 (1)构造具有两个组的状态集合的初始划分I:接受状态组 F 和接受状态组 Non-F。 (2)对I采用下面所述的过程来构造新的划分I-new. For I 中每个组G do Begin 当且仅当对任意输入符号a,状态s和读入a后转换到I的同一组中; /*最坏情况下,一个状态就可能成为一个组*/ 用所有新形成的小组集代替I-new中的G; end (3)如果I-new=I,令I-final=I,再执行第(4)步,否则令I=I=new,重复步骤(2)。 (4)在划分I-final的每个状态组中选一个状态作为该组的代表。这些代表构成了化简后的DFA M'状态。令s是一个代表状态,而且假设:在DFA M中,输入为a时有从s到t转换。令t所在组的代表是r,那么在M’中有一个从s到r的转换,标记为a。令包含s0的状态组的代表是M’的开始状态,并令M’的接受状态是那些属于F的状态所在组的代表。注意,I-final的每个组或者仅含F中的状态,或者不含F中的状态。 (5)如果M’含有死状态(即一个对所有输入符号都有刀自身的转换的接受状态d),则从M’中去掉它;删除从开始状态不可到达的状态;取消从任何其他状态到死状态的转换。 。。。。。。
1. 实验内容 每一个正规集都可以由一个状态数最少的DFA所识别,这个DFA是唯一的(不考虑同构的情况)。任意给定的一个DFA,根据以下算法设计一个C程序,将该DFA 化简为与之等价的最简DFA。 2. 实验设计分析 2.1 实验设计思路 根据实验指导书和书本上的相关知识,实现算法。 2.2 实验算法 (1)构造具有两个组的状态集合的初始划分I:接受状态组 F 和接受状态组 Non-F。 (2)对I采用下面所述的过程来构造新的划分I-new. For I 中每个组G do Begin 当且仅当对任意输入符号a,状态s和读入a后转换到I的同一组中; /*最坏情况下,一个状态就可能成为一个组*/ 用所有新形成的小组集代替I-new中的G; end (3)如果I-new=I,令I-final=I,再执行第(4)步,否则令I=I=new,重复步骤(2)。 (4)在划分I-final的每个状态组中选一个状态作为该组的代表。这些代表构成了化简后的DFA M'状态。令s是一个代表状态,而且假设:在DFA M中,输入为a时有从s到t转换。令t所在组的代表是r,那么在M’中有一个从s到r的转换,标记为a。令包含s0的状态组的代表是M’的开始状态,并令M’的接受状态是那些属于F的状态所在组的代表。注意,I-final的每个组或者仅含F中的状态,或者不含F中的状态。 (5)如果M’含有死状态(即一个对所有输入符号都有刀自身的转换的接受状态d),则从M’中去掉它;删除从开始状态不可到达的状态;取消从任何其他状态到死状态的转换。 。。。。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真的该去学习了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值