完整word版编译原理第三版课后答案
编译原理第三版课后答案王生原
编译原理第三版课后答案王生原编译原理第三版课后答案王生原【篇一:编译原理课后答案(第三版蒋立源康慕宁编)】class=txt>第一章习题解答1解:源程序是指以某种程序设计语言所编写的程序。
目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。
翻译程序是将某种语言翻译成另一种语言的程序的统称。
编译程序与解释程序均为翻译程序,但二者工作方法不同。
解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。
即边解释边执行,翻译所得的指令序列并不保存。
编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。
即先翻译、后执行。
2解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。
3解:c语言的关键字有:auto break case char constcontinue default do double else enum extern float for goto if int long register return shortsigned sizeof static struct switch typedef union unsigned void volatile while。
上述关键字在c语言中均为保留字。
4解:c语言中括号有三种:{},[],()。
其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。
c语言中无end关键字。
逗号在c语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为d)。
编译原理第三版课后答案王生原
编译原理第三版课后答案王生原编译原理第三版课后答案王生原【篇一:编译原理课后答案(第三版蒋立源康慕宁编)】class=txt>第一章习题解答1解:源程序是指以某种程序设计语言所编写的程序。
目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。
翻译程序是将某种语言翻译成另一种语言的程序的统称。
编译程序与解释程序均为翻译程序,但二者工作方法不同。
解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。
即边解释边执行,翻译所得的指令序列并不保存。
编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。
即先翻译、后执行。
2解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。
3解:c语言的关键字有:auto break case char constcontinue default do double else enum extern float for goto if int long register return shortsigned sizeof static struct switch typedef union unsigned void volatile while。
上述关键字在c语言中均为保留字。
4解:c语言中括号有三种:{},[],()。
其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。
c语言中无end关键字。
逗号在c语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为d)。
编译原理第三版答案
第二章P36-6(1)L G ()1是0~9组成的数字串(2)最左推导:N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒0010120127334556568最右推导:N ND N ND N ND N D N ND N D N ND N ND N D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒77272712712701274434886868568P36-7G(S)O N O D N S O AO A AD N→→→→→1357924680|||||||||||P36-8文法:E T E T E T TF T F T F F E i→+-→→|||*|/()| 最左推导:E E T T TF T i T i T F i F F i i F i i i E T T F F F i F i E i E T i T T i F T i i T i i F i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+********()*()*()*()*()*()*()最右推导:E E T E TF E T i E F i E i i T i i F i i i i i E T F T F F F E F E T F E F F E i F T i F F i F i i i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+⇒+**********()*()*()*()*()*()*()*()语法树:/********************************EE FTE +T F F T +iiiEEFTE-T F F T -iiiEEFT+T F FTiii*i+i+ii-i-ii+i*i*****************/P36-9句子iiiei 有两个语法树:S iSeS iSei iiSei iiiei S iS iiSeS iiSei iiiei ⇒⇒⇒⇒⇒⇒⇒⇒P36-10/**************)(|)(|S T TTS S →→***************/P36-11/*************** L1:ε||cC C ab aAb A ACS →→→ L2:bcbBc B aA A AB S ||→→→εL3:εε||aBb B aAb A ABS →→→ L4:AB B A A B A S |01|10|→→→ε ***************/第三章习题参考答案P64–7(1)确定化:最小化:{,,,,,},{}{,,,,,}{,,}{,,,,,}{,,,}{,,,,},{},{}{,,,,}{,,}{,,,},{},{},{}{,,,}{,012345601234513501234512460123456012341350123456012310100==== 3012312401234560110112233234012345610101}{,,,}{,,}{,},{,}{},{},{}{,}{}{,}{,}{,}{}{,}{}{},{},{,},{},{},{}=====P64–8(1)01)0|1(*(2))5|0(|)5|0()9|8|7|6|5|4|3|2|1|0)(9|8|7|6|5|4|3|2|1(*(3)******)110|0(01|)110|0(10P64–12(a)确定化:给状态编号:最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}012301101223032330123a ba b ====(b)已经确定化了,进行最小化最小化:{{,}, {,,,}}012345011012423451305234523452410243535353524012435011012424{,}{}{,}{,}{,,,}{,,,}{,,,}{,,,}{,}{,}{,}{,}{,}{,}{,}{,}{{,},{,},{,}}{,}{}{,}{,}{,}a b a b a b a b a b a =============={,}{,}{,}{,}{,}{,}{,}10243535353524 b a baP64–14(2):给状态编号:最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}0123011012231323301230101====第四章P81–1(1) 按照T,S 的顺序消除左递归ε|,)(||^)(T S T T S T T a S S G '→''→→' (2)FIRST(S)={a,^,(} FIRST(T)={a,^,(} FIRST('T )={,,ε} FOLLOW(S)={),,,#} FOLLOW(T)={)}FOLLOW('T )={)}是LL(1)文法P81–2文法:|^||)(|*||b a E P F F F P F T T T F T E E E T E →'→''→→''→+→''→εεε(1)FIRST(E)={(,a,b,^} FIRST(E')={+,ε} FIRST(T)={(,a,b,^} FIRST(T')={(,a,b,^,ε} FIRST(F)={(,a,b,^} FIRST(F')={*,ε} FIRST(P)={(,a,b,^} FOLLOW(E)={#,)} FOLLOW(E')={#,)} FOLLOW(T)={+,),#} FOLLOW(T')={+,),#}FOLLOW(F)={(,a,b,^,+,),#} FOLLOW(F')={(,a,b,^,+,),#} FOLLOW(P)={*,(,a,b,^,+,),#} (2)考虑下列产生式:'→+'→'→'→E E T T F F P E a b ||*|()|^||εεεFIRST(+E)∩FIRST(ε)={+}∩{ε}=φ FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φFIRST(*F')∩FIRST(ε)={*}∩{ε}=φFIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ 所以,该文法式LL(1)文法. (3)P81–3/***************(1) 是,满足三个条件。
陈火旺编译原理(第三版)课后习题答案
第二章P36-6(1)L ( G 1)是 0~9 组成的数字串(2)最左推导 :N ND NDD NDDD DDDD0DDD01DD012D 0127N ND DD 3D34NNDNDDDDD5DD56 D568最右推导 :N ND N 7 ND 7 N 27 ND 27N 127D1270127NND N 4 D 4 34N NDN 8ND 8N 68D 68 568P36-7G(S)O 1|3|5|7|9N 2|4|6|8|O D 0|NS O|AO A AD|NP36-8文法:E T|E T|E TT F|T*F|T/F F ( E)|i最左推导 :E E T T TF T i Ti T * F i F * F i i * Fi i * iET T * FF * Fi * F i *( E ) i *( E T )i *( T T )i *( F T )i *( iT )i *( iF )i *( i i )最右推导 :E E T E T*FE T * i EF * i E i * iT i * iF i * i i i * iETF * TF * F F*( E)F*( E T)F*( E F)F *( E i )F *( T i )F *( F i )F *( i i )i *( i i )语法树: /********************************E E EE+T E+T E-TE-T F E+T FT T*FT F i T F iF F iF iF ii ii ii+i+i i-i-i i+i*i*****************/P36-9句子 iiiei有两个语法树:S iSeS iSei iiSei iiieiS iS iiSeS iiSei iiieiP36-10/**************S TS |TT(S) |()***************/P36-11/***************L1:S ACA aAb | abC cC |L2:S ABA aA |B bBc | bcL3:S ABA aAb | BaBb |L4:S A | BA 0A1| B1B0| A***************/第三章习题参考答案P64–7(1)1(01|) * 101X Y1101X12345Y1确定化:01 {X}φ{1,2,3}φφφ{1,2,3}{2,3}{2,3,4}{2,3}{2,3}{2,3,4}{2,3,4}{2,3,5}{2,3,4}{2,3,5}{2,3}{2,3,4,Y}{2,3,4,Y}{2,3,5}{2,3,4,}102300110101564111最小化:{ 0,1,2,3,4,5},{ 6}{ 0,1,2,3,4,5} 0{1,3,5}{0,1,2,3,4,5} 1{1,2,4,6}{ 0,1,2,3,4},{ 5},{ 6}{ 0,1,2,3,4} 0{1,3,5}{ 0,1,2,3},{ 4},{ 5},{ 6}{ 0,1,2,3} 0{1,3}{0,1,2,3}1{12,,4}{ 0,1},{2,3}{ 4},{5},{6}{ 0,1} 0{1}{0,1} 1{1,2}{ 2,3} 0{ 3}{ 2,3}1{4}{ 0},{ 1},{ 2,3},{ 4},{ 5},{ 6}1020010011345111P64–8(1)(1 | 0)* 01(2)(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(0|5) |(0|5)(3)0*1(0 | 10*1) * |1* 0(0 |10* 1) *P64–12(a)aa,b01a确定化:a b{0}{0,1}{1}{0,1}{0,1}{1}{1}{0}φφφφ给状态编号:a b012112203333 aa01a b b bb23a最小化:{ 0,1},{2,3}{ 0,1} a{1}{0,1} b{ 2}{ 2,3} a{ 0,3}{ 2,3} b{3}{ 0,1},{2},{3}a ab b012ab(b)b b a023a baa bb1a5a4 a已经确定化了, 进行最小化最小化:{{ 0,1}, { 2, 3,4, 5}}{ 0,1} a{1}{ 0,1} b{ 2,4}{ 2, 3,4,5} a { 1, 3, 0, 5}{ 2,3,4,5} b { 2, 3,4,5} { 2, 4} a{1,0}{ 2,4} b{ 3,5}{ 3, 5} a{ 3,5}{ 3,5} b{ 2,4}{{ 0,1},{2, 4},{3, 5}}{ 0,1} a{1}{ 0,1} b{ 2,4}{ 2, 4} a{1,0}{ 2,4} b{ 3,5}{ 3, 5} a{ 3,5}{ 3,5} b{ 2,4}b b a012a baP64–14(1)0101(2):X(| )*010Y2 01X1Y 0确定化:01 {X,1,Y}{1,Y}{2}{1,Y}{1,Y}{2}{2}{1,Y}φφφφ给状态编号:01 01211221333311011123最小化:{ 0,1},{ 2, 3}{ 0,1} 0{1}{ 0,1} 1{ 2}{ 2,3} 0{1,3}{ 2,3}1{ 3}{ 0,1},{ 2},{ 3}111013第四章P81–1(1)按照 T,S 的顺序消除左递归G (S)S a |^ | (T )T STT ,ST|递归子程序:procedure S;beginif sym='a' or sym='^'then abvanceelse if sym='('then beginadvance;T;if sym=')' then advance;else error;endelse errorend;procedure T;beginS; Tend;procedure T ;beginif sym=','then beginadvance;S; Tendend;其中 :sym: 是输入串指针IP 所指的符号advance: 是把 IP 调至下一个输入符号error:是出错诊察程序(2)FIRST(S)={a,^,(}FIRST(T)={a,^,(}FIRST( T )={,,}FOLLOW(S)={),,,#}FOLLOW(T)={)}FOLLOW(T )={)}预测分析表a^(),# S S a S ^S (T)T T ST T ST T STT T T,ST是 LL(1) 文法P81–2文法:E TEE E |T FTT T |FPFF* F |P( E) | a | b |^(1)FIRST(E)={(,a,b,^}FIRST(E')={+, ε }FIRST(T)={(,a,b,^}FIRST(T')={(,a,b,^,ε }FIRST(F)={(,a,b,^}FIRST(F')={*, ε }FIRST(P)={(,a,b,^}FOLLOW(E)={#,)}FOLLOW(E')={#,)}FOLLOW(T)={+,),#}FOLLOW(T')={+,),#}FOLLOW(F)={(,a,b,^,+,),#}FOLLOW(F')={(,a,b,^,+,),#}FOLLOW(P)={*,(,a,b,^,+,),#}(2)考虑下列产生式:E E|T T|F* F |P( E)|^| a|bFIRST(+E) ∩ FIRST( ε )={+} ∩{ ε }= φFIRST(+E) ∩ FOLLOW(E')={+} ∩ {#,)}=φFIRST(T) ∩FIRST( ε)={(,a,b,^}∩ {ε}=φFIRST(T) ∩FOLLOW(T')={(,a,b,^}∩ {+,),#}=φFIRST(*F')∩ FIRST(ε )={*}∩ {ε }=φFIRST(*F')∩ FOLLOW(F')={*}∩ {(,a,b,^,+,),#}=φFIRST((E)) ∩ FIRST(a)∩ FIRST(b)∩FIRST(^)=φ所以 , 该文法式LL(1) 文法 .(3)+*()a b^#E E TE'E TE' E TE' E TE'E'E E E E T T FT T FT T FT T FTT'T T T T T T T T T T TF F' PF PF F PF F PF F PFF F*F F F F F F FP( E )P a P b P ^(4)procedure E;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin T; E' endelse errorendprocedure E';beginif sym='+'then begin advance; E endelse if sym<>')' and sym<>'#' then error endprocedure T;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin F; T' endelse errorendprocedure T';beginif sym='(' or sym='a' or sym='b' or sym='^' then Telse if sym='*' then errorendprocedure F;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin P; F' endelse errorendprocedure F';beginif sym='*'then begin advance; F' endendprocedure P;beginif sym='a' or sym='b' or sym='^'then advanceelse if sym='(' thenbeginadvance; E;if sym=')' then advanceelse errorendelse errorend;P81–3/***************(1)是,满足三个条件。
编译原理(第三版)答案
给状态编号:
a {0,1} {0,1} {0}
Φ
5
b {1} {1} Φ Φ
a
B
0
1
2
3
3
3
3
4
a
a
0
1
a
b
b
b
b
2
3
a
最小化: {0,1} {2,3} {0,1}a={1},{0,1}b={2} {2,3}a={0,3},{2,3}={3} {0,1},{2},{3}
a
a
b b
0
1
2
E'→+E|ε: First(E') = {+,ε}∩Follow(E')={#,)} = Φ
T'→T|ε: First(T') = {(,a,b, ⋀, ε} ∩Follow(T')={+,),#} = Φ
F'→*F'|ε:First(F') = {*,ε}∩Follow(F')={ (,a,b,⋀,),# } = Φ
then advance else if sym=‘(’
then begin advance;T; if sym = ‘)’ then advance; else error;
end else error end
第四章
procedure T; begin
S;T' End
Procedure T';
Begin
P-36-8 G(E):E→T|E+T|E-T
T→F|T*F|T/F F→(E)|i 最左推导:
E⇒E+T⇒T+T⇒F+T⇒i+T⇒i+T*F⇒i+F*F⇒i+i*F⇒i+i*i
(完整版)编译原理课后答案(第三版蒋立源康慕宁编)
编译原理课后答案(第三版蒋立源康慕宁编)第一章习题解答1解:源程序是指以某种程序设计语言所编写的程序。
目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。
翻译程序是将某种语言翻译成另一种语言的程序的统称。
编译程序与解释程序均为翻译程序,但二者工作方法不同。
解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。
即边解释边执行,翻译所得的指令序列并不保存。
编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。
即先翻译、后执行。
2解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。
3解:C语言的关键字有:auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while。
上述关键字在C语言中均为保留字。
4解:C语言中括号有三种:{},[],()。
其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。
C语言中无END关键字。
逗号在C语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为d)。
5略第二章习题解答1.(1)答:26*26=676(2)答:26*10=260(3)答:{a,b,c,...,z,a0,a1,...,a9,aa,...,az,...,zz,a00,a01,...,zzz},共26+26*36+26*36*36=34658个2.构造产生下列语言的文法(1){anbn|n≥0}解:对应文法为G(S) = ({S},{a,b},{ S→ε| aSb },S)(2){anbmcp|n,m,p≥0}解:对应文法为G(S) = ({S,X,Y},{a,b,c},{S→aS|X,X→bX|Y,Y→cY|ε},S)(3){an # bn|n≥0}∪{cn # dn|n≥0}解:对应文法为G(S) = ({S,X,Y},{a,b,c,d,#}, {S→X, S→Y,X→aXb|#,Y→cYd|# },S)(4){w#wr# | w?{0,1}*,wr是w的逆序排列}解:G(S) = ({S,W,R},{0,1,#}, {S→W#, W→0W0|1W1|# },S)(5)任何不是以0打头的所有奇整数所组成的集合解:G(S) = ({S,A,B,I,J},{-,0,1,2,3,4,5,6,7,8,9},{S→J|IBJ,B→0B|IB|e, I→J|2|4|6|8, Jà1|3|5|7|9}, S)(6)所有偶数个0和偶数个1所组成的符号串集合解:对应文法为S→0A|1B|e,A→0S|1C B→0C|1S C→1A|0B3.描述语言特点(1)S→10S0S→aAA→bAA→a解:本文法构成的语言集为:L(G)={(10)nabma0n|n, m≥0}。
1编译原理 第三版 陈火旺 课后习题及答案
第2章习题参考答案P36-6 (1)L G ()1是0~9组成的数字串(2) 最左推导:N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒0010120127334556568最右推导:N ND N ND N ND N D N ND N D N ND N ND N D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒77272712712701274434886868568P36-7 G(S)O N O D N S O AO A AD N→→→→→1357924680|||||||||||P36-8文法:E T E T E T TF T F T F F E i→+-→→|||*|/()| 最左推导:E E T T TF T i T i T F i F F i i F i i i E T T F F F i F i E i E T i T T i F T i i T i i F i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+********()*()*()*()*()*()*()最右推导:E E T E TF E T i E F i E i i T i i F i i i i i E T F T F F F E F E T F E F F E i F T i F F i F i i i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+⇒+**********()*()*()*()*()*()*()*()语法树:/********************************EE FTE +T F F T +iiiEEFTE-T F F T -iiiEEFT+T F FTiii*i+i+ii-i-ii+i*i*****************/P36-9句子iiiei 有两个语法树:S iSeS iSei iiSei iiiei S iS iiSeS iiSei iiiei ⇒⇒⇒⇒⇒⇒⇒⇒P36-10/**************)(|)(|S T TTS S →→***************/P36-11/*************** L1:ε||cC C ab aAb A AC S →→→ L2:bcbBc B aA A AB S ||→→→εL3:εε||aBb B aAb A AB S →→→ L4:AB B A A B A S |01|10|→→→ε ***************/第2章习题参考答案P64–7(1)101101(|)*1 ε ε 1 0 11 确定化:0 1 {X} φ {1,2,3} φ φ φ {1,2,3} {2,3} {2,3,4} {2,3} {2,3} {2,3,4} {2,3,4} {2,3,5} {2,3,4}{2,3,5} {2,3} {2,3,4,Y} {2,3,4,Y}{2,3,5}{2,3,4,}1 00 0 1 1 0X 1 2 3 4 Y5 XY0 12 30 10 1 1 1 最小化:{,,,,,},{}{,,,,,}{,,}{,,,,,}{,,,}{,,,,},{},{}{,,,,}{,,}{,,,},{},{},{}{,,,}{,012345601234513501234512460123456012341350123456012310100==== 3012312401234560110112233234012345610101}{,,,}{,,}{,},{,}{},{},{}{,}{}{,}{,}{,}{}{,}{}{},{},{,},{},{},{}===== 010 0 1 00 1 0 1 1 1P64–8(1)01)0|1(*(2))5|0(|)5|0()9|8|7|6|5|4|3|2|1|0)(9|8|7|6|5|4|3|2|1(*(3)******)110|0(01|)110|0(10P64–12(a)aa,b a65 4 5 01 2 4 3 01确定化:a b {0} {0,1} {1} {0,1} {0,1} {1} {1} {0} φ φφφ给状态编号:a b 0 1 2 1 1 2 2 0 3 333aaa b b bba最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}012301101223032330123a ba b ====a ab bab (b)b b aa ba0 1 2 3 01 2 0 2 3a bb aa a已经确定化了,进行最小化 最小化:{{,}, {,,,}}012345011012423451305234523452410243535353524012435011012424{,}{}{,}{,}{,,,}{,,,}{,,,}{,,,}{,}{,}{,}{,}{,}{,}{,}{,}{{,},{,},{,}}{,}{}{,}{,}{,}a b a b a b a b a b a =============={,}{,}{,}{,}{,}{,}{,}10243535353524 b a bb b aa baP64–14(1) 01 0 (2):(|)*0100 1 ε ε14 5 0 1 2 01YX YX2 1确定化:0 1 {X,1,Y} {1,Y} {2} {1,Y} {1,Y} {2} {2} {1,Y} φ φφφ给状态编号:0 1 0 1 2 1 1 2 2 1 3 3330 1 01 1 10 最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}0123011012231323301230101====1 1 1 0第4章课后习题答案P81–1(1) 按照T,S 的顺序消除左递归ε|,)(||^)(T S T T S T T a S S G '→''→→'递归子程序:0 2 13 01 3procedure S; beginif sym='a' or sym='^' then abvance else if sym='(' then begin advance;T;if sym=')' then advance; else error; end else error end;procedure T; begin S;'T end;procedure 'T ; beginif sym=',' then begin advance; S;'T end end; 其中:sym:是输入串指针IP 所指的符号 advance:是把IP 调至下一个输入符号 error:是出错诊察程序 (2)FIRST(S)={a,^,(} FIRST(T)={a,^,(} FIRST('T )={,,ε} FOLLOW(S)={),,,#} FOLLOW(T)={)} FOLLOW('T )={)} 预测分析表a^() , # S S a →S →^S T →()TT ST →' T ST →' T ST →''T'→T ε '→'T ST ,是LL(1)文法P81–2文法:|^||)(|*||b a E P F F F P F T T T F T E E E T E →'→''→→''→+→''→εεε(1)FIRST(E)={(,a,b,^} FIRST(E')={+,ε} FIRST(T)={(,a,b,^} FIRST(T')={(,a,b,^,ε} FIRST(F)={(,a,b,^} FIRST(F')={*,ε} FIRST(P)={(,a,b,^} FOLLOW(E)={#,)} FOLLOW(E')={#,)} FOLLOW(T)={+,),#} FOLLOW(T')={+,),#}FOLLOW(F)={(,a,b,^,+,),#} FOLLOW(F')={(,a,b,^,+,),#} FOLLOW(P)={*,(,a,b,^,+,),#} (2)考虑下列产生式:'→+'→'→'→E E T T F F P E a b ||*|()|^||εεεFIRST(+E)∩FIRST(ε)={+}∩{ε}=φ FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ FIRST(*F')∩FIRST(ε)={*}∩{ε}=φFIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ 所以,该文法式LL(1)文法. (3)+ * ( ) a b ^ # EE TE →'E TE →' E TE →' E TE →'E' '→+E E'→E ε'→E εTT F T →'T F T →' T F T →' T F T →'T''→T ε'→T T '→T ε '→T T '→T T '→T T '→T εFF P F →' F P F →' F P F →' F P F →'F' '→F ε '→'F F * '→F ε '→F ε '→F ε '→F ε '→F ε '→F εPP E →() P a → P b → P →^(4)procedure E; beginif sym='(' or sym='a' or sym='b' or sym='^' then begin T; E' end else error endprocedure E'; beginif sym='+'then begin advance; E endelse if sym<>')' and sym<>'#' then error endprocedure T; beginif sym='(' or sym='a' or sym='b' or sym='^' then begin F; T' end else error endprocedure T'; beginif sym='(' or sym='a' or sym='b' or sym='^' then Telse if sym='*' then error endprocedure F; beginif sym='(' or sym='a' or sym='b' or sym='^' then begin P; F' end else error endprocedure F'; beginif sym='*'then begin advance; F' end endprocedure P; beginif sym='a' or sym='b' or sym='^' then advanceelse if sym='(' thenbeginadvance; E;if sym=')' then advance else error endelse errorend;P81–3/***************(1) 是,满足三个条件。
编译原理第三版课后答案王生原
编译原理第三版课后答案王生原编译原理第三版课后答案王生原【篇一:编译原理课后答案(第三版蒋立源康慕宁编)】class=txt>第一章习题解答1解:源程序是指以某种程序设计语言所编写的程序。
目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。
翻译程序是将某种语言翻译成另一种语言的程序的统称。
编译程序与解释程序均为翻译程序,但二者工作方法不同。
解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。
即边解释边执行,翻译所得的指令序列并不保存。
编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。
即先翻译、后执行。
2解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。
3解:c语言的关键字有:auto break case char constcontinue default do double else enum extern float for goto if int long register return shortsigned sizeof static struct switch typedef union unsigned void volatile while。
上述关键字在c语言中均为保留字。
4解:c语言中括号有三种:{},[],()。
其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。
c语言中无end关键字。
逗号在c语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为d)。
编译原理第三版课后习题答案
目录P36-6 (2)P36-7 (2)P36-8 (2)P36-9 (3)P36-10 (3)P36-11 (3)P64–7 (4)P64–8 (5)P64–12 (5)P64–14 (7)P81–1 (8)P81–2 (9)P81–3 (12)P133–1 (12)P133–2 (12)P133–3 (14)P134–5 (15)P164–5 (19)P164–7 (19)P217–1 (19)P217–3 (20)P218–4 (20)P218–5 (21)P218–6 (22)P218–7 (22)P219–12 (22)P270–9 (24)P36-6(1)L G ()1是0~9组成的数字串(2)最左推导:N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒0010120127334556568最右推导:N ND N ND N ND N D N ND N D N ND N ND N D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒77272712712701274434886868568P36-7G(S)O N O D N S O AO A AD N→→→→→1357924680|||||||||||P36-8文法:E T E T E T TF T F T F F E i→+-→→|||*|/()| 最左推导:E E T T TF T i T i T F i F F i i F i i i E T T F F F i F i E i E T i T T i F T i i T i i F i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+********()*()*()*()*()*()*()最右推导:E E T E TF E T i E F i E i i T i i F i i i i i E T F T F F F E F E T F E F F E i F T i F F i F i i i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+⇒+**********()*()*()*()*()*()*()*()语法树:/********************************EE FTE +T F F T +iiiEEFTE-T F F T -iiiEEFT+T F FTiii*i+i+ii-i-ii+i*i*****************/P36-9句子iiiei 有两个语法树:S iSeS iSei iiSei iiiei S iS iiSeS iiSei iiiei ⇒⇒⇒⇒⇒⇒⇒⇒P36-10/**************)(|)(|S T TTS S →→***************/P36-11/*************** L1:ε||cC C ab aAb A AC S →→→ L2:bcbBc B aA A AB S ||→→→εL3:εε||aBb B aAb A AB S →→→ L4:AB B A A B A S |01|10|→→→ε ***************/第三章习题参考答案P64–7(1)确定化:最小化:{,,,,,},{}{,,,,,}{,,}{,,,,,}{,,,}{,,,,},{},{}{,,,,}{,,}{,,,},{},{},{}{,,,}{,01234560123451350123451246012345601234135012345601231010==== 3012312401234560110112233234012345610101}{,,,}{,,}{,},{,}{},{},{}{,}{}{,}{,}{,}{}{,}{}{},{},{,},{},{},{}=====P64–8(1)01)0|1(*(2))5|0(|)5|0()9|8|7|6|5|4|3|2|1|0)(9|8|7|6|5|4|3|2|1(*(3)******)110|0(01|)110|0(10P64–12(a)确定化:给状态编号:最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}012301101223032330123a ba b ====(b)已经确定化了,进行最小化最小化:{{,}, {,,,}}012345011012423451305234523452410243535353524012435011012424{,}{}{,}{,}{,,,}{,,,}{,,,}{,,,}{,}{,}{,}{,}{,}{,}{,}{,}{{,},{,},{,}}{,}{}{,}{,}{,}a b a b a b a b a b a =============={,}{,}{,}{,}{,}{,}{,}10243535353524 b a baP64–14(2):给状态编号:最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}0123011012231323301230101====第四章P81–1(1) 按照T,S 的顺序消除左递归ε|,)(||^)(T S T TS T T a S S G '→''→→' 递归子程序: procedure S; beginif sym='a' or sym='^' then abvance else if sym='('then beginadvance;T;if sym=')' then advance;else error;endelse errorend;procedure T;beginS;'Tend;procedure 'T;beginif sym=','then beginadvance;S;'Tendend;其中:sym:是输入串指针IP所指的符号advance:是把IP调至下一个输入符号error:是出错诊察程序(2)FIRST(S)={a,^,(}FIRST(T)={a,^,(}FIRST('T)={,,ε}FOLLOW(S)={),,,#}FOLLOW(T)={)}FOLLOW('T)={)}预测分析表是LL(1)文法P81–2文法:|^||)(|*||b a E P F F F P F T T T F T E E E T E →'→''→→''→+→''→εεε(1)FIRST(E)={(,a,b,^} FIRST(E')={+,ε} FIRST(T)={(,a,b,^} FIRST(T')={(,a,b,^,ε} FIRST(F)={(,a,b,^} FIRST(F')={*,ε} FIRST(P)={(,a,b,^} FOLLOW(E)={#,)} FOLLOW(E')={#,)} FOLLOW(T)={+,),#} FOLLOW(T')={+,),#}FOLLOW(F)={(,a,b,^,+,),#} FOLLOW(F')={(,a,b,^,+,),#} FOLLOW(P)={*,(,a,b,^,+,),#} (2)考虑下列产生式:'→+'→'→'→E E T T F F P E a b ||*|()|^||εεεFIRST(+E)∩FIRST(ε)={+}∩{ε}=φ FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ FIRST(*F')∩FIRST(ε)={*}∩{ε}=φFIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ 所以,该文法式LL(1)文法.(4)procedure E;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin T; E' endelse errorendprocedure E';beginif sym='+'then begin advance; E endelse if sym<>')' and sym<>'#' then error endprocedure T;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin F; T' endelse errorendprocedure T';beginif sym='(' or sym='a' or sym='b' or sym='^' then Telse if sym='*' then errorendprocedure F;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin P; F' endelse errorendprocedure F';beginif sym='*'then begin advance; F' endendprocedure P;beginif sym='a' or sym='b' or sym='^'then advanceelse if sym='(' thenbeginadvance; E;if sym=')' then advance else error endelse errorend;P81–3/***************(1) 是,满足三个条件。
编译原理第三版课后答案王生原
编译原理第三版课后答案王生原编译原理第三版课后答案王生原【篇一:编译原理课后答案(第三版蒋立源康慕宁编)】class=txt>第一章习题解答1解:源程序是指以某种程序设计语言所编写的程序。
目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。
翻译程序是将某种语言翻译成另一种语言的程序的统称。
编译程序与解释程序均为翻译程序,但二者工作方法不同。
解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。
即边解释边执行,翻译所得的指令序列并不保存。
编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。
即先翻译、后执行。
2解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。
3解:c语言的关键字有:auto break case char constcontinue default do double else enum extern float for goto if int long register return shortsigned sizeof static struct switch typedef union unsigned void volatile while。
上述关键字在c语言中均为保留字。
4解:c语言中括号有三种:{},[],()。
其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。
c语言中无end关键字。
逗号在c语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为d)。
编译原理(第三版)第4章课后练习及参考答案中石大版第4章课后练习及参考答案
第4章练习P72作业布置:P723,7,9,11提示1:判断两个正规式是否相等,应判断两个正规式所产生的正规集是否一样。
完成此项任务需要经过四个阶段:第一,画出正规式的NFA;第二,由NFA变换到DFA;第三,将DFA最小化;第四,画出最小化DFA的有限自动机。
如果要判断的正规式的最小化DFA的有限自动机是一样的,则正规式等价;反之,则不等价。
提示2:构造正规表达式的最小化的DFA方法是:首先,按规则将正规表达式用NFA表示;其次,使用ε-closure(Move())将NFA转变为DFA;最后使用子集法将DFA最小化。
对于这类题目要多做练习,熟能生巧。
3.将下图确定化:解:下表由子集法将NFA 转换为DFA :7、给文法G[S]: S →aA|bQ A →aA|bB|bB →bD|aQ0,10,1Q →aQ|bD|b D →bB|aA E →aB|bFF →bD|aE|b构造相应的最小的DFA 。
解:由于从S 出发任何输入串都不能到达状态E 和F ,所以,状态E ,F 为多余的状态,不予考虑。
这样,可以写出文法G[S]对应的NFA M :NFA M={k, Σ, f, S, Z}K={S, A, B, Q, D, Z} S={S} Z={Z} F(S, a)=A f(S, b)=Q F(A, a)=A f(A, b)=B f(A,b)=ZF(B, b)=D f(B, a)=QF(Q, a)=Q f(Q, b)=D f(Q,b)=Z F(D, b)=B f(D, a)=A NFA M 的状态转换图为:下表由子集法将NFA 转换为DFA :a由上表可知:(1)因为C、D是DFA的终态,其他是非终态,可将状态集分成两个子集:P1={S, A, B, E, F},P2={C, D}。
(2)因为{A, B}b={C, D}为终态,{S, E, F}b={B, E, F}为非终态,所以P1可划分为:P11={S, E, F},P12={A, B}。
编译原理第三版课后答案王生原
编译原理第三版课后答案王生原编译原理第三版课后答案王生原【篇一:编译原理课后答案(第三版蒋立源康慕宁编)】class=txt>第一章习题解答1解:源程序是指以某种程序设计语言所编写的程序。
目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。
翻译程序是将某种语言翻译成另一种语言的程序的统称。
编译程序与解释程序均为翻译程序,但二者工作方法不同。
解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。
即边解释边执行,翻译所得的指令序列并不保存。
编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。
即先翻译、后执行。
2解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。
3解:c语言的关键字有:auto break case char constcontinue default do double else enum extern float for goto if int long register return shortsigned sizeof static struct switch typedef union unsigned void volatile while。
上述关键字在c语言中均为保留字。
4解:c语言中括号有三种:{},[],()。
其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。
c语言中无end关键字。
逗号在c语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为d)。
程序设计语言编译原理第3版课后答案
第二章P36-6(1)L G ()1是0~9组成的数字串(2)最左推导:N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒0010120127334556568最右推导:N ND N ND N ND N D N ND N D N ND N ND N D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒77272712712701274434886868568P36-7G(S)O N O D N S O AO A AD N→→→→→1357924680|||||||||||P36-8文法:E T E T E T TF T F T F F E i→+-→→|||*|/()| 最左推导:E E T T TF T i T i T F i F F i i F i i i E T T F F F i F i E i E T i T T i F T i i T i i F i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+********()*()*()*()*()*()*()最右推导:E E T E TF E T i E F i E i i T i i F i i i i i E T F T F F F E F E T F E F F E i F T i F F i F i i i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+⇒+**********()*()*()*()*()*()*()*()语法树:/********************************EE FTE +T F F T +iiiEEFTE-T F F T -iiiEEFT+T F FTiii*i+i+ii-i-ii+i*i*****************/P36-9句子iiiei 有两个语法树:S iSeS iSei iiSei iiiei S iS iiSeS iiSei iiiei ⇒⇒⇒⇒⇒⇒⇒⇒P36-10/**************)(|)(|S T TTS S →→***************/P36-11/*************** L1:ε||cC C ab aAb A ACS →→→ L2:bcbBc B aA A ABS ||→→→ε L3:εε||aBb B aAb A ABS →→→ L4:AB B A A B A S |01|10|→→→ε ***************/第三章习题参考答案P64–7(1)确定化:最小化:{,,,,,},{}{,,,,,}{,,}{,,,,,}{,,,}{,,,,},{},{}{,,,,}{,,}{,,,},{},{},{}{,,,}{,012345601234513501234512460123456012341350123456012310100==== 3012312401234560110112233234012345610101}{,,,}{,,}{,},{,}{},{},{}{,}{}{,}{,}{,}{}{,}{}{},{},{,},{},{},{}=====P64–8(1)01)0|1(*(2))5|0(|)5|0()9|8|7|6|5|4|3|2|1|0)(9|8|7|6|5|4|3|2|1(*(3)******)110|0(01|)110|0(10P64–12(a)确定化:给状态编号:最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}012301101223032330123a ba b ====(b)已经确定化了,进行最小化最小化:{{,}, {,,,}}012345011012423451305234523452410243535353524012435011012424{,}{}{,}{,}{,,,}{,,,}{,,,}{,,,}{,}{,}{,}{,}{,}{,}{,}{,}{{,},{,},{,}}{,}{}{,}{,}{,}a b a b a b a b a b a =============={,}{,}{,}{,}{,}{,}{,}10243535353524 b a baP64–14(2):给状态编号:最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}0123011012231323301230101====第四章P81–1(1) 按照T,S 的顺序消除左递归ε|,)(||^)(T S T T S T T a S S G '→''→→' 递归子程序:procedure S; beginif sym='a' or sym='^' then abvance else if sym='('then beginadvance;T;if sym=')' then advance;else error;endelse errorend;procedure T;beginS;'Tend;procedure 'T;beginif sym=','then beginadvance;S;'Tendend;其中:sym:是输入串指针IP所指的符号advance:是把IP调至下一个输入符号error:是出错诊察程序(2)FIRST(S)={a,^,(}FIRST(T)={a,^,(}FIRST('T)={,,ε}FOLLOW(S)={),,,#}FOLLOW(T)={)}FOLLOW('T)={)}预测分析表是LL(1)文法P81–2文法:|^||)(|*||b a E P F F F P F T T T F T E E E T E →'→''→→''→+→''→εεε(1)FIRST(E)={(,a,b,^} FIRST(E')={+,ε} FIRST(T)={(,a,b,^} FIRST(T')={(,a,b,^,ε} FIRST(F)={(,a,b,^} FIRST(F')={*,ε} FIRST(P)={(,a,b,^} FOLLOW(E)={#,)} FOLLOW(E')={#,)} FOLLOW(T)={+,),#} FOLLOW(T')={+,),#}FOLLOW(F)={(,a,b,^,+,),#} FOLLOW(F')={(,a,b,^,+,),#} FOLLOW(P)={*,(,a,b,^,+,),#} (2)考虑下列产生式:'→+'→'→'→E E T T F F P E a b ||*|()|^||εεεFIRST(+E)∩FIRST(ε)={+}∩{ε}=φ FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ FIRST(*F')∩FIRST(ε)={*}∩{ε}=φFIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ 所以,该文法式LL(1)文法.(4)procedure E;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin T; E' endelse errorendprocedure E';beginif sym='+'then begin advance; E endelse if sym<>')' and sym<>'#' then error endprocedure T;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin F; T' endelse errorendprocedure T';beginif sym='(' or sym='a' or sym='b' or sym='^' then Telse if sym='*' then errorendprocedure F;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin P; F' endelse errorendprocedure F';beginif sym='*'then begin advance; F' endendprocedure P;beginif sym='a' or sym='b' or sym='^'then advanceelse if sym='(' thenbeginadvance; E;if sym=')' then advance else error endelse errorend;P81–3/***************(1) 是,满足三个条件。
编译原理(第3版)课本习题答案
第二章 高级语言及其语法描述6.(1)L (G 6)={0,1,2,......,9}+(2)最左推导:N=>ND=>NDD=>NDDD=>DDDD=>0DDD=>01DD=>012D=>0127 N=>ND=>DD=>3D=>34N=>ND=>NDD=>DDD=>5DD=>56D=>568 最右推导:N=>ND =>N7=>ND7=>N27=>ND27=>N127=>D127=>0127 N=>ND=>N4=>D4=>34N=>ND=>N8=>ND8=>N68=>D68=>5687.【答案】G:S →ABC | AC | CA →1|2|3|4|5|6|7|8|9B →BB|0|1|2|3|4|5|6|7|8|9C →1|3|5|7|98.(1)最左推导:E=>E+T=>T+T=>F+T=>i+T=>i+T*F=>i+F*F=>i+i*F=>i+i*iE=>T=>T*F=>F*F=>i*F=>i*(E)=>i*(E+T)=>i*(T+T)=>i*(F+T)=>i*(i+T)=>i*(i+F)=>i*(i+i) 最右推导:E=>E+T=>E+T*F=>E+T*i=>E+F*i=>E+i*i=>T+i*i=>F+i*i=>i+i*iE=>T=>T*F=>T*(E)=>T*(E+T)=>T*(E+F)=>T*(E+i)=>T*(T+i)=>T*(F+i)=>T*(i+i)=>F*(i+i)=>i*(i+i) (2)9.证明:该文法存在一个句子iiiei 有两棵不同语法分析树,如下所示,因此该文法是二义的。
编译原理第3版完整答案
编译原理第3版完整答案编译原理是计算机科学与技术领域中非常重要的一门课程,它研究的是如何将人类编写的高级程序转化为计算机能够理解和执行的机器语言指令。
编译原理第3版是一本经典的教材,本文将全面介绍该教材中的所有章节,并提供完整的答案。
第1章引论1.1 编译器和解释器的基本概念编译器和解释器是两种将高级语言转化为机器指令的方法。
编译器将整个程序作为输入,分析和翻译整个程序,将结果存储在一个可执行的目标文件中。
解释器则逐行解释源程序,一边解释一边执行。
1.2 编译器结构编译器可以分为前端和后端两个主要组成部分。
前端负责源程序的分析和翻译,包括词法分析、语法分析和语义分析;后端则负责将中间表示转换为目标机器代码。
1.3 语言处理器的实现方式语言处理器的实现方式可以分为两种:解释执行和编译执行。
解释执行是指将源程序逐条解释执行;编译执行则是将源程序先编译为目标代码,再执行。
第2章词法分析2.1 词法单元、词法规则和词法分析器词法分析是编译器中的第一个阶段,它将源程序分割为一个个的词法单元。
词法规则定义了词法单元的语法和形式,词法分析器根据这些规则识别出词法单元。
2.2 正则表达式和有限自动机正则表达式是一种描述字符串模式的语言,它可以用来描述词法规则。
有限自动机是一种用于识别正则表达式的计算模型。
2.3 正则表达式到有限自动机的转换通过将正则表达式转换为等价的有限自动机,可以实现正则表达式的匹配。
第3章语法分析3.1 上下文无关文法和语法分析器语法分析是编译器中的第二个阶段,它根据语法规则将词法单元组成的序列转换为语法分析树。
上下文无关文法是一种用于描述语法规则的形式化语言。
3.2 自顶向下语法分析方法自顶向下语法分析方法从根节点开始构建语法分析树,逐步展开每个非终结符,直到达到叶子节点。
3.3 自底向上语法分析方法自底向上语法分析方法从词法单元开始反向推导出语法分析树的构造过程。
第4章语义分析4.1 属性文法和语义分析器语义分析是编译器中的第三个阶段,它对语法分析树中的节点进行语义处理和类型检查。
编译原理课后习题答案(陈火旺第三版)
第二章P36-6(1)L G ()1是0~9组成的数字串(2)最左推导:N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒0010120127334556568最右推导:N ND N ND N ND N D N ND N D N ND N ND N D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒77272712712701274434886868568P36-7G(S)O N O D N S O AO A AD N→→→→→1357924680|||||||||||P36-8文法:E T E T E T TF T F T F F E i→+-→→|||*|/()| 最左推导:E E T T TF T i T i T F i F F i i F i i i E T T F F F i F i E i E T i T T i F T i i T i i F i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+********()*()*()*()*()*()*()最右推导:E E T E TF E T i E F i E i i T i i F i i i i i E T F T F F F E F E T F E F F E i F T i F F i F i i i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+⇒+**********()*()*()*()*()*()*()*()语法树:/********************************EE FTE +T F F T +iiiEEFTE-T F F T -iiiE EFT+T F FTiii*i+i+ii-i-ii+i*i*****************/P36-9句子iiiei 有两个语法树:S iSeS iSei iiSei iiiei S iS iiSeS iiSei iiiei ⇒⇒⇒⇒⇒⇒⇒⇒P36-10/**************)(|)(|S T TTS S →→***************/P36-11/*************** L1:ε||cC C ab aAb A AC S →→→ L2:bcbBc B aA A AB S ||→→→εL3:εε||aBb B aAb A AB S →→→ L4:AB B A A B A S |01|10|→→→ε ***************/第三章习题参考答案P64–7(1)101101(|)*1 ε ε 1 0 11 确定化:0 1 {X} φ {1,2,3} φ φ φ {1,2,3} {2,3} {2,3,4} {2,3} {2,3} {2,3,4} {2,3,4} {2,3,5} {2,3,4}{2,3,5} {2,3} {2,3,4,Y} {2,3,4,Y}{2,3,5}{2,3,4,}1 00 0 1 1 00 1 0 1 1 1 最小化:X 1 2 3 4 Y5 XY60 12 35 4{,,,,,},{}{,,,,,}{,,}{,,,,,}{,,,}{,,,,},{},{}{,,,,}{,,}{,,,},{},{},{}{,,,}{,012345601234513501234512460123456012341350123456012310100==== 3012312401234560110112233234012345610101}{,,,}{,,}{,},{,}{},{},{}{,}{}{,}{,}{,}{}{,}{}{},{},{,},{},{},{}===== 010 0 1 00 1 0 1 1 1P64–8(1)01)0|1(*(2))5|0(|)5|0()9|8|7|6|5|4|3|2|1|0)(9|8|7|6|5|4|3|2|1(*(3)******)110|0(01|)110|0(10P64–12(a)aa,b a确定化:a b {0} {0,1} {1} {0,1} {0,1} {1} {1}{0}φ5 01 2 4 3 01φφ φ给状态编号:a b 0 1 2 1 1 2 2 0 3 333aaa b b bba最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}012301101223032330123a ba b ====a ab bab (b)b b aa baa bb aa a已经确定化了,进行最小化0 1 2 3 01 2 0 2 3 14 5最小化:{{,}, {,,,}}012345011012423451305234523452410243535353524012435011012424{,}{}{,}{,}{,,,}{,,,}{,,,}{,,,}{,}{,}{,}{,}{,}{,}{,}{,}{{,},{,},{,}}{,}{}{,}{,}{,}a b a b a b a b a b a =============={,}{,}{,}{,}{,}{,}{,}10243535353524 b a bb b aa baP64–14(1) 01 0 (2):(|)*0100 1 ε ε确定化:0 1 {X,1,Y}{1,Y}{2}0 1 2 01YX YX2 1{1,Y} {1,Y} {2} {2} {1,Y} φ φφ φ 给状态编号:0 1 0 1 2 1 1 2 2 1 3 3330 1 01 1 10 最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}0123011012231323301230101====1 1 1 0第四章P81–1(1) 按照T,S 的顺序消除左递归ε|,)(||^)(T S T TS T T a S S G '→''→→' 递归子程序: procedure S; beginif sym='a' or sym='^' then abvance else if sym='('0 2 13 01 3then begin advance;T;if sym=')' then advance; else error; end else error end;procedure T; begin S;'T end;procedure 'T ; beginif sym=',' then begin advance; S;'T end end; 其中:sym:是输入串指针IP 所指的符号 advance:是把IP 调至下一个输入符号 error:是出错诊察程序 (2)FIRST(S)={a,^,(} FIRST(T)={a,^,(} FIRST('T )={,,ε} FOLLOW(S)={),,,#} FOLLOW(T)={)} FOLLOW('T )={)} 预测分析表a^() , # S S a →S →^S T →()TT ST →' T ST →' T ST →''T'→T ε '→'T ST ,是LL(1)文法P81–2文法:|^||)(|*||b a E P F F F P F T T T F T E E E T E →'→''→→''→+→''→εεε(1)FIRST(E)={(,a,b,^} FIRST(E')={+,ε} FIRST(T)={(,a,b,^} FIRST(T')={(,a,b,^,ε} FIRST(F)={(,a,b,^} FIRST(F')={*,ε} FIRST(P)={(,a,b,^} FOLLOW(E)={#,)} FOLLOW(E')={#,)} FOLLOW(T)={+,),#} FOLLOW(T')={+,),#}FOLLOW(F)={(,a,b,^,+,),#} FOLLOW(F')={(,a,b,^,+,),#} FOLLOW(P)={*,(,a,b,^,+,),#} (2)考虑下列产生式:'→+'→'→'→E E T T F F P E a b ||*|()|^||εεεFIRST(+E)∩FIRST(ε)={+}∩{ε}=φ FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ FIRST(*F')∩FIRST(ε)={*}∩{ε}=φFIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ 所以,该文法式LL(1)文法. (3)+ * ( ) a b ^ # EE TE →'E TE →' E TE →' E TE →'E' '→+E E'→E ε'→E εTT F T →'T F T →' T F T →' T F T →'T''→T ε'→T T '→T ε '→T T '→T T '→T T '→T εF F P F →' F P F →' F P F →' F P F →'F' '→F ε '→'F F * '→F ε '→F ε '→F ε '→F ε '→F ε '→F εPP E →() P a → P b → P →^(4)procedure E; beginif sym='(' or sym='a' or sym='b' or sym='^' then begin T; E' end else error endprocedure E'; beginif sym='+'then begin advance; E endelse if sym<>')' and sym<>'#' then error endprocedure T; beginif sym='(' or sym='a' or sym='b' or sym='^' then begin F; T' end else error endprocedure T'; beginif sym='(' or sym='a' or sym='b' or sym='^' then Telse if sym='*' then error endprocedure F; beginif sym='(' or sym='a' or sym='b' or sym='^' then begin P; F' end else error endprocedure F'; beginif sym='*'then begin advance; F' end endprocedure P; beginif sym='a' or sym='b' or sym='^' then advanceelse if sym='(' thenbeginadvance; E;if sym=')' then advance else error endelse errorend;P81–3/***************(1) 是,满足三个条件。
国防第3 版 《编译原理》课后答案
S A
S
a
A S
d
确定化:
S
A
a
b
{0,2,5,7,10}
{1,2,5,7,8,10}
{2,3,5,7,10}
{11}
{6}
{1,2,5,7,8,10}
{2,5,7,8,10}
{2,3,5,7,9,10}
{11}
{6}
{2,3,5,7,10}
{2,4,5,7,8,10}
{2,3,5,7,10}
(((T),^,(a)),a)
((S,^,(a)),a)
((T,^,(a)),a)
((T,S,(a)),a)
((T,(a)),a)
((T,(S)),a)
((T,(T)),a)
((T,S),a)
((T),a)
(S,a)
(T,S)
(T)
S
“移进-归约”过程:
步骤栈输入串动作
0#(((a,a),^,(a)),a)#预备
确定化:
0
1
{X,1,Y}
{1,Y}
{2}
{1,Y}
{1,Y}
{2}
{2}
{1,Y}
φ
φ
φ
φ
给状态编号:
0
1
0
1
2
1
1
2
2
1
3
3
3
3
0
0
1 0
1 1
1
0
最小化:
0
11 1
0
0
第四章
P81–1
(1)按照T,S的顺序消除左递归
递归子程序:
procedureS;
begin
编译原理_第三版_课后答案
1 0 a b (b) b 0 3 2 a a a b 5 4 1 a 已经确定化了,进行最小化 最小化: b 0 2 1 a a b b a a b a b b a
P64–14
(1) 1 0 0 1
0 (2):
Y X 2 0 1 Y 1 X 0 确定化: 0 {X,1,Y} {1,Y} {2} φ 给状态编号: 0 1 2 3 0 1 0 {1,Y} {1,Y} {1,Y} φ 0 1 1 1 3 1 {2} {2} φ φ 1 2 2 3 3
P36-10
/************** ***************/
P36-11
/*************** L1: L2: L3: L4: ***************/
第三章习题参考答案 P64–7
(1)
X Y 0 X 1 2 3 4 Y 5 1 1 1 确定化: 0 {X} φ {1,2,3} {2,3} {2,3,4} {2,3,5} {2,3,4,Y} φ φ {2,3} {2,3} {2,3,5} {2,3} {2,3,5} 0 1 3 2 0 1 {1,2,3} φ {2,3,4} {2,3,4} {2,3,4} {2,3,4,Y} {2,3,4,} 1 0
动
进 进 归
进
归
P134–5
(1)
0. 4. 8. (2) 1
1. 5. 9. 6. 10.
2. 11.
3. 7.
S 9 8 7 S a 11 10 0
A
4 3 2 A d 5 6 确定化: S {0,2,5,7,10} {1,2,5,7,8,10} {2,3,5,7,10} {2,5,7,8,10} {1,2,5,7,8,10} {2,5,7,8,10} {2,4,5,7,8,10} {2,5,7,8,10} A {2,3,5,7,10} {2,3,5,7,9,10} {2,3,5,7,10} {2,3,5,7,9,10} a {11} {11} {11} {11} b {6} {6} {6} {6} S
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P36-6L (G 1)是0~9组成的数字串 编译 原理课后题答案第二章01DD 012D 0127N ND DD 3D34N ND NDDDDD5DD56D568最右推导:N ND N7 ND 7 N27ND 27N127N ND N4 D4 34N ND N8ND 8N68 D68 568N ND NDD NDDD D127 ⑵ 最左推导: DDDD 0DDD0127P36-7G(S) O1|3|5|7|9 2|4|6|8|O 0|N O|AOAD|N P36-8文法: T E T|E F T* F|T/ F (E)|i 最左推导: T T*i*(iT)i*(i F)i *( iT i i*( E)i) T* F i F* F i i *( E T) i*( T i* FT)i i * i i*( F T)最右推导:E E T E T*F E T*i E F*i E i*i T i *i F i*i i i*i*****************/P36-9P36-10/**************S TS|T(S)|()***************/P36-11/***************L1:ACaAb | abcC |L2:F*( E T) F*( E F) F*( E i)T F iE T F*TF * F F*(E)i+i+i i-i-ii+i*i句子iiiei 有两个语法树:•巳ABaA| bBc|bcL3:ABaAb| aBb|L4:A| B0A1|1B0| A***************/第二章习题参考答案P64 — 71(01) 101确定化:1最小化:{0,1,2,3,4,5},{6}{0,1,2,3,4耳0 {1,3待{0,1,2,3,4},{ 0},{6}{0,1,2,34} 0{1,3,5}{0,1,23,{4},{ 5U6}{0,1,23。
{1,3} {0,1,2,3}1{1,2,4}{0,1},{23{4},{ 5UQ{0,1} 0 {1}{0,1,2,3,4,f}1{1,2,4©0,1}1 {1,2}{2,3}0{3 {231{4}{0},{1},{2,3},{ 4},{ 5},{ 6}11P64 —8(1)(1|0)*01(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(0|5)|(0|5) 0 1(0|10 1) |1 0(0 |10 1)P64 - 12a b{0} {0,1} {1}{0,1} {0,1} {1}{1} {0}1 ©a b0 1 21 1 22 033 3 3最小化:{0,1},{ 2,3}{0,1} a{1}{2,3}a{0,3}{0,1},{ 2},{ 3}{0,叽{2}{2,3}b{3}(b)a b八baa a已经确定化了最小化:,进行最小化{0,1}a {1} {0,1}b {2,4}{2,3,4,5}a {1,3,0,5} {2,345}{2,4}a {1,0} {2,4}b {3,5}{3,5}a {3,5} {3,5}b {2,4}{{0,1},{ 2,4},{ 3,5}}{0,1}a {1} {0,1}b {2,4}{2,4}a {1,0} {2,4}b {3,5}{3,5}a {3,5} {3,5}b {2,4}b b a{{0,1}, {2,3,4,5}}bb {2,345}a(0|10)* ◎10 1{X,1,Y} {1,Y} {2}{1,Y} {1,Y} {2}{2} {1,Y}0 10 1 21 1 22 133 3 3最小化:{0,1},{2,3}{O,1}o {1}{2,3}0 {1,3}{0,1},{2},{3}P81 — 1(1)按照T,S的顺序消除左递归(S) aF |仃)ST,ST |递归子程序:{0,1}i {2}{2,3}i {3}GSTTp roeedure S;beginif sym='a' or sym='^'the n abva nee else if sym='(' the n begi nadvance;T;if sym=')' the n adva nee; else error;endelse erroren d;p roeedure T;beginS;Ten d;proeedure T ;beginif sym=','the n begi n advanee;S;Tenden d;其中:sym:是输入串指针IP所指的符号advanee:是把IP调至下一个输入符号error:是出错诊察程序⑵FIRST(S)={a,A,(}FIRST(T)={a,A,(}FIRST(T )={,, }FOLLOW(S)={),,,#}FOLLOW(T)={)}FOLLOW T )={)}预测分析表LL(1)P 81 - 2文法:TE E | FT T | PF *F | (E)|a|bF(1)FIRST(E)={(,a,b,A} FIRST(E')={+, £ }FIRST(T)={(,a,b,A} FIRST(T')={(,a,b,A,£ } FIRST(F)={(,a,b,A} FIRST(F')={*,£ }FIRST( P)={(,a,b,A} FOLLOW(E)={#,)} FOLLOW(E')={#,)} FOLLOW(T)={+,),#} FOLLOW(T')={+,),#} FOLLOW(F)={(,a,b,A,+,),#} FOLLOW(F')={(,a,b,A,+,),#} FOLLOW( P)={*,(,a,b,A,+,),#} ⑵考虑下列产生式:E| T| *F | (E)F|a|bFIRST(+E) n FIRST( £ )={+} n { £ }= $ FIRST(+E) n FOLLOW(E')={+} n {#,)}=$FIRST(T) n FIRST( £ )={(,a,b,^} n { £ }= $ FIRST(T) n FOLLOW(T')={(,a,b,A} n {+,),#}= $n FIRST( £ )={*} n { £ }= $ n FOLLOW(F')={*} n {(,a,b,A,+,),#}= $n FIRST(a) n FIRST(b) n FIRST(^)= $所以,该文法式LL(1)文法.⑷p rocedure E; beginif sym='(' or sym='a' or sym='b' or sym='^' the n beg in T; E' end else errorendp rocedure E'; beginif sym='+'FIRST(*F') FIRST(*F') FIRST((E))the n beg in adva nee; E endelse if sym<>')' and sym<>'#' the n error endp rocedure T;beginif sym='(' or sym='a' or sym='b' or sym='^' the n beg in F; T' end else error end p rocedure T';beginif sym='(' or sym='a' or sym='b' or sym='^' the n Telse if sym='*' the n errorendp rocedure F;beginif sym='(' or sym='a' or sym='b' or sym='^' the n beg in P; F' end else error end p rocedure F';beginif sym='*'the n beg in adva nee; F' end end p rocedure P;beginif sym='a' or sym='b' or sym='^' the n adva neeelse if sym='(' the nbeginadvanee; E;if sym=')' the n adva neeelse errorend else errorend;P 81 - 3/*************** 是,满足三个条件。
不是,对于A 不满足条件3。
不是,A 、B 均不满足条件3。
是,满足三个条件。
***************/S a|A|(T) T T,S|S(1)最左推导:S (T) (T,S)S (T,S)(S,S)(((T,S),S,S)),S) (((a,a),A ,S),S) (((a,a),A ,(a)), a)最右推导:P133- 1E E T E 短语:E+T*F, T*F, 直接短语:T*F 句柄:T*F T* FP133-2文法: 第五章(T,(T)) (T,(T,S)) (T,(T,a)) (T) (T,S) (S,(a,a)) (a,(a,a))(T,S) (T,a) (S,a) ((T),a) ((T,S),a)(T,(S,a)) (T,(a,a))((T,(T)), a) ((T,(S)), a) (((T),A ,(a)),a) ((T,(a)), a) ((T,S,(a)), a) ((T - ,(a)), a) ((S" ,(a)), a) (((T,S),A ,(a)), a) (((T,a),A ,(a)),a) ((( S,a),- ,(a)), a) (((a,a),- ,(a)),a) ⑵((( a,a),A,(a)),a)(1) ⑵ ⑶ ⑷(S,S)(a,S)(a,(T))(a,(T,S)) ((T),S)((T,S),S)((T,S,S),S) (((S,S),S,S),S) (((a,S),S,S),S) (((a,a),A,(T)),S)(((a,a),A ,(S)),S)(a,(S,S)) (a,(a,S))(a,(a,a))((S,S,S),S) (((T),S,S),S)(((a,a),S,S),S)(((a,a),A ,(a)),S)(((Sm),A,(a)),a) (((T, a)A(a)),a) (((LS),A,(a)),a) (((TL,^,(a)),a) ((S,A,(a)),a) ((T,A,(a)),a) ((LS_,(a)),a) a)),a)S) ),a)T) ),a) ((TS_),a)((IL,a)(S,a)(TS)(TLS“移进-归约”过程:步骤栈输入串动作# (((a,a),A,(a)),a)# 预备1 #( ((a,a),A,(a)),a)#进2 #(((a,a),A,(a)),a)#进3 #((( a,a),A, (a)),a)#进4 #(((a ,a),A,(a)),a)#进5 #(((S ,a),A,(a)),a)#归6#(((T ,a),A,(a)),a)# 归7 #(((T,a),A,(a)),a)#进8 #(((T,a八(a)),a)# 进9 #(((T,S ),",(a)),a)#归10 #(((T ),",(a)),a)#归11 #(((T) ,",(a)),a)#进12#((S ,",(a)),a)# 归13 #((T ,",(a)),a)#归14 #((T,A,(a)),a)#进15 #((T,A ,(a)),a)#进16 #((T,S ,(a)),a)#归17 #((T ,(a)),a)# 归18 #((T,(a)),a)#进19 #((T,( a)),a)# 进20 #((T,(a )),a)#进21#((T,(S )),a)# 归22 #((T,(T )),a)#归23 #((T,(T) ),a)# 进24 #((T,S ),a)#归25 #((T ),a)# 归((T,( ((T,( ((T,(26 #((T) ,a)#27#(S,a)#归 28 #(T ,a)#归 29 #(T, a)#进 30 #(T,a )#进 31 #(T,S )#归32#(T)#归33 #(T) #进34 #S#P133-3(1)归FIRSTVT(S)={a,A,(}FIRSTVT(T)={,,a,A,(}LASTVT(S)={a,A,)}LASTVT(T)={,,a,A,)}⑵aA( )Ja> > A>> (<<< = < )>> J<< < >>G 6是算符文法,并且是算符优先文法(3)优先函数aA ( )Jf 4 4 2 4 4 g55523fg A)g(ga(4) 栈 # #( #(a #(t输入字符串 (a,(a,a))a, (a,a))# ,(a,a))# ,(a,a))#动作预备 进 进 归# (t, (a,a) ) # 进 # (t,( a,a )) #进# ( t, ( a ,a )) # 进 # ( t, ( t ,a )) # 归 # ( t, ( t, a )) #进# (t, (t,a ))# 进 # (t, (t,s ))#归# ( t, ( t ))## ( t, ( t ) )# 进 # (t,s )#归# (t )#归# (t )#进 # s #归successP134- 5确定化:SAa b {0,2,5,7,10}{1,2,5,7,8,10}{2,3,5,7,10}{11}{6}{1,2,5,7,8,10 {2,5,7,8,10} {2,3,5,7,9,10{11}{6}(1) 0. S 4. S 8.AS AS 5. S A 9.1.S AS b SA10.6.A2.AS 3. S7.A11.A aA S SAS◎ S©10A S2d◎5} }{2,3,5,7,10} {2,4,5,7,8,10}{2,3,5,7,10} {11} {6}{2,5,7,8,10} {2,5,7,8,10} {2,3,5,7,9,10}{11} {6}{2,3,5,7,9,10}{2,4,5,7,8,10}{2,3,5,7,10} {11} {6}{2,4,5,7,8,10}{2,5,7,8,10} {2,3,5,7,9,10}{11} {6} {11}{6}SAsss3A lsAbAssSa sSSAAsAAbsaDFA构造LR(0)项目集规范族也可以用项目集一样:S,S:ASGO函数来计算得到。