编译原理:学习指导与典型题解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)——不是NFA的成分o
A.有穷字母表B.初始状态集合
c.终止状态集合D.有限状态集合
(北京航天航空大学研究生入学考试试题
(2)——不是编译程序的组成部分0
A.词法分析程序B.代码生成程序
c.设备管理程序D.语法分析程序
(北京航天航空大学研究生入学考试试题
解答
(1)B,(2)C
例题2.2 给出下面描述的正规表达式
(1)以0l结尾的二进制数串;
(2)能被5整除的十进制整数;
(3)包含奇数个t或奇数个0的二进制数串
解题思路
(1)分析题意,要求的是二进制串,即由0和1构成的串,并且必须以ot结尾,所以
本题可以分两部分去完成,一部分实现由o和1构成的任意串,一部分即01,然后将它们连接到一起就可以了,所以本题的解答是:(1|0)*01
(2)分析题意,本题要求是十进制整数,也就是由o09这10个数字组成的字符串,
并且不能以o开头(整数“o”除外),要求能被5整除,则该串必须以0或者5结尾0根据我们的分析,可以把本题分成两种情况考虑:一种情况是该整数只有1位,则该整数有0 和5两种可能;另外一种情况是该整数有多位,则该整数可以分成3部分考虑,一是第l
位必须不为0,二是最后1位必须为0或5,三是中间部分可有可无,并且可以由0…9之间任意数字构或,所以本题的正规表达式为:(1|2|3|4|5|6|7|8|9) (0|1|2|3|4|5|6|7|8|9)*(0|5)| (0|5)
(3)本题求二进制串,并且要求包含奇数个0或奇数个1,由于o和1都可以在二进制串
中任何地方出现,所以本题只需要考虑一种情况,另外一种情况也可以类似求得0考虑包含奇数个0的字符串:由于只关心0的个数的奇偶数,我们可以把二进制串分成多段来考虑,第1段为二进制串的开始到第1个0为止,这一段包含1个o,并且0的前面有0个或多个l,对于剩下的二进制串按照每段包含两个0的方式去划分,即以o开始,以0结尾,中间可以有0个或多个1,如果一个二进制串被这样划分完后,剩下的部分如果全部是全1串(这些全1串在前面划分的串之间或最后),则该二进制串就具有奇数个o,所以该二进制串可以这样描述:以第1段(1‘o)开始.后面由全1串(1‘)以及包含两个o的串(ol0o)组成,所以包含奇数个0的正规表达式为:100(1[ol’o]‘,本题的解答则是:1*0(1|01*0)*|0*1(0|10*1)*