📄 5.1.0b.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='5.1.0.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.1.2.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>    </td>
<td class="content">
<p>
<b>例5.1</b> 表5.1中的语法制导定义是用于台式计算器程序的。这个定义中把一个称为val的整数值的综合属性与每一个非终结符号E,T和F联系起来。对于每一个E,T和F的产生式,语义规则通过产生式右边非终结符号的val值来计算出产生式左边非终结符号的val值。
</td></tr></table>
<table><tr><td>    </td>
<td class="content">
<p>
符号digit有一个综合属性lexval,它的值可由词法分析器提供。与产生式L→ E n对应的语义规则仅仅是打印出由E产生的算术表达式的值的一个过程;我们可以认为这个规则定义非终结符号L的一个虚属性。
</td></tr></table>
<table><tr><td>    </td>
<td class="content">
<p>
在语法制导定义中,我们假设终结符号只有综合属性,因为这样的定义没有为终结符号提供语义规则。正如我们在第三章中讨论的那样,终结符号的属性值通常由词法分析器提供。我们还假设开始符号没有继承属性,除非另外加以说明。
</td></tr></table>
<p align=center>表5.1 一个简单台式计算器的语法制导定义</p>
<table align = center border = 1 width = "60%" cellspacing="0" cellpadding="5">
<tr>
<td width = "35%"><div align = center>产生式</div></td>
<td width = "65%"><div align = center>语义规则</div></td>
</tr>
<tr>
<td width = "35%">
<br>
<p>L -> En</p>
<p>L -> E<sub>1</sub>+T</p>
<p>E -> T</p>
<p>T -> T<sub>1</sub>*F</p>
<p>T -> F</p>
<p>F -> (E)</p>
<p>F -> digit</p>
<p></p>
</td>
<td width = "65%">
<br>
<p>print(E.val)</p>
<p>E.val := E<sub>1</sub>.val+T.val</p>
<p>E.val := T.val</p>
<p>T.val := T<sub>1</sub>.val*F.val</p>
<p>T.val := F.val</p>
<p>F.val := E.val</p>
<p>F.val := digit.lexval</p>
<p></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='5.1.0.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.1.2.htm'"></img></td>
</tr>
</table>
</BODY>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -