编译原理(清华大学第2版)课后习题答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11. 推导:E=>E+T=>E+T*F
语法树:
短语: T*F E+T*F
直接短语: T*F
句柄: T*F
12.
短语:<T><F><MOP> <E><T><F><MOP><POP>
直接短语:<T><F><MOP>
句柄: <T><F><MOP>
13.(1)最左推导:S=> ABS => aBS =>aSBBS => aBBS
=> abBS => abbS => abbAa => abbaa
最右推导:S => ABS => ABAa => ABaa => ASBBaa
=> ASBbaa => ASbbaa => Abbaa => a1b1b2a2a3
(2)文法:SABS
SAa
Sε
Aa
Bb
(3)短语:a1, b1, b2, a2, , bb , aa , abbaa,
构造NFA
由NFA可得正规式为(01|10)*(01|10)=(01|10)+
9.状态转换函数不是全函数,增加死状态8,
G={(1,2,3,4,5,8),(6,7)}
(1,2,3,4,5,8)a=(3,4,8) (3,4)应分出
(1,2,3,4,5,8)b=(2,6,7,8)
(1,2,3,4,5,8)c=(3,8)
1
6
5*
1
4
6
3
4
化简:
G={(0,1,3,4,6),(2,5)}
{0,1,3,4,6}a={1,3}
{0,1,3,4,6}b={2,3,4,5,6}
所以将{0,1,3,4,6}划分为{0,4,6}{1,3}
G={(0,4,6),(1,3),(2,5)}
{0,4,6}b={3,6,4}所以 划分为{0},{4,6}
G={(0),(4,6),(1,3),(2,5)}
不能再划分,分别用 0,4,1,2代表各状态,构造DFAFra Baidu bibliotek态转换图如下;
8.代入得
S = 0(1S|1)| 1(0S|0)
= 01(S|ε) | 10(S|ε)
= (01|10)(S|ε)
= (01|10)S | (01|10)
= (01|10)*(01|10)
=>(<因子>)=>(i)
(3) <表达式> =><项>=><项>*<因子>=><因子>*<因子>=i*i
(4) <表达式> => <表达式>+<项>=><项>+<项>=><项>*<因子>+<项>
=><因子>*<因子>+<项>=><因子>*<因子>+<因子>=i*i+i
(5) <表达式> => <表达式>+<项>=><项>+<项>=><因子>+<项>=i+<项>
G=( {0},{1,2,3,4,5} )
{1,2,3,4,5}a={1,3,0,5}
{1,2,3,4,5}b={4,3,2,5}
由于{4}a={0} {1,2,3,5}a={1,3,5}
因此应将{1,2,3,4,5}划分为{4},{1,2,3,5}
G=({0}{4}{1,2,3,5})
{1,2,3,5}a={1,3,5}
{1,2,3,5}b={4,3,2}
因为{1,5}b={4} {23}b={2,3}
所以应将{1,2,3,5}划分为{1,5}{2,3}
G=({0}{1,5}{2,3}{4})
{1,5}a={1,5} {1,5}b={4} 所以{1,5} 不用再划分
{2,3}a={1,3} {2,3}b={3,2}
4.(1)解
构造状态转换矩阵:
a
b
{0}0*
{0,1}
{1}
{0,1}*
{0,1}
{1}
{1}
{0}
转换为
a
b
0*
1
2
1*
1
2
2
0
{2,3} {0,1}
{2,3}a={0,3}
{2},{3},{0,1}
{0,1}a={1,1} {0,1}b={2,2}
(2)解:首先把M的状态分为两组:终态组{0},和非终态组{1,2,3,4,5}此时
构造DFA的矩阵表示
0
1
{S}0
{V,Q}
{Q,U}
{V,Q}
{Z,V}
{Q,U}
{Q,U}
{V}
{Q,U,Z}
{Z,V}*
{Z}
{Z}
{V}
{Z}
{Q,U,Z}*
{V,Z}
{Q,U,Z}
{Z}
{Z}
{Z}
其中0表示初态,*表示终态
替换后的矩阵
0
1
00
1
2
1
3
2
2
4
5
3*
6
6
4
6
5*
3
5
6
6
6
构造DFA状态转换图(略)
因为 {2}a={1} {3}a={3} 所以{2,3}应划分为{2}{3}
所以化简后为G=( {0},{2},{3},{4},{1,5})
7.去除多余产生式后,构造NFA如下
确定化,构造DFA矩阵
a
b
S
A
Q
A
A
B,Z
B,Z
Q
D
Q
Q
D,Z
D
A
B
D,Z
A
D
B
Q
D
变换为
a
b
00
1
3
1
1
2
2*
3
4
3
3
5
4
0
1
{z}
{x}
{Z}*
{X,z}
{y}
{X,z}*
{X,z}
{X,y}
{y}
{X,y}
{X,y}
{X,y,z}
{x}
{X,y,z}*
{X,y,z}
{X,y}
其中0表示初态,*表示终态
用0,1,2,3,4,5分别代替{X} {Z}{X,z}{y} {X,y} {X,y,z}
得DFA状态图为:
3.解:构造DFA矩阵表示
第三章
N=>D=> {0,1,2,3,4,5,6,7,8,9}
N=>ND=>NDD
L={a |a(0|1|3..|9)n且 n>=1}
(0|1|3..|9)n且 n>=1
{ab,}
anbnn>=1
第6题.
(1) <表达式>=><项>=><因子>=>i
(2) <表达式> => <项>=><因子>=>(<表达式>)=>(<项>)
(1,2,3,4,5,8)d=(3,8)
所以应将(1,2,3,4,5,8)分为(1,2,5,8), (3,4)
G={(1,2,5,8),(3,4),(6,7)}
=>i+<因子>=>i+(<表达式>)=> i+(<表达式>+<项>)
=> i+(<因子>+<因子>)
=>i+(i+i)
(6) <表达式> => <表达式>+<项>=><项>+<项>=><因子>+<项>=>i+<项>
=>i+<项>*<因子>=>i+<因子>*<因子>=i+i*i
第7题
第9题
语法树
推导: S=>SS*=>SS+S*=>aa+a*
直接短语:a1, b1, b2, a2,,
句柄:a1
14(1)
SAB
AaAb |ε
BaBb |ε
(2)
S1S0
SA
A0A1 |ε
第四章
1.1. 构造下列正规式相应的DFA
(1)1(0|1)*101
NFA
(2) 1(1010*|1(010)*1)*0
NFA
(3)NFA
(4)NFA
2.解:构造DFA矩阵表示
语法树:
短语: T*F E+T*F
直接短语: T*F
句柄: T*F
12.
短语:<T><F><MOP> <E><T><F><MOP><POP>
直接短语:<T><F><MOP>
句柄: <T><F><MOP>
13.(1)最左推导:S=> ABS => aBS =>aSBBS => aBBS
=> abBS => abbS => abbAa => abbaa
最右推导:S => ABS => ABAa => ABaa => ASBBaa
=> ASBbaa => ASbbaa => Abbaa => a1b1b2a2a3
(2)文法:SABS
SAa
Sε
Aa
Bb
(3)短语:a1, b1, b2, a2, , bb , aa , abbaa,
构造NFA
由NFA可得正规式为(01|10)*(01|10)=(01|10)+
9.状态转换函数不是全函数,增加死状态8,
G={(1,2,3,4,5,8),(6,7)}
(1,2,3,4,5,8)a=(3,4,8) (3,4)应分出
(1,2,3,4,5,8)b=(2,6,7,8)
(1,2,3,4,5,8)c=(3,8)
1
6
5*
1
4
6
3
4
化简:
G={(0,1,3,4,6),(2,5)}
{0,1,3,4,6}a={1,3}
{0,1,3,4,6}b={2,3,4,5,6}
所以将{0,1,3,4,6}划分为{0,4,6}{1,3}
G={(0,4,6),(1,3),(2,5)}
{0,4,6}b={3,6,4}所以 划分为{0},{4,6}
G={(0),(4,6),(1,3),(2,5)}
不能再划分,分别用 0,4,1,2代表各状态,构造DFAFra Baidu bibliotek态转换图如下;
8.代入得
S = 0(1S|1)| 1(0S|0)
= 01(S|ε) | 10(S|ε)
= (01|10)(S|ε)
= (01|10)S | (01|10)
= (01|10)*(01|10)
=>(<因子>)=>(i)
(3) <表达式> =><项>=><项>*<因子>=><因子>*<因子>=i*i
(4) <表达式> => <表达式>+<项>=><项>+<项>=><项>*<因子>+<项>
=><因子>*<因子>+<项>=><因子>*<因子>+<因子>=i*i+i
(5) <表达式> => <表达式>+<项>=><项>+<项>=><因子>+<项>=i+<项>
G=( {0},{1,2,3,4,5} )
{1,2,3,4,5}a={1,3,0,5}
{1,2,3,4,5}b={4,3,2,5}
由于{4}a={0} {1,2,3,5}a={1,3,5}
因此应将{1,2,3,4,5}划分为{4},{1,2,3,5}
G=({0}{4}{1,2,3,5})
{1,2,3,5}a={1,3,5}
{1,2,3,5}b={4,3,2}
因为{1,5}b={4} {23}b={2,3}
所以应将{1,2,3,5}划分为{1,5}{2,3}
G=({0}{1,5}{2,3}{4})
{1,5}a={1,5} {1,5}b={4} 所以{1,5} 不用再划分
{2,3}a={1,3} {2,3}b={3,2}
4.(1)解
构造状态转换矩阵:
a
b
{0}0*
{0,1}
{1}
{0,1}*
{0,1}
{1}
{1}
{0}
转换为
a
b
0*
1
2
1*
1
2
2
0
{2,3} {0,1}
{2,3}a={0,3}
{2},{3},{0,1}
{0,1}a={1,1} {0,1}b={2,2}
(2)解:首先把M的状态分为两组:终态组{0},和非终态组{1,2,3,4,5}此时
构造DFA的矩阵表示
0
1
{S}0
{V,Q}
{Q,U}
{V,Q}
{Z,V}
{Q,U}
{Q,U}
{V}
{Q,U,Z}
{Z,V}*
{Z}
{Z}
{V}
{Z}
{Q,U,Z}*
{V,Z}
{Q,U,Z}
{Z}
{Z}
{Z}
其中0表示初态,*表示终态
替换后的矩阵
0
1
00
1
2
1
3
2
2
4
5
3*
6
6
4
6
5*
3
5
6
6
6
构造DFA状态转换图(略)
因为 {2}a={1} {3}a={3} 所以{2,3}应划分为{2}{3}
所以化简后为G=( {0},{2},{3},{4},{1,5})
7.去除多余产生式后,构造NFA如下
确定化,构造DFA矩阵
a
b
S
A
Q
A
A
B,Z
B,Z
Q
D
Q
Q
D,Z
D
A
B
D,Z
A
D
B
Q
D
变换为
a
b
00
1
3
1
1
2
2*
3
4
3
3
5
4
0
1
{z}
{x}
{Z}*
{X,z}
{y}
{X,z}*
{X,z}
{X,y}
{y}
{X,y}
{X,y}
{X,y,z}
{x}
{X,y,z}*
{X,y,z}
{X,y}
其中0表示初态,*表示终态
用0,1,2,3,4,5分别代替{X} {Z}{X,z}{y} {X,y} {X,y,z}
得DFA状态图为:
3.解:构造DFA矩阵表示
第三章
N=>D=> {0,1,2,3,4,5,6,7,8,9}
N=>ND=>NDD
L={a |a(0|1|3..|9)n且 n>=1}
(0|1|3..|9)n且 n>=1
{ab,}
anbnn>=1
第6题.
(1) <表达式>=><项>=><因子>=>i
(2) <表达式> => <项>=><因子>=>(<表达式>)=>(<项>)
(1,2,3,4,5,8)d=(3,8)
所以应将(1,2,3,4,5,8)分为(1,2,5,8), (3,4)
G={(1,2,5,8),(3,4),(6,7)}
=>i+<因子>=>i+(<表达式>)=> i+(<表达式>+<项>)
=> i+(<因子>+<因子>)
=>i+(i+i)
(6) <表达式> => <表达式>+<项>=><项>+<项>=><因子>+<项>=>i+<项>
=>i+<项>*<因子>=>i+<因子>*<因子>=i+i*i
第7题
第9题
语法树
推导: S=>SS*=>SS+S*=>aa+a*
直接短语:a1, b1, b2, a2,,
句柄:a1
14(1)
SAB
AaAb |ε
BaBb |ε
(2)
S1S0
SA
A0A1 |ε
第四章
1.1. 构造下列正规式相应的DFA
(1)1(0|1)*101
NFA
(2) 1(1010*|1(010)*1)*0
NFA
(3)NFA
(4)NFA
2.解:构造DFA矩阵表示