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

📄 8.6.1_2b.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='8.6.1_2.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='8.6.1_2c.htm'"></img></td>
</tr>
</table>
<br><br>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content" >
<P>我们还假定要考虑的三地址语句包括如下三种型式:</P>
<P>(1)x:= y op z</P>    
<P>(2)x:= op y</P>    
<P>(3)x:=y<BR>我们分别把它们称为(1)型、(2)型和(3)型。至于含有关系运算符的三地址语句如</P>
<P align=left>if i&lt;=20 goto-<br>    
可当作(1)型,其中x无定义。关于其它类型的语句将在本节末尾作进一步的考虑,构造dag的过程是依次对基本块中的每个语句执行下述步骤l至3。假定初始时dag中没有任何结点,即此时node函数对任何参数都返回一个结点并指明它是未定义的。</P>
<P>1.如果node(y)是未定义的,创建一个标记为y的叶结点,并且令node(y)为这个结点。若为(1)型,如果node(z)也未定义,同样建立一个标记为z的叶结点并令node(z)为此结点。</P>
<P>2.若三地址语句为(1)型时,确定是否有一个标记为op,它的左子结点为node(y)且右子结点为node(z)的结点。(这个检查是为了发现公用子表达式)。如果没有,就建立一个这样的结点,无论是那种情况,令n是所找到的或建立的结点。若三地址语句是(2)型时,确定是否有一个标记为op,且仅有唯一子结点node(y)。若没有,则建立一个这样的结点,令n是所找到的或建立的结点。若三地址语句为(3)型,令n就是node(y)。</P>
<P>3.从node(x)的附加标识符表中删除x。在第2步构造的结点n的附加标识符表中增加标识符x,并且置node(x)为结点n。</P>
</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='8.6.1_2.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='8.6.1_2c.htm'"></img></td>
</tr>
</table>

</BODY>

⌨️ 快捷键说明

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