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

📄 5.5.1_1b.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 HTM
字号:
<html>

<head>
<title>编译原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link type="text/css" rel="stylesheet" href="../css/specification.css">
</head>

<BODY>

<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.5.1_1.htm'" </td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.5.1_2.htm'"></img></td>
</tr>
</table>
<br><br>

<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p><b>例5.15 </b>如果把表5.3中建立语法树的语法制导定义转化成翻译模式,那么关于E的产生式和语义动作就变为:<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E→E<span class="down"><sub>1</sub></span>+T  
{B.nptr:=mknode('+',E<span class="down"><sub>1</sub></span>.nptr,T.nptr)}<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E→E<span class="down"><sub>1</sub></span>-T&nbsp;  
{E.ntpr:=mknode('-',E<span class="down"><sub>1</sub></span>.nptr,T.nptr)}<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E→T &nbsp;&nbsp;&nbsp; {E.ntpr:=T.nptr} 
</p>
</td>
</tr>
</table>

<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>当从翻译模式中消除左递归时,非终结符号E对应于翻译模式(5.2)中的A,前面两个产生式中的+T和-T对应为Y;第三个产生式中的T对应于X。由表5.3的全部内容经过转化的翻译模式由图5.17表示。有关T的产生式和语义动作与表5.3中原有定义相似。
</p>
</td>
</tr>
</table>


<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E→T&nbsp; {R.i:=T.nptr}<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R&nbsp;{E.nptr:=R.s}<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R→+<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;{R.i:=mknode('+',R.i,R.nptr)}<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R<span class="down"><sub>1</sub></span>&nbsp;{R.s:=R<span class="down"><sub>1</sub></span>.s}<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R→-<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;&nbsp;{R<span class="down"><sub>1</sub></span>.i:=mknode('-',R.i,T.nptr)}<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R<span class="down"><sub>l</sub></span>  
&nbsp;{R.s:=R<sub>1</sub>.s}<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R→ε&nbsp;{R.s:=R.i}<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T→(<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)  
&nbsp;&nbsp;{T.nptr:=E.nptr}<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T→<b>id&nbsp;</b> {T.nptr:=mkleaf(<b>id</b>,<b>id</b>.entry)}<br> 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T→<b>num</b> {T.nptr:=mkleaf(<b>num</b>,<b>num</b>.val)}<br> 
&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp; <font face="楷体_GB2312">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
&nbsp;图5.17&nbsp;&nbsp; 构造语法树的翻译模式</font><br>
&nbsp;&nbsp;&nbsp;
</td>
</tr>
</table>



<br>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.5.1_1.htm'" </td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.5.1_2.htm'"></img></td>
</tr>
</table>

</BODY>

<html><script language="JavaScript">

⌨️ 快捷键说明

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