程序设计语言与编译教学指导.docx
- 文档编号:9617785
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:19
- 大小:102.38KB
程序设计语言与编译教学指导.docx
《程序设计语言与编译教学指导.docx》由会员分享,可在线阅读,更多相关《程序设计语言与编译教学指导.docx(19页珍藏版)》请在冰豆网上搜索。
程序设计语言与编译教学指导
习题7
7-1略
7-2解:
(1)消除文法G的②产生式直接左递归。
A→SeA'|fA'③
A'→dA'|④
(2)消除间接左递归:
按S.A排序(按书上P116页的算法i=2,j=1时)将S的①产生式代入③有
A→AaeA'|AbeA'|ceA'|fA'⑤
(3)消除⑤的直接左递归有
A→ceA'A"|fA'A"⑥
A"→aeA'A"|beA'A"|⑦
(4)对S的①产生式提公因子有
S→AB|c⑧
B→|a|b⑨
(5)最后,文法G提取公因子,消除左递归后的产生式由⑧,⑨,⑥,⑦和④组成,无
多余的产生式。
(6)若按A.S排序,得到的产生式组合是另外的形式,但它们是等价的文法,读者可以试试。
7-3解:
消除左递归后,得文法G':
S→(L)|a
L→SL'
L'→,SL'|
递归下降过程:
Procedurematch(t:
token);
begin
iflookahead=tthenlookahead=nexttoken
elseerror
end
procedureS;
begin
iflookahead='a'thenmatch('a')
elseiflookahead='('
then
begin
match('c');
L;
iflookahead=')'
thenmatch(')')
elseerror
end
end
procudureL;
beginS;
L';
end
procudureL';
begin
iflookahead=','thenbegin
match(',')
S;
L'
end
end
7-4解:
这里只给出消除直接右递归的一般形式。
G:
有产生式A→1A|2A|…|nA|
消除直接右递归时得产生式
A→A'
A'→A'1|A'2|…|A'n|
7-5解:
(1)G'(S):
S→AS'
S'→iAS'|
A→BA'
A'→+BA'
A→bS*|a
(2)FIRST集和FOLLOW集
FIRST
FOLLOW
S
b,a
#,*
S'
i,
#,*
A
b,a
#,*,i
A'
+,
#,*,i
B
b,a
#,*,i,+
预测分析表
a
i
+
b
*
#
S
S→AS'
S→AS'
S'
S'→iAS'
S'→
S'→
A
A→BA'
A→BA'
A'
A→
A→+BA'
A→
A→
B
B→a
B→bS*
(3)因为预测分析表无多重定义入口,所以G'是LL
(1)文法。
7-6解:
对习题7-3的文法G消除左递归后,得文法G':
S→(L)|a
L→SL'
L'→,SL'|
FIRST集和FOLLOW集
FIRST
FOLLOW
S
(,a
),’,#
L
(,a
)
L'
’,
)
预测分析表
(
)
a
#
S
S→(L)
S→a
L
L→SL'
L→SL'
L'
L'→)
L'→,SL'
因为预测分析表无多重定义入口,所以文法G是LL
(1)文法。
习题8
8-1解:
(1)规规推导(最右推导)最右推导SABASbAABbbBABb
(2)语法树(推导树)
(3)短语bB,AB,Abb,bBABb
直接短语bB,AB
句柄bB
最左素短语bB
8-2解:
(1)因为存在推导SSbFFbFFaPbFFaPbPFaPbc
所以FaPbc是文法G的一个句型。
(2)语法树
(3)短语FaP,c,FaPbc
直接短语FaP,c
句柄FaP
最左素短语FaP
8-3解:
拓广文法
0.S'→S
1.S→AS
2.S→b
3.A→SA
4.A→a
LR(0)项目集规族
I0=closure{S'→·S}I1=GO(I0,S)I2=GO(I0,A)I3=GO(I0,b)
I0:
S'→·SS'→S·S→A·SS→b·
S→·ASA→S·AS→·ASGO(I1,a)=I4
S→·bA→SAS→·bGO(I2,A)=I2
A→·SAA→·aA→·SAGO(I2,b)=I3
A→·aS→·ASA→·a
S→·b
I4=GO(I0,a)I5=GO(I1,A)I6=GO(I1,S)I7=GO(I2,S)
A→a·A→SA·A→S·AS→AS·
S→A·SA→·SAA→S·A
S→·ASA→·bA→·SA
S→·bS→·ASA→·a
A→·SAS→·bS→·AS
A→·aS→·b
GO(I1,b)=I3
GO(I2,a)=I4
FOLLOW(S)={a,b,#}FOLLOW(A)={a,b}
∵状态5在输入a时有S4和r3的移进归约矛盾。
状态5在输入b时有S3和r3的移进归约矛盾。
状态7在输入a时有S4和r1的移进归约矛盾。
状态7在输入b时有S3和r1的移进归约矛盾。
∴文法G既不是LR(0)文法,也不是SLR
(1)文法。
8-4解:
(1)最左推导
S(T)(T,S)(S,S)(a,S)(a,(T))
(a,T,S))(a,(S,S)=(a,(a,S))(a,(a,a))
最右推导
S(T)(T,S)(T,(T))(T,(T,S))(T,(T,a)
(T,(S,a))(T,(a,a))(S,(a,a))(a,(a,a))
最左推导
S(T)(T,S)(S,S)((T),S)((S),S)((T,S),S)
((T,S,S),S)((S,S,S),S)(((T),S,S),S)
(((T,S),S,S),S)(((S,S),S,S),S)(((a,S),S,S),S)
(((a,a),S,S),S)(((a,a),∧,S),S)=(((a,a),∧,(T)),S)
(((a,a),∧,(S)),S)(((a,a),∧,(a)),S)
=(((a,a),∧,(a)),S)(((a,a),∧,(a)),a)
最右推导
S(T)(T,S)(T,a)(S,a)((T),a)((T,S),a)
((T,(T)),a)((T,(S)),a)((T,(a)),a)((T,S,(a)),a)
((T,∧,(a)),a)((S,∧,(a)),a)(((T),∧,(a)),a)
(((T,S),∧,(a)),a)(((T,a),∧,(a)),a)(((S,a),∧,(a)),a)
(((a,a),∧,(a)),a)
(2)对句子(a,(a,a))的移进归约栈的变迁如下:
其中,(3),(4),(8),(9),(12),(13),(15),(16),(18)共进行9次归约,最右推导也是9次推导,正好是递过程。
归约(3)的句柄是a,语法树如图
(1)所示。
归约(4)的句柄是S,语法树如图
(2)所示。
归约(8)的句柄是a,语法树如图(3)所示。
归约(9)的句柄是S,语法树如图(4)所示。
归约(12)的句柄是S,语法树如图(5)所示。
归约(13)的句柄是T,S,语法树如图(6)所示。
归约(15)的柄是(T),语法树如图(7)所示。
归约(16)的句柄是T,S,语法树如图(8)所示。
归约(18)的句柄是(T),语法树如图(9)所示。
图(9)即是完整的语法树。
图中的下标是为了区分归约过程中同名文法符号和便于理解而添加的,实际是没有的,对句子(((a,a),∧,(a)),a)的规约栈变迁如图(10)所示。
图(10)
规推导(最右推导)一共进行17步推导,归约过程也进行了17次归约,语法树如图(11)所示,其中的下标可表明其形成的先后。
图(11)
8-5解:
算符优先关系表构造如下:
该文法的产生式没有两个非终结符相邻,没有产生式,它是算符文法,在其算符优先关系表中,任何两个终结符之间至多只存在一种优先关系,故它是算符优先文法。
8-6解:
FIRSTVT(B)={∧,∨,乛,(,i}
LASTVT(B)={∨,∧,乛,),i}
在规则B→B∨B中,∨<FIRSTVT(B),∴∨<∧
又在规则B→B∨B中,LASTVT(B)>∨,∴∨>∨
因此,在∨与∧之间存在两种优先关系,故G不是算符优先文法。
若令∨,∧为右结合,则有∨<∨,∧<∧,优先级由低到高为乛,∧,∨,则有乛<∧,乛<∨,∧<∨,构造优先关系表如下:
8-7解:
0.S'→SFOLLOW(S)={$}
1.S→ABFOLLOW(A)={b,c}
2.B→cBdFOLLOW(B)={d,$}
3.B→cd
4.A→aAb
5.A→ab
I0=closure{S'→·S}
I0:
S'→·SI4=GO(I2,B)I9=GO(I5,d)
S→·ABS→AB·B→cd·
A→·aAbI5=GO(I2,c)I10=GO(I6,b)
A→·abB→c·BdA→aAb·
I1=GO(I0,S)B→·cBdI11=GO(I8,d)
S'→S·B→·cBdB→cBd·
I2=GO(I0,A)B→c·d
S→A·BI6=GO(I3,A)
B→·cBdA→aA·b
B→·cdGO(I3,a)=I3
I3=GO(I0,a)I7=GO(I3,b)
A→a·AbA→ab·
A→a·bI8=GO(I5,B)
A→·aAbB→cB·d
A→·abGO(I5,c)=I5
上述状态集没有移进—归约冲突,(a)是SLR文法,分析表如下:
a
b
c
d
$
S
A
B
0
S3
1
2
1
acc
2
S5
4
3
S3
S7
6
4
r1
5
S5
S9
8
6
S10
7
r5
r5
8
S11
9
r3
r3
10
r4
r4
11
r2
r2
8-8解:
拓广文法
0.S'→SFOLLOW(S)={a,b,$}I1=GO(I0,S)
1.S→bAFOLLOW(A)={a,b,$}S'→S·
2.S→aBFOLLOW(B)={a,b,$}I2=GO(I0,b)
3.A→SaI0=closure{S'→·S}S→b·A
4.A→aI0:
S'→·SA→·Sa
5.B→SbS→·bAA→·a
6.B→bS→·aBS→·bA
S→·aB
I3=GO(I0,a)I5=GO(I2,S)I7=GO(I3,B)I10=GO(I5,a)
S→a·BA→S·aS→aB·A→Sa·
B→·SbI6=GO(I2,a)I8=GO(I3,S)GO(I6,B)=I7
B→·bA→a·B→S·bGO(I6,S)=I8
S→·bAS→a·BI9=GO(I3,b)GO(I6,b)=I9
S→·aBB→·SbB→b·GO(I6,a)=I3
I4=GO(I2,A)B→·bS→b·AI11=GO(I8,b)
S→bA·S→·bAA→·SaB→Sb·
S→·aBA→·aGO(I9,A)=I4
GO(I2,b)=I2S→·bAGO(I9,B)=I5
S→aBGO(I9,a)=I6
GO(I3,a)=I3GO(I9,b)=I2
因为在I6和I9中,有依靠FOLLOW集无法解决的移进—归约矛盾(对输入字符a),所以G不是SLR文法。
8-9,略
8-10解:
(1)FIRSTVT(P)={A,(}LASTVT(P)={a,)}
FIRSTVT(F)={a}LASTVT(F)={a}
(2)优先关系表:
。
第3部分参考试卷及其参考答案
参考试卷
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其填在括号。
每小题1分,共10分)
1.词法分析器的输出是()。
①字符串②二元式③三元式④四元式
2.下述方法中,()不是自下而上的分析方法。
①规归约②算符优先分析法③递归下降分析法④LR分析法
3.Σ={A,B,0,1}上的正规式(A|B)(A|B|0|1)*表示()。
①字符串②整数③数字串④标识符
4.句型是由()推导出的符号串。
①非终结符②终结符③任何符号④开始符号
5.项目A→·a称为(),其中a∈VT。
①移进项②归约项③待约项④接受项
6.LR分析法的核心部分是()。
①总控程序②分析表③分析栈④可归约串
7.把一个高级语言程序翻译成机器可执行的目标程序的工作由()完成。
①汇编器②解释器③编译器④预处理器
8.编译时能进行的类型检查称为()。
①错误检查②动态检查③静态检查④随机检查
10.在一棵语法树中,仅有两层的子树叶结点的自左至右排列称为()
①短语②直接短语③句柄④素短语
二、多项选择题(在每小题的五个备选答案中,选出二个至五个正确答案,并将其分别填在括号,多选、少选、错选,均无分。
每小题2分,共10分)
1.按Chomsky的观点,将文法分成()等几类。
①短语文法②算符优先文法③上下文有关文法④上下文无关文法
2.编译的各个阶段都要涉及表格管理,表格管理的工作有()。
①符号表的建立②生成四元式③报告错误
④符号表的查找⑤符号表的更新
4.词法分析时,通常将单词分成()等几类。
①保留字②标识符③常数④算符⑤界符
5.设文法G有形如A→|的产生式,G为LL
(1)文法的充要条件是()。
①FIRST()∩FIRST()=②FOLLOW()∩FOLLOW()=
③
则FOLLOW(A)∩FIRST()=
④
,则FOLLOW(A)∩FIRST()=⑤FIRST()∩FOLLOW()=
三、简答题(每小题5分,共30分)
1.给出∑={0,1,2,3,4,5,6,7,8,9}上正整数的正规式。
3.什么叫算符优先文法?
4.数组的情向量应包括哪些容?
四、推导题(共10分)
已知文法G(S):
S→SbF|F
F→FaP|P
P→c
1.证明FaPbc是G(S)的一个句型;(3分)
2.画出FaPbc的语法树;(3分)
3.求FaPbc的短语、直接短语和句柄。
(4分)
五、预测分析法(共15分)
已知文法G(S):
S→A|SiA
A→B|A+B
B→bS*|a
1.消除G(S)的左递归得G'(S);(4分)
2.求G'(S)各非终结符的FIRST和FOLLOW集;(5分)
3.构造G'(S)的预测分析表。
(6分)
六、LR分析法(共15分)
已知文法G(S):
S→aAb
A→a|bSA
1.构造G(S)的LR(0)项目集规族;(9分)
2.构造SLR分析表。
(6分)
试卷参考答案
一、单项选择题(每小题1分,共10分)
1.②2.③3.④4.④5.①
6.②7.③8.③10.②
二、多项选择题(每小题2分,共10分)
1.①③④⑤2.①④⑤
4.①②③④⑤5.①③④
三、简答题(每小题5分,共30分)
1.正规式为:
(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*
3.如果文法G中不存在形如P→…RQ…或P→的产生式,且任何两个终结符之间至多存在<、=、>三种关系之一,则称G是算符优先文法。
4.包括各维上下界、维数、首地址、类型。
四、(共10分)
1.∵SSbFSbPSbcFbcFaPbc(3分)
∴FaPbc是G(S)的一个句型
2.语法树(3分)
3.短语:
FaP,c,FaPbc(2分)
直接短语:
FaP,c(1分)
句柄:
FaP(1分)
五、(共15分)
1.G'(S):
S→AS'(4分)
S'→iAS'|
A→BA'
A'→+BA'|
B→bS*|a
2.(5分)
FIRST
FOLLOW
S
b,a
#,*
S'
i,
#,*
A
b,a
#,*,i
A'
+,
#,*,i
B
b,a
#,*,i,+
3.(6分)
a
i
+
b
*
#
S
S→AS'
S→AS'
S'
S'→iAS'
S'→
S'→
A
A→BA'
A→BA'
A'
A→
A→+BA'
A→
A→
B
B→a
B→bS*
六、LR分析法(共15分)
1.构造LR(0)项目集规族(9分)
拓广文法:
(0)S'→S
(1)S→aAb
(2)A→a
(3)A→bSA
I0:
S'→·SI3:
S→aA·bI7:
A→bS·A
S→·aAbI4:
A→a·A→·a
I1:
S'→S·I5:
a→b·SAA→·bSA
I2:
S→a·AbS→·aAbI8:
A→bSA·
A→·aI6:
S→aAb·
A→·bSA
2.SLR分析表如下:
(6分)
ACTION
GOTO
a
b
#
S
A
0
S2
1
1
acc
2
S4
S5
3
3
S6
4
r4
5
S2
7
6
r1
r1
r1
7
S4
S5
8
8
r3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计语言 编译 教学 指导