编译原理及实现课后习题答案Word下载.docx
- 文档编号:21905549
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:46
- 大小:399.32KB
编译原理及实现课后习题答案Word下载.docx
《编译原理及实现课后习题答案Word下载.docx》由会员分享,可在线阅读,更多相关《编译原理及实现课后习题答案Word下载.docx(46页珍藏版)》请在冰豆网上搜索。
E
Vt={+,-,*,/,(,),i}
Vn={E,F,T}
2.7对2.6题的文法,写出句型T+T*F+i的短语、简单短语以及句柄。
短语:
T+T*F+iT+T*F
ii
TT*F
简单短语:
iT*F
T
句柄:
T
2.8设有文法G[S]:
S∷=S*S|S+S|(S)|a,该文法是二义性文法吗?
根据所给文法推导出句子a+a*a,画出了两棵不同的语法树,所以该文法是二义性文法。
2.9写一文法,使其语言是奇正整数集合。
A:
:
=1|3|5|7|9|NA
N:
=0|1|2|3|4|5|6|7|8|9
2.10给出语言{anbm|n,m≥1}的文法。
G[S]:
S:
=AB
A:
=aA|a
B:
=bB|b
3.1有正则文法G[Z]:
Z:
=Ua|Vb,U:
=Zb|b,V:
=Za|a,画出该文法的状态图,并检查句子abba是否合法。
解:
该文法的状态图如下:
句子abba合法。
3.2状态图如图3.35所示,S为开始状态,Z为终止状态。
写出相应的正则文法以及V,Vn和Vt。
左线性文法G[Z]:
右线性文法G’[S]:
=Ab|bS:
=aA|b
A:
=Aa|aA:
V={Z,A,a,b}V={S,A,a,b}
Vn={Z,A}Vn={S,A}
Vt={a,b}Vt={a,b}
3.3构造下列正则表达式相应的NFA:
1(1|0)*|0
1(1010*|1(010)*1)*0
正则表达式:
1(1|0)*|0
1、
2、
3、
4、
1(1010*|1(010)*1)*0
3.4
将图3.36的NFAM确定化
a
b
q0={0}
{0,1}
{1}
q1={0,1}
q2={1}
{0}
Φ
DFA:
3.5将图3.37的DFA化简。
划分
{2,4}
{2,3,4,5}
{1,3,0,5}
{3,5,2,4}
{3,5}
q0={0,1}q1={2,4}q2={3,5}
化简后的DFA:
4.1对下面文法,设计递归下降分析程序。
S→aAS|(A),A→Ab|c
首先将左递归去掉,将规则A→Ab|c改成A→c{b}
非终结符号S的分析程序如下:
非终结符号A的分析程序如下:
4.2设有文法G[Z]:
Z∷=(A),A∷=a|Bb,B∷=Aab
若采用递归下降分析方法,对此文法来说,在分析过程中,能否避免回溯?
为什么?
若采用递归下降分析方法,对此文法来说,在分析过程中不能避免回朔。
因为规则A∷=a|Bb和规则B∷=Aab构成了间接左递归,不满足实现没有回溯的递归下降分析方法的条件
(1)(书P67),且规则A:
:
=a|Bb,FIRST(a)={a},FIRST(Bb)={a},即此规则候选式的首符号集有相交,不满足实现没有回溯的递归下降分析方法的条件
(2)(书P67),在分析过程中,将造成回溯。
改写文法可避免回溯:
将规则B∷=Aab代入规则A∷=a|Bb得:
A∷=a|Aabb,再转换成:
A∷=a{abb},可避免回溯。
4.3若有文法如下,设计递归下降分析程序。
<
语句>
→<
<
赋值语句>
|ε
→ID=<
表达式>
项>
|<
+<
-<
因子>
*<
/<
→ID|NUM|(<
)
首先,去掉左递归
|ε改为:
→{<
}
|<
+<
-<
改为:
{(+|-)<
*<
/<
{(*|/)<
则文法变为:
}
非终结符号<
的分析程序如下:
4.4有文法G[A]:
=aABe|ε,B:
=Bb|b
(1)求每个非终结符号的FOLLOW集。
(2)该文法是LL
(1)文法吗?
(3)构造LL
(1)分析表。
(1)FOLLOW(A)=First(B)∪{#}={b,#}
FOLLOW(B)={e,b}
(2)该文法中的规则B:
=Bb|b为左递归,因此该文法不是LL
(1)文法
(3)先消除文法的左递归(转成右递归),文法变为:
=bB’,B’:
=bB’|ε,该文法的LL
(1)分析表为:
e
#
A
POP,
PUSH(eBAa)
POP
B
PUSH(B’b)
B’
POP,
NEXTSYM
ACCEPT
更常用且简单的LL
(1)分析表:
A→aABe
A→ε
B→bB’
B’→ε
B’→bB’
4.5若有文法A→(A)A|ε
(1)为非终结符A构造FIRST集合和FOLLOW集合。
(2)说明该文法是LL
(1)的文法。
(1)FIRST(A)={(,ε}
FOLLOW(A)={),#}
(2)
该文法不含左递归;
FIRST((A)A)={(},FIRST(ε)={ε},FIRST((A)A)∩FIRST(ε)=Φ,
且FOLLOW(A)={),#},FIRST((A)A)∩FOLLOW(A)=Φ,
因此,该文法满足LL
(1)文法的条件,是LL
(1)文法。
4.6利用分析表4-1,识别以下算术表达式,请写出分析过程。
(1)i+i*i+i
(2)i*(i+i+i)
步骤
分析栈
余留输入串
分析表元素
所用产生式
1
#E
i+i*i+i#
POP,PUSH(E’T)
E→TE’
2
#E’T
POP,PUSH(T’F)
T→FT’
3
#E’TF’
POP,PUSH(i)
F→i
4
#E’T’i
POP,NEXTSYM
5
#E’T’
+i*i+i#
T’→ε
6
#E’
POP,PUSH(E’T+)
E’→+TE’
7
#E’T+
8
i*i+i#
9
#E’T’F
10
11
*i+i#
POP,PUSH(T’F*)
T’→*FT’
12
#E’T’F*
13
i+i#
14
15
+i#
16
17
18
i#
19
20
21
22
E’→ε
23
i*(i+i+i)#
*(i+i+i)#
(i+i+i)#
POP,PUSH()E()
F→(E)
#E’T’)E(
#E’T’)E
i+i+i)#
#E’T’)E’T
#E’T’)E’T’F
#E’T’)E’T’i
#E’T’)E’T’
+i+i)#
#E’T’)E’
#E’T’)E’T+
i+i)#
#E’T’)E’T’F
#E’T’)E’T’i
#E’T’)E’T’
+i)#
#E’T’)E’
#E’T’)E’T+
#E’T’)E’T
i)#
24
25
)#
26
27
#E’T’)
28
#E’T’
29
30
4.7考虑下面简化了的C声明文法:
声明语句>
类型>
变量表>
;
→int|float|char
→ID,<
|ID
(1)在该文法中提取左因子。
(2)为所得的文法的非终结符构造FIRST集合和FOLLOW集合。
(3)说明所得的文法是LL
(1)文法。
(4)为所得的文法构造LL
(1)分析表。
(5)假设有输入串为“charx,y,z;
”,写出相对应的LL
(1)分析过程。
(1)规则<
|ID提取公因子如下:
→ID(,<
|ε)
增加新的非终结符<
变量表1>
,规则变为:
→ID<
→,<
C声明文法改变为:
<
(2)FIRST(<
)=FIRST(<
)={int,float,char}
FIRST(<
)={ID}
)={,,ε}
FOLLOW(<
)={#}
)=FOLLOW(<
)={;
}
(3)所得文法无左递归,且
FIRST(int)∩FIRST(float)∩FIRST(char)=Φ
FIRST(,<
)∩FIRST(ε)=Φ
)∩FOLLOW(<
)=Φ
因此,所得文法为LL
(1)文法。
(4)所得的文法构造LL
(1)分析表如下所示:
int
float
char
ID
,
PUSH(;
PUSH(int)
PUSH(float)
PUSH(char)
PUSH(<
ID)
,)
→int
→float
→char
→ε
→,<
(5)输入串“charx,y,z;
”相对应的LL
(1)分析过程如下:
#<
charx,y,z;
#;
char
x,y,z;
x
,y,z;
y,z;
y
,z;
z;
z
5.1考虑以下的文法:
S→S;
T|T
T→a
(1)为这个文法构造LR(0)的项目集规范族。
(2)这个文法是不是LR(0)文法?
如果是,则构造LR(0)分析表。
(3)对输入串“a;
a”进行分析。
(1)拓广文法G[S’]:
0:
S’→S
1:
T
2:
S→T
3:
构造LR(0)项目集规范族
状态
项目集
转换函数
S’→·
S
S→·
S;
T→·
GO[0,S]=1
GO[0,T]=2
GO[0,a]=3
S’→S·
S→S·
;
GO[1,;
]=4
S→T·
R2
T→a·
R3
·
GO[4,T]=5
GO[4,a]=3
T·
R1
(2)该文法不存在“归约-归约”和“归约-移进”冲突,因此是LR(0)文法。
LR(0)分析表如下:
ACTION
GOTO
S3
S4
(3)对输入串“a;
a”进行分析如下:
状态栈
符号栈
输入符号栈
a;
a#
03
#a
02
#T
01
#S
014
#S;
0143
0145
5.2证明下面文法是SLR
(1)文法,但不是LR(0)文法。
S→A
A→Ab|bBa
B→aAc|a|aAb
文法G[S]:
A→Ab
A→bBa
B→aAc
4:
B→a
5:
B→aAb
构造LR(0)项目集规范族:
A→·
Ab
bBa
GO[0,A]=1
GO[0,b]=2
S→A·
A→A·
GO[1,b]=3
A→b·
Ba
B→·
aAc
aAb
GO[2,B]=4
GO[2,a]=5
A→Ab·
A→bB·
GO[4,a]=6
B→a·
Ac
GO[5,A]=7
R4
GO[5,b]=2
A→bBa·
B→aA·
c
GO[7,c]=8
GO[7,b]=9
B→aAc·
B→aAb·
R5
状态5存在“归约-移进”冲突,状态9存在“归约-归约”冲突,因此该文法不是LR(0)文法。
状态5:
FOLLOW(B)={a},因此,FOLLOW(B)∩{b}=Φ
状态9:
FOLLOW(B)={a},FOLLOW(A)={#,b,c},因此FOLLOW(B)∩FOLLOW(A)=Φ
状态5和状态9的冲突均可用SLR
(1)方法解
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 实现 课后 习题 答案