📄 3.2.2.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.2.1c.htm'" src="../images/previous.gif"></td>
<td><IMG onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='3.2.2b.htm'" src="../images/next.gif"></td>
</tr>
</table>
<br><br>
<table border=0>
<tr>
<td width=5></td>
<td colspan=2>
<br>
<b>3.2.2 构造识别单词的DFA</b><br><br>
</td>
</tr>
<tr>
<td width=10></td>
<td width=30></td>
<td>
<p>
<font class="emphasize">DFA是识别单词的数学模型</font>,对于给定的一个程序语言的单词,我们一般来说,在研究单词的结构后,能直接构造一个DFA
M去识别它。</p>
<p>例如,Pascal的标识符,是以字母开始的字母数字串,识别它的DFA M由图3.3(a)所示。其中0为初态,2为接受状态。这个DFA
M识别标识符的过程是:从初态0开始,在0状态下,若当前输入字符是一个字母,则读入它,转入状态1。在状态1下,若下一个字符是一个字母或数字,读入它,并重新转入状态1。重复这个过程,直到,状态1发现输入字符不再是字母或数字(这个字符已被读进,它实际上是标识符结束符),就进入状态2。状态2是接受状态,它意味着到此已识别出一个标识符,识别过程宣告终结。接受状态上打个星号*,意味着多读进了一个不属于标识符部分的字符,它是标识符的结束符,也是下一个单词的开始符号或是个分隔符,应退返给输入串。如果在状态0下输入字符不是“字母”,则意味着当前输入不是一个标识符。</p>
<p>类似地,识别整数和无符号数的DFA由图3.3(b)和(c)所示。</p>
<center> <img src="img/3.3.gif"></center>
</td>
</tr>
</table>
<table align=right width=300>
<tr>
<td><IMG onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='3.2.1c.htm'" src="../images/previous.gif"></td>
<td><IMG onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='3.2.2b.htm'" src="../images/next.gif"></td>
</tr>
</table>
</BODY>
</html>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -