📄 2.2.2d.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='2.2.2c.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='2.2.2e.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>    </td>
<td class="content">
<p>
一个上下文无关文法如何定义一个语言呢?其中心思想是,从文法的开始符号出发,反复连续使用产生式,对非终结符号施行替换和展开。例如,考虑文法(2.1)(文法G)。我们可以从开始符号E出发,进行一系列的推导,推出种种不同的算术表达式来。例如,根据规则 :<br>
<center> E→E+T </center>
我们可以说:从“E"可直接(一步地)推出“E+T”。如果用“<img src="IMG/equal.gif"></img>”表示“直接推出”,那么这句话就可以表示为:
<center> E <img src="IMG/equal.gif"></img> E+T </center>
若对右端的E使用规则E→T,就有:
<center> E+T <img src="IMG/equal.gif"></img> T+T </center>
即从“E+T”可直接推出“T+T”。把上述两步合并起来,就有:
<center> E <img src="IMG/equal.gif"></img> E+T <img src="IMG/equal.gif"></img> T+T </center>
再对“T+T”中的两个T相继两次使用规则T→F和F→a之后,我们就有:
<center> E <img src="IMG/equal.gif"></img> E+T <img src="IMG/equal.gif"></img> T+T <img src="IMG/equal.gif"></img> F+T <img src="IMG/equal.gif"></img> a+T <img src="IMG/equal.gif"></img> a+F <img src="IMG/equal.gif"></img> a+a </center>
</p>
<p>
我们称这样的一串替换序列是从E到a+a的推导。这个推导提供了一个证明,证明a+a是该文法所定义的表达式。注意,推导每前进一步总是引用一条规则(产生式),而符号“ <img src="IMG/equal.gif"></img> ”仅指推导一步的意思。下面我们将给出直接推导和推导的定义。
</p>
<p>
<img class="dingyi" src="../images/dingyi.gif">
<font class="definition2">定义2.3 </font>令G=(V<sub>T</sub>,V<sub>N</sub>,S,P),若A→γ∈P,且α,β∈(V<sub>T</sub>∪V<sub>N</sub>)<sup>*</sup>,则称<font class="definition2">αAβ直接推出αγβ</font>,表示成:
<center>αAβ <img src="IMG/equal.gif"></img> αγβ</center>
αAβ直接推出αγβ,也可以说αγβ是αAβ的<font class="definition2">直接推导</font>,或说αγβ直接归约到αAβ。
</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='2.2.2c.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='2.2.2e.htm'"></img></td>
</tr>
</table>
</BODY>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -