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

📄 5.6.3_1b.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='5.6.3_1.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.6.3_2.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>
用L来做初始化工作。表5.10中的S产生式为S→LB,于是,当B下面的子树被归约时,L保留在栈中。继承属性B.ps=L.s的值10通过与产生式L→ε对应的规则L.s=10进入栈中。 B→B<sub>1</sub> M B<sub>2</sub>中的标记非终结符号M的作用与图5.22中M的作用相同,它确定了值B.ps在栈中的位置正好在B<sub>2</sub>的下面。在产生式B→B<sub>1</sub> sub N B<sub>2</sub>中,非终结符号N的用法和(5.8)中的N的用法相同。N通过复写规则N.i:=B.ps继承的属性值,是B<sub>2</sub>.ps要依赖的, 并且通过规则N.s:=shrink(N.i)综合B<sub>2</sub>.ps的值。结果在归约为B时,B.ps的值在栈中的位置总是在产生式右边符号的下面。  
</p>
</td></tr></table>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>
实现表5.10中的语法制导定义的代码段在表5.11中给出。表5.10中的所有继承属性都由复写规则赋值,所以语法制导定义的实现都是通过跟踪它们在val栈中的位置来获得属性值的。和前面的例子一样,top和ntop分别给出归约前和归约后的栈顶的索引。 
</p>
</td></tr></table>

<br>
<center><img src="b511.gif" width="470" height="309" ></center><br>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>
一般说来,如果需要时则引进标记非终结符号,如同在模式(5.6)和(5.7)中所做的那样,将会使得在LR分析过程中计算L-属性定义成为可能。因为关于每一个标记非终结符号只有一个产生式,所以,加入标记非终结符号时,文法仍然保持是LL(1)文法。任何LL(1)文法也是LR(1)文法,因此,当标记非终结符号加入到LL(1)文法时不会产生分析冲突。但对于LR(l)文法并非如此,这就是说,如果在LR(1)文法中加入标记非终结符号可能会引起分析冲突。 
</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.6.3_1.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.6.3_2.htm'"></img></td>
</tr>
</table>

</BODY>

⌨️ 快捷键说明

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