📄 back3.5.1b.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 bgColor=Lavender>
<table align=right width=300>
<tr>
<td><IMG onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='3.5.1a.htm'" src="../images/previous.gif"></IMG></td>
<td><IMG onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='3.6.1a.htm'" src="../images/previous.gif"></IMG></td>
</tr>
</table>
<br><br>
<table border=0>
<tr>
<td width=10></td>
<td>
<p>下面我们举一个例子,说明如何从一个DFA M出发,构造一个等价的右线性正规文法G,再从G出发构造一个与之等价的NFA M',最后从M'出发构造一个等价的左线性正规文法G'的全过程。</p>
<p><b> 例3.6 </b>设DFA M=({0,1},{A,B,C,D},A,{B},δ),其中
<br>
δ(A,0)=B,δ(A,1)=D,δ(B,0)=D,δ(B,1)=C <br>
δ(C,0)=B,δ(C,1)=D,δ(D,0)=δ(D,1)=D <br>
M的状态转换如图3.14(a)所示。显然L(M)=0(10)<span class="up">*</span>
据定理3.4构造的右线性正规文法 <br>
G=({0,1},{A,B,C,D},A,Ξ)</p>
<p align="center"> <img src="IMG/3.14.gif" width="534" height="233"></p>
<p>其中Ξ为下列产生式集合: <br>
A→0|0B|1D B→0D|1C <br>
C→0|0B|1D D→0D|1D <br>
显然L(G)=L(M)=0(10)<span class="up">*</span>。 <br>
据定理3.3,可由右线性正规文法G出发构造的NFA M'为 <br>
M'=({0,1},{A,B,C,D,f},A,{f},δ') <br>
其中 <br>
<br>
δ'(A,0)={f,B},δ'={D} <br>
δ'(B,0)=(D),δ'(B,1)={C} <br>
δ'(C,0)={f,B}δ'(C,1)={D} <br>
δ'(D,0)=δ'(D,1)={D} <br>
M'的状态转换如图3.14(b)所示。显然有L(M')=L(G)。 <br>
据NFA M'的状态转换图3.17(b),构造左线性正规文法 <br>
G'=({0,1},{B,C,D,S},S,Ξ) <br>
其中S=f,Ξ为下面产生式的集合: <br>
S→0|C0 C→B1 <br>
B→0|C0 D→1|C1|D0|D1|B0 <br>
这里从M'构造左线性正规文法G'的产生式集合Ξ的办法是:若对任何A,A<span class="down">1</span>∈{B,C,D,S}及a∈{0,1}有δ(A<span class="down">1</span>,a)=A<span class="down">2</span>,则令
<br>
A<span class="down">2</span>→A<span class="down">1</span>a,若有δ(A<span class="down">1</span>,a)=A(A是M'的初态),则令A<span class="down">1</span>→a显然有
<br>
L(G')=L(M')=L(G)=L(M)=0(10)<span class="up">*</span><br>
</p>
</td>
</table>
<table align=right width=300>
<tr>
<td><IMG onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='3.5.1a.htm'" src="../images/previous.gif"></IMG></td>
<td><IMG onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='3.6.1a.htm'" src="../images/previous.gif"></IMG></td>
</tr>
</table>
</BODY>
</html>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -