编译原理第一章练习和答案_2.docx

上传人:安*** 文档编号:18970122 上传时间:2022-06-03 格式:DOCX 页数:14 大小:17.40KB
返回 下载 相关 举报
编译原理第一章练习和答案_2.docx_第1页
第1页 / 共14页
编译原理第一章练习和答案_2.docx_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《编译原理第一章练习和答案_2.docx》由会员分享,可在线阅读,更多相关《编译原理第一章练习和答案_2.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、编译原理第一章练习和答案例1设有文法GS:Sa|T|TT,S|S1试给出句子(a,a,a)的最左推导。2试给出句子(a,a,a)的分析树3试给出句子(a,a,a)的最右推导和最右推导的逆经过(即最左规约)的每一步的句柄。【解】(1)(a,a,a)的最左推导S=(T)=(T,S)=(T,S,S)=(S,S,S)=(a,S,S)=(a,a,S)=(a,a,a)2(a,a,a)的分析树S(T)T,SST,Saa(3)(a,a,a)最右推导最左规约每一步的句柄S=(T)句柄为:(T)=(T,S)句柄为:T,S=(T,a)句柄为:a=(T,S,a)句柄为:T,S=(T,a,a)句柄为:第一个a=(S,a

2、,a)句柄为:S=(a,a,a)句柄为:第一个a例2已知文法GZ:Z0U|1VU1Z|1V0Z|01请写出此文法描绘的只含有个符号的全部句子。2GZ产生的语言是什么?3该文法在Chomsky文法分类中属于几型文法?【解】10101,0110,1010,10012分析GZ所推导出的句子的特点:由Z开场的推导不外乎图1所示的四种情形。图1文法GZ可能的几种推导Z1UZUZ1Z1VZ1V由Z推导出10或01后就终止或进入递归,而Z的每次递归将推导出一样的符号串:10或01。所以GZ产生的语言L(GZ)=x|x(10|01)+(3)该文法属于3型文法。例3已知文法G=(A,B,C,a,b,c,P,A)

3、,P由下面产生式组成:AabcAaBbcBbbBBcCbccbCCbaCaaBaCaa此文法所表示的语言是什么?【解】分析文法的规则:每使用一次BcCbcc,b、c的个数各增加一个;每使用一次aCaaB或aCaa,a的个数就增加一个;产生式BbbB、bCCb起连接转换作用。由于A是开场符号,由产生式Aabc推导得到终结符号串abc;由产生式AaBbc推导得到B后,每当使用产生式BbbB、BcCbcc、bCCb、aCaaB就会递归调用B一次,所产生的a、b、c的个数分别增加一个,因而推导所得的终结符号串为abc、aabbcc、aaabbbccc、所以文法描绘的语言为anbncn|n0.例4构造描

4、绘语言L(GS)=nn|n0的文法。【解】(1)找出语言的一些典型句子:n=0n=1()n=2()所以,L(GS)=、()()、()、(2)分析句子的特点:只含有(和),(和)的个数一样且对称,句子中所含的符号数可无限,句子的个数可无限。(3)凑规则:由S|()得到|(),由A(S)得到(),()是在的两边再加上一对得到,()是在()的两边再加上一对得到,所以将上述产生式合并为S(S)|。(4)得到文法GS:S(S)|(5)检验:语言所有的句子均可由文法GS推导出来,文法GS推导出来的所有终结符号串均为语言的句子.例5构造描绘语言L(GS)=ambn|nm0的文法。【解】找出语言的一些典型句子

5、:abb、abbb、aabbb、aabbbb、,语言的句子的特点是仅含有a、b,a在b的左边,b的个数大于a的个数,a的个数至少是1。单独生成ck,k1可用产生式Cc|Cc句子中要求b的个数大于a的个数,所以得到文法:GS:SAb|SbAaAb|ab检验:语言所有的句子均可由文法GS推导出来,文法GS推导出来的所有终结符号串均为语言L(GS)的句子.例6设有文法GS:SS*S|S+S|(S)|i该文法能否为二义文法?【解】该文法是二义文法,由于该文法存在句子i*i+i,该句子有两棵不同的语法树如图2所示.。SS*SSS(1)+SS+SSS(2)*iii图2句子i*i+i的语法树例7写一个文法,

