📄 6.1.5.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='6.1.4.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.1.6.htm'"></img></td>
</tr>
</table>
<br><br>
<font class="title2"><b>6.1.5 名字的绑定</b></font>
<table><tr><td>    </td>
<td class="content">
<p>
在程序设计语言中,名字的绑定(Bindings of Names),是指把数据名字转换为数据目标的过程。“数据目标”对应于可以存储值的存储地址。
</td></tr></table>
<table><tr><td>    </td>
<td class="content">
<p>
即使在一个程序中每一个名字只被说明一次,同一个名字在运行时刻仍可能代表不同的数据目标。下面我们引进两个函数,environment和state。environment代表一个把名字映射到一个存储位置的函数,并且state代表一个把存储位置映射到那里所存放的值的函数,如图6.5所示。可以说,函数environment把一个名字映射为一个l-value(左-值),而函数state把一个l-value(左-值)映射为一个r-value(右-值)。
</td></tr></table>
<p><center><img src="6_5.gif" </center width="567" height="98"></p>
<table><tr><td>    </td>
<td class="content">
<p>
环境(environment)和状态(state)是不同的;一个赋值语句改变状态但不改变环境。例如,假设存储地址是100,对应于变量Pi,存放值0。在赋值语句Pi:=3.14被执行后,对应于变量的存储地址未变,但是存放的值变为3.14。
</td></tr></table>
<table><tr><td>    </td>
<td class="content">
<p>
当一个环境把一个存储位置s与一个名字x联系起来时,我们称x受限于s,这个联系本身称为x的一个<B>绑定</B>,或一个名字x到内存空间的映射。如果x不属于基本类型,那么将分配给x的可能是内存字的一个集合。
</td></tr></table>
<table><tr><td>    </td>
<td class="content">
<p>
如果说过程的定义是静态的概念,那么过程的活动是过程定义的动态副本;类似,一个名字的说明是静态的概念,而名字的联编是名字的说明的动态副本;同样,一个说明的作用域是静态的概念,而一个联编的生存期则是其动态的副本。正如我们所看到的,一个递归过程在同一时刻可以有几个活动存活。在Pascal中,一个过程的局部名字在过程的每次活动中可能放入不同的存储位置。我们将在6.3节中局部变量名到内存空间的映射技术。
</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='6.1.4.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.1.6.htm'"></img></td>
</tr>
</table>
</BODY>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -