📄 arti_10695.htm
字号:
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> P1 p2</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt">说明:e’ p1 BZ e’为0跳转到p1 p2 BR 无条件跳转到p2。</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt">3.请将-(a+b)* (c+d)-(a+b+c)分别表示成三元式、间接三元式和四元式序列。</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt">解答:</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> 四元式序列为:</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (1)(+,a,b,T1)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (2)(@,T1,-,T2)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (3)(+,c,d,T3)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (4)(*,T2,T3,T4)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (5)(+,a,b,T5)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (6)(+,T5,c,T6)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (7)(-,T4,T6,T7)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> 三元式序列为:</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (1)(+,a,b)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (2)(@,(1),-)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (3)(+,c,d)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (4)(*,(2),(3))</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (5)(+,a,b)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (6)(+,(5),c)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (7)(-,(4),(6))</P>
<P class=MsoNormal style="TEXT-INDENT: 5.25pt; LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt; mso-char-indent-count: .5">间接三元式为:</P>
<P class=MsoNormal style="TEXT-INDENT: 5.25pt; LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt; mso-char-indent-count: .5"> 三元式表为: 间接码表:</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (1)(+,a,b) (1)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (2)(@,(1),-) (2)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (3)(+,c,d) (3)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (4)(*,(2),(3)) (4)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> (5)(+,(1),c) (1)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 256.0pt"> (6)(-,(4),(5)) (5)</P>
<P class=MsoNormal style="TEXT-INDENT: 5.25pt; LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt; mso-char-indent-count: .5"> (6)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt">4.按7.3节所说的方法,写出下面赋值语句的自下而上语法制导翻译过程,给出所产生的三地址代码。</P>
<P class=MsoNormal style="TEXT-INDENT: 157.5pt; LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt; mso-char-indent-count: 15.0">A:=B*(-C+D)</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt">解答:语法树为 </P>
<P class=MsoNormal style="TEXT-INDENT: 189pt; mso-char-indent-count: 18.0"><v:group id=_x0000_s1026 style="MARGIN-TOP: 19.5pt; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 152pt; WIDTH: 88pt; POSITION: absolute; HEIGHT: 27pt; TEXT-ALIGN: left" coordsize="1760,540" coordorigin="4174,4070"><v:line id=_x0000_s1027 style="POSITION: absolute" to="4975,4610" from="4974,4070"></v:line><v:line id=_x0000_s1028 style="POSITION: absolute; flip: x" to="4814,4485" from="4174,4070"></v:line><v:line id=_x0000_s1029 style="POSITION: absolute" to="5934,4485" from="5135,4070"></v:line></v:group>S </P>
<P class=MsoNormal> </P>
<P class=MsoNormal><v:group id=_x0000_s1032 style="MARGIN-TOP: 18.5pt; Z-INDEX: 4; LEFT: 0px; MARGIN-LEFT: 199pt; WIDTH: 88pt; POSITION: absolute; HEIGHT: 27pt; TEXT-ALIGN: left" coordsize="1760,540" coordorigin="4174,4070"><v:line id=_x0000_s1033 style="POSITION: absolute" to="4975,4610" from="4974,4070"></v:line><v:line id=_x0000_s1034 style="POSITION: absolute; flip: x" to="4814,4485" from="4174,4070"></v:line><v:line id=_x0000_s1035 style="POSITION: absolute" to="5934,4485" from="5135,4070"></v:line></v:group> id <B style="mso-bidi-font-weight: normal">:=</B> E </P>
<P class=MsoNormal><p> </p></P>
<P class=MsoNormal><v:group id=_x0000_s1036 style="MARGIN-TOP: 18.5pt; Z-INDEX: 5; LEFT: 0px; MARGIN-LEFT: 251.75pt; WIDTH: 88pt; POSITION: absolute; HEIGHT: 27pt; TEXT-ALIGN: left" coordsize="1760,540" coordorigin="4174,4070"><v:line id=_x0000_s1037 style="POSITION: absolute" to="4975,4610" from="4974,4070"></v:line><v:line id=_x0000_s1038 style="POSITION: absolute; flip: x" to="4814,4485" from="4174,4070"></v:line><v:line id=_x0000_s1039 style="POSITION: absolute" to="5934,4485" from="5135,4070"></v:line></v:group><v:line id=_x0000_s1031 style="Z-INDEX: 3; LEFT: 0px; POSITION: absolute; TEXT-ALIGN: left" to="198.25pt,44.75pt" from="197.75pt,16.25pt"></v:line> E * E</P>
<P class=MsoNormal> </P>
<P class=MsoNormal><v:line id=_x0000_s1043 style="Z-INDEX: 7; LEFT: 0px; POSITION: absolute; TEXT-ALIGN: left" to="341pt,44pt" from="340.5pt,15.5pt"></v:line><v:group id=_x0000_s1040 style="MARGIN-TOP: 14.75pt; Z-INDEX: 6; LEFT: 0px; MARGIN-LEFT: 237.75pt; WIDTH: 28.5pt; POSITION: absolute; HEIGHT: 30pt; TEXT-ALIGN: left" coordsize="570,600" coordorigin="3054,6075"><v:line id=_x0000_s1041 style="POSITION: absolute; flip: x" to="3254,6675" from="3054,6090"></v:line><v:line id=_x0000_s1042 style="POSITION: absolute" to="3624,6615" from="3305,6075"></v:line></v:group> id E + E</P>
<P class=MsoNormal><p> </p></P>
<P class=MsoNormal><v:line id=_x0000_s1030 style="Z-INDEX: 2; LEFT: 0px; POSITION: absolute; TEXT-ALIGN: left" to="270.25pt,44pt" from="269.75pt,15.5pt"></v:line> - E id</P>
<P class=MsoNormal><p> </p></P>
<P class=MsoNormal> id</P>
<P class=MsoNormal>分析过程:</P>
<P class=MsoNormal>步骤 符号栈 输入符号串 动作 语义值 产生式 三地址代码</P>
<P class=MsoNormal>1 # A:=B*(-C+D)# 预备</P>
<P class=MsoNormal>2 #id :=B*(-C+D)# 移进 A </P>
<P class=MsoNormal>3 #id:= B*(-C+D)# 移进 A_</P>
<P class=MsoNormal>4 #id:=id *(-C+D)# 移进 A_B</P>
<P class=MsoNormal>5 #id:=E *(-C+D)# 规约 A_B E→id</P>
<P class=MsoNormal>6 #id:=E* (-C+D)# 移进 A_B_</P>
<P class=MsoNormal>7 #id:=E*( -C+D)# 移进 A_B_ _</P>
<P class=MsoNormal>8 #id:=E*(- C+D)# 移进 A_B_ _ _</P>
<P class=MsoNormal>9 #id:=E*(-id +D)# 移进 A_B_ _ _C</P>
<P class=MsoNormal>10 # id:=E*(-E +D)# 规约 A_B_ _ _C E→id</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt">11 # id:=E*(E +D)# 规约 A_B_ _T1 E→-E T1:=-C</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt">12 # id:=E*(E+ D)# 移进 A_B_ _T1_ </P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt">13 # id:=E*(E+id )# 移进 A_B_ _T1_ D </P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt">14 # id:=E*(E+E )# 规约 A_B_ _T1_ D E→id</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt">15 # id:=E*(E )# 规约 A_B_ _T2 E→E+E T2:=T1+D</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt">16 # id:=E*(E) # 移进 A_B_ _T2_ </P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt">17 # id:=E*E # 规约 A_B_T2 </P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt">18 #id:=E # 规约 A_T3 E→E*E T3:=B*T2</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt">19 #S # 规约 T3 S→id:=E A:=T3</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt"><p> </p></P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt">6.按7.4.2节的办法,写出布尔式A or (B and not (C or D))的四元式序列。</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt">解答:</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt"> 100(jnz,A,_,0)E。T</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt"> 101(j,_,_,102)</P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt; LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt; mso-char-indent-count: 3.0">102(jnz,B,_,104)</P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt; LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt; mso-char-indent-count: 3.0">103(j,_,_,0)E。F</P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt; LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt; mso-char-indent-count: 3.0">104(jnz,C,_,103)E。F</P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt; LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt; mso-char-indent-count: 3.0">105(j,_,_,106)</P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt; LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt; mso-char-indent-count: 3.0">106(jnz,D,_,104)E。F</P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt; LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt 200.0pt 240.0pt 296.0pt 360.0pt; mso-char-indent-count: 3.0">107(j,_,_,100)E。T</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> 真出口为: E.truelist={100,107} 假出口为: E.falselist={103,104,106}</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"><p> </p></P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt">7.用7.5.1节的办法,把下面的语句翻译成四元式序列:</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> While A< C and B <D do</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> if A=1 then C:=C+1 else</P>
<P class=MsoNormal style="LINE-HEIGHT: 16pt; mso-line-height-rule: exactly; tab-stops: 49.5pt"> while A≤D do A:=A+2;</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -