📄 a_5.7.htm
字号:
<html>
<head>
<title>5.7的解答</title>
</head>
<body background="../../images/background.gif" >
<center><font class="title2"><b>练习5.7</b></font></center><br>
<p>解答: </p>
<p> (a)</p>
<table align = center border = 1 width = "80%" cellspacing="0" cellpadding="5">
<tr>
<td width = "35%"><div align = center>产生式</div></td>
<td width = "65%"><div align = center>语义规则</div></td>
</tr>
<tr>
<td >
E -> TR
</td>
<td >
R.i:=T.type; E.type:=R.s;
</td>
</tr>
<tr>
<td >
R -> +TR<sub>1</sub>
</td>
<td>
if(R.i==int) AND (T.type==int)
<p> THEN R<sub>1</sub>.i:=int</p>
<p> ELSE R<sub>1</sub>.i:=real;</p>
<p>R.s:=R<sub>1</sub>.s;
</td>
</tr>
<tr>
<td>
R -> ε
</td>
<td>
R.s:=R.i;
</td>
</tr>
<tr>
<td>
T -> num.num
</td>
<td>
T.type:=real;
</td>
</tr>
<tr>
<td>
T -> num
</td>
<td>
T.type:=int;
</td>
</tr>
</table>
<p> (b)</p>
<table align = center border = 1 width = "80%" cellspacing="0" cellpadding="5">
<tr>
<td width = "30%"><div align = center>产生式</div></td>
<td width = "70%"><div align = center>语义规则</div></td>
</tr>
<tr>
<td >
E -> TR
</td>
<td >
R.itype:=T.type; R.ipf:=T.pf;
<p>E.pf:=R.spf; E.type:=R.stype;</p>
</td>
</tr>
<tr>
<td >
R -> +TR<sub>1</sub>
</td>
<td>
if(R.itype==int) AND (T.type==int)
<p> THEN R<sub>1</sub>.itype:=int</p>
<p> ELSE BEGIN</p>
<p> R<sub>1</sub>.itype:=real;</p>
<p> if(R.itype==real) AND (T.type==int)</p>
<p> THEN T.pf:='inttoreal'||T.pf</p>
<p> ELSE if(R.itype==int)AND(T.type==real)</p>
<p>
THEN R.ipf:='inttoreal'||R.if</p>
<p> END;</p>
<p>R<sub>1</sub>.ipf:='+'||R.ipf||T.pf;</p>
<p>R.stype:=R<sub>1</sub>.stype; R.spf:=R<sub>1</sub>.spf;
</td>
</tr>
<tr>
<td>
R -> ε
</td>
<td>
R.stype:=R.itype; R.spf:=R.ipf;
</td>
</tr>
<tr>
<td>
T -> num
</td>
<td>
T.type:=int; T.pf:=int.lexval;
</td>
</tr>
<tr>
<td>
T -> num.num
</td>
<td>
T.type:=real; T.pf:=real.lexval;
</td>
</tr>
</table>
<p>
注: R.ipf是R的继承属性,是它的前缀表示。</p>
<p>
R.spf是R的综合属性,是它的前缀表示。</p>
<p> </p>
</body>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -