⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a_5.3.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 HTM
字号:
<html>
<head>
<title>5.3的解答</title>
</head>
<body background="../../images/background.gif">
<center><font class="title2"><b>练习5.3</b></font></center><br>
<p>解答:</p>
<p>设置下面的函数和属性:</p>

<p>expr<sub>1</sub>||expr2:把表达式expr2拼写在表达式expr1后面。</p>

<p>deletp(expr):去掉表达式expr左端的‘(’和右端的‘)’。</p>

<p>E.expr,T.expr,F.expr:属性变量,分别表示E,T,F的表达式。</p>
<p>E.add,T.add,F.add,属性变量,若为true,则表示其表达式中外层有‘+’号,否则无‘+’号。</p>
<p>E.pmark,T.pmark,F.pmark,属性变量,若为true,表示E,T,F的表达式中左端为‘(’,右端是‘)’。</p>
<p>语法制导定义如下:</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(T.pmark==true)
<p>&nbsp;&nbsp; THEN E.expr=E<sub>1</sub>.expr||'+'||deletep(T.expr)</p>  
<p>&nbsp;&nbsp; ELSE E.expr:=E<sub>1</sub>.expr||'+'||T.expr;</p>  
<p>E.add:=true;</p>
<p>E.pmark:=false;</p>
 
	
</td>
</tr>


<tr>
<td align=center >
	
E -&gt; T
	
</td>
<td>
	
if(T.pmark==true)
<p>&nbsp;&nbsp; THEN E.expr:=deletep(T.expr)</p>  
<p>&nbsp;&nbsp; ELSE E.expr:=T.expr;</p>  
<p>E.add:=T.add;</p>
<p>E.pmark:=false;
	
</td>
</tr>


<tr>
<td align=center>
	
T -&gt; T<sub>1</sub>*F
	
</td>
<td>
	
T.expr:=T<sub>1</sub>.expr||'*'||F.expr;
<p>T.add:=false;</p>
<p>T.pmark:=false;</p>
	
</td>
</tr>


<tr>
<td align=center>
	
T -&gt; F
	
</td>
<td>
	
T.expr:=F.expr;
<p>T.add:=F.add;</p>
<p>T.pmark:=F.pmark;
	
</td>
</tr>


<tr>
<td align=center>
	
F -&gt; (E)
	
</td>
<td>
	
if(E.add==false)
<p>&nbsp;&nbsp; THEN BEGIN</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F.expr:=E.expr;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F.add:=false;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F.pmark:=false;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END</p>
<p>&nbsp;&nbsp; ELSE BEGIN</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F.expr:='('||E.expr||')';</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F.add:=true;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F.pmark:=true;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END;
	
</td>
</tr>


<tr>
<td align=center>
	
F -&gt; id
	
</td>
<td >
	
F.expr:=id.lexval;
<p>F.add:=false;</p>
<p>F.pmark:=false;
	
</td>
</tr>




</table>



</body>

<html><script language="JavaScript">

⌨️ 快捷键说明

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