a_5.4.htm

来自「建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术」· HTM 代码 · 共 167 行

HTM
167
字号
<html>
<head>
<title>5.4的解答</title>
</head>
<body background="../../images/background.gif" >
<center><font class="title2"><b>练习5.4</b></font></center><br>
<p>解答: (a)语法制导定义如下:</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 align=center>
	
E -&gt; E<sub>1</sub>+T     
	
</td>
<td >
	
if(E<sub>1</sub>.type==int) AND (T.type==int)   
<p>&nbsp;&nbsp; THEN E.type:=int</p>   
<p>&nbsp;&nbsp; ELSE E.type:=real;   
 
	
</td>
</tr>


<tr>
<td >
	
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E -&gt; T  
	
</td>
<td>
	
E.type:=T.type;
	
</td>
</tr>


<tr>
<td>
	
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T -&gt; num  
	
</td>
<td>
	
T.type:=int;
	
</td>
</tr>


<tr>
<td>
	
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T -&gt; num.num  
	
</td>
<td>
	
T.type:=real;
	
</td>
</tr>






</table>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (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 align=center>
	
E -&gt; E<sub>1</sub>+T     
	
</td>
<td >
	
if(E<sub>1</sub>.type==int) AND (T.type==int)   
<p>&nbsp;&nbsp; THEN E.type:=int</p>   
<p>&nbsp;&nbsp; ELSE BEGIN  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E.type:=real;  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(E<sub>1</sub>.type==int) AND (T.type==real)  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN E<sub>1</sub>.pf:='inttoreal'||E<sub>1</sub>.pf  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE if(E<sub>1</sub>.type==real)AND(T.type==int)  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
THEN T.pf:='inttoreal'||T.pf  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END;  
<p>E.pf:='+'||E1.pf||T.pf;  
 
	
</td>
</tr>


<tr>
<td >
	
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E -&gt; T  
	
</td>
<td>
	
E.type:=T.type; E.pf:=T.pf;
	
</td>
</tr>


<tr>
<td>
	
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T -&gt; num  
	
</td>
<td>
	
T.type:=int;&nbsp;&nbsp;&nbsp; T.pf:=int.lexval;
	
</td>
</tr>


<tr>
<td>
	
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T -&gt; num.num  
	
</td>
<td>
	
T.type:=real;&nbsp;&nbsp; T.pf:=real.lexval;
	
</td>
</tr>






</table>



</body>

<html><script language="JavaScript">

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?