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

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

<font class="title2"><b>5.1 语法制导定义</b></font>

<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
语法制导定义是对上下文无关文法的推广。在这里,每一个文法符号都有一个与之相联系的属性集,其中的属性分成两类,分别叫作这个文法符号的<font class="emphasize">综合属性</font>和<font class="emphasize">继承属性</font>。如果我们把分析树中代表文法符号的结点看成是记录,它有几个域用来存储信息,那么属性就相当于域的名字。
</p>
</td>
</tr>
</table>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
一个属性可以代表我们所选择的任何对象:一个符号串、一个数、一种类型、一个存储位置或其它对象。在分析树中的一个结点上的属性值是由在这个结点上所用产生式相应的语义规则来决定的。一个结点的综合属性值是从其子结点的属性值计算出来的,而继承属性值则是由该结点的兄弟结点和父结点的属性值计算出来的。 
</td></tr></table>





<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
语义规则建立了属性之间的关系,这些关系可以用图来表示,这样的图称为<font class="emphasize">依赖图</font>。从依赖图中,我们可以得到语义规则的计算顺序。语义规则的计算决定了输入符号串在分析树中的结点上的属性值。有时,一个语义规则可能产生副作用,例如,打印出一个值或更新一个全程变量。
</td></tr></table>



<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
每个结点都带有属性值的分析树称为带注释的分析树。计算结点属性值的相互关联的一系列活动称为给分析树加注释或装饰。
</td></tr></table>

<br><br>

<font class="title2"><b>5.1.1 语法制导定义的形式</b></font> 


<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
在一个语法制导定义中,对应于每一个文法产生式A→α都有与之相关联的一套语义规则,规则形式为b:= f(c<sub>1</sub>,c<sub>2</sub>,…,c<sub>k</sub>),在这里,f是一个函数,而且或者 
</p>
</td>
</tr>
</table>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
1.b是A的一个综合属性并且c<sub>1</sub>,c<sub>2</sub>,…,c<sub>k</sub>是产生式右边文法符号的属性,或者
</td></tr></table>





<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
2.b是产生式右边某个文法符号的一个继承属性并且c<sub>1</sub>,c<sub>2</sub>,…,c<sub>k</sub>是A或产生式右边任何文法符号的属性。<br> 
在两种情况下,我们都说属性b依赖于属性c<sub>1</sub>,c<sub>2</sub>,…,c<sub>k</sub>。
</td></tr></table>



<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
语义规则中的函数通常写成表达式。在某些情况下,在语法制导定义中的一个语义规则的唯一目的就是产生某个副作用。这样的语义规则通常写成过程调用或过程段。如在例5.1中所讨论的。它们可以看成是定义有关产生式左边非终结符号的虚综合属性的规则;在这样的语义规则中的虚属性和符号:= 都不表示出来。 
</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='c_5.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.1.0b.htm'"></img></td>
</tr>
</table>

</BODY>

⌨️ 快捷键说明

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