编译原理及实现课后习题答案孙悦红Word格式文档下载.docx
- 文档编号:16040696
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:36
- 大小:234.77KB
编译原理及实现课后习题答案孙悦红Word格式文档下载.docx
《编译原理及实现课后习题答案孙悦红Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《编译原理及实现课后习题答案孙悦红Word格式文档下载.docx(36页珍藏版)》请在冰豆网上搜索。
Sa*=>
SS+a*=>
Sa+a*=>
aa+a*
2.4已知文法G[Z]:
Z:
=U0lV1、U:
:
=Z1I1、V:
=Z0I0,请写出全部由此文法
描述的只含有四个符号的句子。
Z=>
U0=>
Z10=>
U010=>
1010
V110=>
0110
V1=>
Z0仁〉U00仁>
1001
Z01=>
V101=>
0101
2.5已知文法G[S]:
S:
:
=ABA:
=aA|eB:
=bBcIbc,写出该文法描述的语言。
A:
:
=aA|e描述的语言:
{an|n>
=0}B:
=bBcIbc描述的语言:
{bncn|n>
=1}L(G[S])={anbZmn>
=0,m>
=1}
2.6已知文法E:
=TIE+TIE-T、T:
=FIT*FIT/F、F:
=(E)Ii,写出该文法的开
始符号、终结符号集合Vt、非终结符号集合Vn。
开始符号:
E
Vt={+,-,*,/,
Vn={E,F,T}
根据所给文法推导出句子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给出语言{anbmn,m>
1}的文法。
G[S]:
S:
=AB
=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,V
和V。
图3-35状态图
左线性文法G[Z]:
Z:
=Ab|b
=Aa|a
V={Z,A,a,b}
%={Z,A}
V={a,b}
3.3构造下列正则表达式相应的
右线性文法G'
[S]:
S:
=aA|b
V={S,A,a,b}
U={S,A}
NFA
1(1|0)*|0
1(1010*11(010)*1)*0
正则表达式:
1、
2、
解:
a
b
q0={0}
{0,1}
「⑴
q仁{0,1}
{1}
q2={1}
{0}
①
3.5将图3.37的DFA化简。
DFA:
q0={0,1}q仁{2,4}
化简后的DFA
划分
r{2,4}
{234,5}
{1,0,3,5}
{3,5,2,4}
{2,4}
{3,5}
「{2,4}
q2={3,5}
q1
qo
4.1对下面文法,设计递归下降分析程序。
StaAS|(A),A宀Ab|c
首先将左递归去掉,将规则AtAb|c改成Atc{b}
非终结符号S的分析程序如下:
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|Aabb,再转换成:
=a{abb},可避免回溯。
4.3若有文法如下,设计递归下降分析程序。
<语句>7<语句><赋值语句>|£
<赋值语句>7ID=<表达式>
<表达式>7<项>|<表达式>+<项>|<表达式>—<项>
<项>7<因子>|<项>*<因子>|<项>/<因子>
<因子>7ID|NUM|(<表达式>)
首先,去掉左递归
改为:
<语句>7{<赋值语句>}
<表达式>7<项>|<表达式>+<项>|<表达式>-<项>改为:
<表达式>7<项>{(+|-)<项>}
<项>7<因子>|<项>*<因子>|<项>/<因子>改为:
<项>7<因子>{(*|/)<因子>}
则文法变为:
<语句>T{<赋值语句>}
<赋值语句>T|D=<表达式>
<表达式>7<项>{(+|-)<项>}
<项>7<因子>{(*|/)<因子>}
非终结符号<赋值语句>的分析程序如下:
非终结符号<表达式>的分析程序如下:
<赋值语句>7|D=<表达式>
非终结符号<项>的分析程序如下:
<项>T<因子>{(*|/)<因子>}
非终结符号<因子〉的分析程序如下:
<因子ID|NUM|(<表达式>)
4.4有文法G[A]:
A:
=aABe|£
B:
=Bb|b
(1)求每个非终结符号的FOLLOW集。
(2)该文法是LL
(1)文法吗?
(3)构造LL
(1)分析表。
(1)FOLLOW(A)=First(B)U{#}={b,#}
FOLLOW(B)={e,b}
(2)该文法中的规则B:
=Bb|b为左递归,因此该文法不是LL
(1)文法
(3)先消除文法的左递归(转成右递归),文法变为:
=bB'
B'
=bB'
|&
该文法的LL
(1)分析表为:
e
#
A
POP,
PUSH(eBAa)
POP
B
POP,PUSH(Bb)
B,
POP,NEXTSYM
ACCEPT
更常用且简单的LL
(1)分析表:
AtaABe
At£
BtbB,
t&
tbB,
4.5若有文法2(A)A|&
(1)为非终结符A构造FIRST集合和FOLLOWI合。
(2)说明该文法是LL
(1)的文法。
(1)FIRST(A)={(,门
FOLLOW(A)={),#}
(2)
该文法不含左递归;
FIRST((A)A)={(},FIRST(£
)={£
},FIRST((A)A)nFIRST(£
)=①,且FOLLOW(A)={),#},FIRST((A)A)nFOLLOW(A)=①,
因此,该文法满足LL
(1)文法的条件,是LL
(1)文法。
4.6利用分析表4-1,识别以下算术表达式,请写出分析过程。
(1)i+i*i+i
(2)i*(i+i+i)
(1)i+i*i+i
步骤
分析栈
余留输入串
分析表兀素
所用产生式
1
#E
i+i*i+i#
POP,PUSH(ET)
Ette,
2
#E,T
POP,PUSH(TF)
Ttft,
3
#E,T,F
POP,PUSH(i)
Fti
4
#E,T,i
POP,NEXTSYM
#E,T,
+i*i+i#
T,t£
6
#E,
POP,PUSH(ET+)
Et+TE
7
#E,T+
8
i*i+i#
9
10
11
*i+i#
POP,PUSH(TF*)
T,t*FT,
12
#E,T,F*
13
i+i#
14
15
+i#
16
17
#E'
T+
18
T
i#
TtFT'
19
T'
F
ii
20
i
21
T'
t£
22
E;
23
(2)i*(i+i+i)
i*(i+i+i)#
Ette'
Ttft'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 实现 课后 习题 答案 孙悦红