6、使其语言是奇数集,且每个奇数不以0开始。【解】解题思路首先分析题意,此题是希望构造一个文法,由它产生的句子是奇数,并且不以0开始,也就是讲它的每个句子都是以1、3、5、7、9中的某个数结尾。假如数字只要一位,则1、3、5、7、9就知足要求,假如有多位,则要求第1位不能是0,而中间有多少位,每位是什么数字必须是数字则没什么要求,因而,我们能够把这个文法分3部分来完成。分别用3个非终结符来产生句子的第1位、中间部分和最后一位。引入几个非终结符,其中,一个用作产生句子的开始,能够是19之间的数,不包括0,一个用来产生句子的结尾,为奇数,另一个则用来产生以非0整数开始后面跟任意多个数字的数字串,进行分

7、解之后,这个文法就很好写了。解答:G(S):SCDDCCBABA0A2468DD13579例8写一个上下文无关文法CFG,使其语言是能被5整除且不以0开始的无符号整数的集合。如5,10,15,.【解】解答:能被5整除的数从形式上看,是以0,5结尾的数字串。题目要求的不以0开始,并要注意0不是该语言的句子。所求文法为:G(S):SMF5F50MMDNDN0N123456789例9证实下面的文法是二义的:SSSS【解】解题思路:根据文法的二义性的定义,假如要证实该文法是二义的,必须找到一个句子,使得该句子具有两个不同的最右推导或两个不同的语法树。我们首先分析这个文法,根据我们对程序语言的了解,不难

8、发现,这个文法应该是用来表示if.else.构造的用“i代表“if或语句集,“e代表“else。因而我们就要到if.else构造中去找二义性。我们知道,程序语言一般都规定else部分是和它前面离它近期的没有被匹配的的if语句进行匹配。而上面的这个文法体现不出这种限制,因而我们能够找这样一个句子,在else前面有两个if如句子iiiei,else和不同的if进行匹配时就会产生不同的语义。解答:考虑句子iiiei,存在如下两个最右推导:S=iSeS=iSei=iiSei=iiieiS=iS=iiSeS=iiSei=iiiei例10某程序设计语言的表达式由运算符1、2、3、标识符、组成,其中1和2的

9、优先级一样,3的优先级低于1、2的优先级,优先级一样的运算符从右往左计算,能够用括号改变运算的顺序,则下述四种文法中哪一个能够描绘上述的表达式文法?设E为识别符号,终结符号集=1、2、3、I,非终结符号集=E、T、F。T|E1T|E2TTF|T3FF(E)|Ib.ET|T1E|T2ETF|F3TF(E)|Ic.ET|E3TTF|T1F|T2FF(E)|Id.ET|T3ETF|F1T|F2TF(E)|I【解】对于一个包含运算符的语言,运算符的结合顺序、运算符的优先级在文法中反映为递归的方向和推导或规约的先后,左递归表明左边的运算先处理,对应的运算符左结合;右递归表明右边的运算先处理,对应的运算符右结合。两个运算符连续出现,后推导出或先被规约的,表明其运算先被处理,因而优先级高;反之,先推导出或后被规约的,表明其运算后被处理,因而优先级低。题意要求:1和2的优先级一样,3的优先级低于1、2的优先级,因而3比1、2先推导出来,即应为图3所示的四种情形。UU3UVV(1)1UU3UVV(2)1UU3UVV(3)2UU3UVV(4)2图3可能的文法推导顺序因而a和b不成立。又由于优先级一样的运算符从右往左计算,应采用右递归,即应为图4所示的情形。UU1VWV(1)1UU2VWV(22UU3VWV(3)3图4可能的文法递归构造故c不成立,应为d。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 考试试题 > 习题库

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