官术网_书友最值得收藏!

2.3 狀態(tài)轉(zhuǎn)換圖

2.3.1 狀態(tài)轉(zhuǎn)換圖總體介紹

詞法分析的過(guò)程是根據(jù)C語(yǔ)言的詞法規(guī)則進(jìn)行的,為了指導(dǎo)詞法分析器的程序設(shè)計(jì),需要形式化地表達(dá)C語(yǔ)言的詞法規(guī)則。下面我們用狀態(tài)轉(zhuǎn)換圖的形式來(lái)展現(xiàn)這個(gè)案例程序能用到的詞法規(guī)則,如圖2-19所示。

圖2-19 前面介紹內(nèi)容所涉及的狀態(tài)轉(zhuǎn)換圖

圖2-19是一個(gè)完整的轉(zhuǎn)換圖,我們來(lái)看詞法分析的每個(gè)步驟在轉(zhuǎn)換圖上對(duì)應(yīng)的狀態(tài)。

首先是起始狀態(tài),即我們前面所介紹的計(jì)算機(jī)準(zhǔn)備識(shí)別下一個(gè)符號(hào)的狀態(tài),如圖2-20所示。

圖2-20 狀態(tài)轉(zhuǎn)換圖處于起始狀態(tài)

我們以標(biāo)識(shí)符符號(hào)的識(shí)別為例,只要識(shí)別到字母、數(shù)字或下劃線,就進(jìn)入標(biāo)識(shí)符識(shí)別狀態(tài),情景如圖2-21所示。

圖2-21 識(shí)別到字母或下劃線的狀態(tài)

之后,只要遇到字母、數(shù)字或下劃線,就仍然在這個(gè)狀態(tài)中進(jìn)行識(shí)別,情景如圖2-22所示。

圖2-22 不斷識(shí)別到字母、數(shù)字或下劃線的狀態(tài)

直到條件不再符合,就進(jìn)入終態(tài),表示此標(biāo)識(shí)符已經(jīng)識(shí)別完畢,情景如圖2-23所示。

圖2-23 進(jìn)入終態(tài)并確定符號(hào)為標(biāo)識(shí)符

然后從起始狀態(tài)開(kāi)始準(zhǔn)備識(shí)別下一個(gè)符號(hào),情景如圖2-24所示。

圖2-24 重新回到起始狀態(tài)

下一個(gè)字符可能是數(shù)字、分隔符或運(yùn)算符。如果是數(shù)字,情景如圖2-25所示。

圖2-25 識(shí)別到數(shù)字的狀態(tài)

如果是分隔符,情景如圖2-26所示。

圖2-26 識(shí)別到“,”的狀態(tài)

如果是運(yùn)算符,情景如圖2-27所示。

圖2-27 識(shí)別到“=”的狀態(tài)

主站蜘蛛池模板: 金堂县| 通化市| 南川市| 荣成市| 武安市| 五大连池市| 中宁县| 宁阳县| 禄丰县| 青铜峡市| 石河子市| 孟连| 香河县| 修水县| 隆昌县| 靖边县| 高淳县| 葫芦岛市| 平阴县| 莱芜市| 肥乡县| 邵阳县| 滁州市| 喀喇沁旗| 屏东市| 桐梓县| 湘潭县| 泰宁县| 北辰区| 德昌县| 金华市| 建瓯市| 新兴县| 辛集市| 定襄县| 徐闻县| 潞城市| 卓尼县| 大城县| 吴堡县| 苏尼特左旗|