📄 6.3.0c.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.3.0b.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.3.2.htm'"></img></td>
</tr>
</table>
<br><br>
<table>
<tr>
<td>    </td>
<td class="content">
<table><tr><td>    </td>
<td class="content">
<p>
<b>例6.4</b> 图6.8中的Fortran程序依赖于通过过程活动保留下来的局部名字的值。Fortran 77中的一个SAVE语句指明:局部名字的值在一个活动的开始和上次活动结束时必须是相同的。这些局部名字的初始值可由一个DATA语句来说明。
</td></tr></table>
<table><tr><td>    </td>
<td class="content">
<p>
过程PRCUDE中第(18)行上的语句每次将正文的一行读入到缓冲区BUFFER中。这个过程的每次活动都传递相继的字符。主程序CNSUME也有一个缓冲区BUF,它用于收集字符直到出现一个空格为止。例如,对于输入
<BR> hello world
<BR>由过程PRDUCE的活动所返回的各个字符在图6.10中给出;程序的输出为
<BR> hello
<BR>用于存放PRDUCE读入的正文行的缓冲区BUFFER必须在两次活动之间保留着它的值。第(15)行的SAVE语句确保当控制再回到PRDUCE时,局部名字BUFFER和NEXT的值与上次控制离开PRDUCE时是一样的。第一次控制到达PRDUCE时,局部名字NEXT的值是从第(16)行的DATA语句中得到的。这样,NEXT被初始化为8l。
</td></tr></table>
<br>
<center><img src="images/6_10.gif" ></center>
<p align=center>图6.10 由过程PRDUCE的活动所返回的各个字符</p>
<br>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.3.0b.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.3.2.htm'"></img></td>
</tr>
</table>
</BODY>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -