欢迎来到天天文库
浏览记录
ID:41124296
大小:669.50 KB
页数:42页
时间:2019-08-17
《《编译原理》汇总》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、编译原理模拟试卷及答案学生姓名:_____________学号:___________________学生系别:_____________专业:______________年级___________班级_____________课程名称:编译原理课程性质:专业必修一、文法G[]的产生式为:(12%)®+
2、®*
3、®I
4、()a)给出(I+I)*I的最左推导、最右推导及相应的推导树;b)列出句型+*的所有短语、简单短语和句柄。答:a)最左推导:ÞÞ*Þ*Þ(5、>)*Þ(+)*Þ(+)*Þ(+)*Þ(I+)*Þ(I+)*Þ(I+I)*Þ(I+I)*Þ(I+I)*Þ(I+I)*I最右推导:ÞÞ*Þ*Þ*Þ*IÞ*IÞ()*IÞ(+)*IÞ(+)*IÞ(+I)*IÞ(+I)*IÞ(+I)*IÞ(I+I)*I推导树如下:b)所有短语:(2个)、*、+*简单短语:(2个)短语:42二、6、构造下列正则表达式的确定性的有限状态自动机。(12%)aba(a7、b)*a答:三、证明下面文法是SLR(1)文法,并构造其SLR分析表。(15%)®+8、®9、®*10、a11、b答:分析表如下所示:状态T项目集输入符号下一状态0*→·⊥1→·+1→·2→·2→·3→·*3→·aa4→·bb51*→·⊥⊥Accept*→·++62*→·⊥/+#2*12、>→·7→·*7→·aa4→·bb53*→·⊥/+/a/b#4*→·**84*→a·#65*→b·#76*→+·9→·9→·3→·*3→·aa442→·bb57*→·⊥/+/a/b#3*→·**88*→*·#59*→+·⊥/+#1*→·7→·*7→·aa4→·bb5四、写出下列表达式的13、三地址形式的中间表示。(16%)(1)5+6´(a+b);(2)ØAÚ(BÙ(CÚD));(3)forj:=1to10doa[j+j]:=0;(4)ifx>ythenx:=10elsex:=x+y;答:⑴100:t1:=a+b101:t2:=6*t1102:t3:=5+t2⑵100:ifAgoto102101:gotoT102:ifBgoto104103:gotoF104:ifCgotoT105:goto106106:ifDgotoT107:gotoF⑶100:j:=1101:ifj>10gotoNEXT102:i:=j+j103:a[i]:=0104:goto101⑷1014、0:ifx>ygoto102101:goto104102:x:=10103:goto105104:x:=x+y105:五、条件语句可形式定义为:(20%)àIFTHEN1ELSE2其中带有属性1..type值为“boolean”表示是布尔类型2..true和.false值为中真和假的尚待回填的出口的链首指针条件语句的语义可描述为:42t:=e;ifnottthengotoL1;1;gotoL2;L1:2;L2:其中e为的值。试用句法制导翻译的方法写出符合上述要求的条件语句的翻译方案。答:条件语句的15、属性翻译文法为:®if{CheckBool(.type);TLT:=NewTL;GEN(LABEL,TLT);Backpatch(.true,TLT);.false:=.false;}®then1{.TL:=NewTL;GEN(BR,.TL);TLF:=NewTL;GEN(LABEL,TLF);Backpatch(.false,TLF);}®else2{GEN(LABEL,.TL);}六、
5、>)*Þ(+)*Þ(+)*Þ(+)*Þ(I+)*Þ(I+)*Þ(I+I)*Þ(I+I)*Þ(I+I)*Þ(I+I)*I最右推导:ÞÞ*Þ*Þ*Þ*IÞ*IÞ()*IÞ(+)*IÞ(+)*IÞ(+I)*IÞ(+I)*IÞ(+I)*IÞ(I+I)*I推导树如下:b)所有短语:(2个)、*、+*简单短语:(2个)短语:42二、
6、构造下列正则表达式的确定性的有限状态自动机。(12%)aba(a
7、b)*a答:三、证明下面文法是SLR(1)文法,并构造其SLR分析表。(15%)®+
8、®
9、®*
10、a
11、b答:分析表如下所示:状态T项目集输入符号下一状态0*→·⊥1→·+1→·2→·2→·3→·*3→·aa4→·bb51*→·⊥⊥Accept*→·++62*→·⊥/+#2*12、>→·7→·*7→·aa4→·bb53*→·⊥/+/a/b#4*→·**84*→a·#65*→b·#76*→+·9→·9→·3→·*3→·aa442→·bb57*→·⊥/+/a/b#3*→·**88*→*·#59*→+·⊥/+#1*→·7→·*7→·aa4→·bb5四、写出下列表达式的13、三地址形式的中间表示。(16%)(1)5+6´(a+b);(2)ØAÚ(BÙ(CÚD));(3)forj:=1to10doa[j+j]:=0;(4)ifx>ythenx:=10elsex:=x+y;答:⑴100:t1:=a+b101:t2:=6*t1102:t3:=5+t2⑵100:ifAgoto102101:gotoT102:ifBgoto104103:gotoF104:ifCgotoT105:goto106106:ifDgotoT107:gotoF⑶100:j:=1101:ifj>10gotoNEXT102:i:=j+j103:a[i]:=0104:goto101⑷1014、0:ifx>ygoto102101:goto104102:x:=10103:goto105104:x:=x+y105:五、条件语句可形式定义为:(20%)àIFTHEN1ELSE2其中带有属性1..type值为“boolean”表示是布尔类型2..true和.false值为中真和假的尚待回填的出口的链首指针条件语句的语义可描述为:42t:=e;ifnottthengotoL1;1;gotoL2;L1:2;L2:其中e为的值。试用句法制导翻译的方法写出符合上述要求的条件语句的翻译方案。答:条件语句的15、属性翻译文法为:®if{CheckBool(.type);TLT:=NewTL;GEN(LABEL,TLT);Backpatch(.true,TLT);.false:=.false;}®then1{.TL:=NewTL;GEN(BR,.TL);TLF:=NewTL;GEN(LABEL,TLF);Backpatch(.false,TLF);}®else2{GEN(LABEL,.TL);}六、
12、>→·7→·*7→·aa4→·bb53*→·⊥/+/a/b#4*→·**84*→a·#65*→b·#76*→+·9→·9→·3→·*3→·aa442→·bb57*→·⊥/+/a/b#3*→·**88*→*·#59*→+·⊥/+#1*→·7→·*7→·aa4→·bb5四、写出下列表达式的
13、三地址形式的中间表示。(16%)(1)5+6´(a+b);(2)ØAÚ(BÙ(CÚD));(3)forj:=1to10doa[j+j]:=0;(4)ifx>ythenx:=10elsex:=x+y;答:⑴100:t1:=a+b101:t2:=6*t1102:t3:=5+t2⑵100:ifAgoto102101:gotoT102:ifBgoto104103:gotoF104:ifCgotoT105:goto106106:ifDgotoT107:gotoF⑶100:j:=1101:ifj>10gotoNEXT102:i:=j+j103:a[i]:=0104:goto101⑷10
14、0:ifx>ygoto102101:goto104102:x:=10103:goto105104:x:=x+y105:五、条件语句可形式定义为:(20%)àIFTHEN1ELSE2其中带有属性1..type值为“boolean”表示是布尔类型2..true和.false值为中真和假的尚待回填的出口的链首指针条件语句的语义可描述为:42t:=e;ifnottthengotoL1;1;gotoL2;L1:2;L2:其中e为的值。试用句法制导翻译的方法写出符合上述要求的条件语句的翻译方案。答:条件语句的
15、属性翻译文法为:®if{CheckBool(.type);TLT:=NewTL;GEN(LABEL,TLT);Backpatch(.true,TLT);.false:=.false;}®then1{.TL:=NewTL;GEN(BR,.TL);TLF:=NewTL;GEN(LABEL,TLF);Backpatch(.false,TLF);}®else2{GEN(LABEL,.TL);}六、
此文档下载收益归作者所有