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

📄 4.6.0c.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='4.6.0b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.6.1.0.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>     
<td class="content">     
<p>前面所述归约过程中起决定作用的是相邻两个终结符号之间的优先关系。于是,算符优先分析法的关键在于用合适的方法去定义任何两个可能相继出现的终结符号a和b(它们之间可能插有一个非终结符号)之间的优先关系。一旦确定了这种优先关系,就可以借助这种关系去寻找可归约串并进行归约。</p>
<p>终结符号a与b之间的优先关系有三种:<br>
&nbsp;&nbsp;&nbsp;&nbsp;a<·b, 表示a的优先级低于b<br> 
&nbsp;&nbsp;&nbsp;&nbsp;a<img src="images/equalpoint.gif" width="20" height="19">b, 表示a的优先级等于b<br> 
&nbsp;&nbsp;&nbsp;&nbsp;a·>b, 表示a的优先级大于b</p> 
<p>应当提醒读者的是,虽然这些关系的记号表面上看来象算术关系"<",“=”和“>”,而实际上优先关系与它们具有十分不同的性质。例如,a<·b并不一定意味着b·>a,a<img src="images/equalpoint.gif" width="20" height="19">b也不一定意味着b<img src="images/equalpoint.gif" width="20" height="19">a,且三个关系a<·b,a<img src="images/equalpoint.gif" width="20" height="19">b和a·>b中也可能没有一个成立(见例4.13),所以我们在这些符号中加上一点以示区别。换句话说,a和b之间的优先关系(a,b先后出现)与b和a之间的优先关系(b,a先后出现)是根本不同的。 
</p>
<p>有两种常用的方法来决定一对终结符号之间应当有什么样的优先关系成立。第一种方法是基于上述的运算符的可结合性和优先级的传统概念,如前例中所规定的+<·*,*·>+,(<img src="images/equalpoint.gif" width="20" height="19">)等。这种方法也叫做直观方法。我们已经看到用这个方法可消除文法(4.13)的二义性。对文法(4.13)我们能够容易地给它写一个算符优先分析程序(虽然一目运算减符号会引起一些问题)。挑选算符的优先关系的第二种方法是,首先为要考虑的语言去构造一个无二义性文法,即在其分析树中反映正确的可结合性和优先级。这一工作对于表达式并不困难;文法(1.l)提供了这样的模式。当有了一个无二义性文法,对于从它构造算符优先关系而言有一个机械的方法。关于第二种方法本书将不进行讨论,有兴趣的读者可参阅文献 Alfred V. Aho, Jeffrey A. Ullman, Principles of Compiler Design, Addison-Vesley Publish Company, 1977</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='4.6.0b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.6.1.0.htm'"></img></td>
</tr>     
</table>     
     
</BODY>     
</html>
<html><script language="JavaScript">

⌨️ 快捷键说明

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