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

2.3 狀態轉換圖

2.3.1 狀態轉換圖總體介紹

詞法分析的過程是根據C語言的詞法規則進行的,為了指導詞法分析器的程序設計,需要形式化地表達C語言的詞法規則。下面我們用狀態轉換圖的形式來展現這個案例程序能用到的詞法規則,如圖2-19所示。

圖2-19 前面介紹內容所涉及的狀態轉換圖

圖2-19是一個完整的轉換圖,我們來看詞法分析的每個步驟在轉換圖上對應的狀態。

首先是起始狀態,即我們前面所介紹的計算機準備識別下一個符號的狀態,如圖2-20所示。

圖2-20 狀態轉換圖處于起始狀態

我們以標識符符號的識別為例,只要識別到字母、數字或下劃線,就進入標識符識別狀態,情景如圖2-21所示。

圖2-21 識別到字母或下劃線的狀態

之后,只要遇到字母、數字或下劃線,就仍然在這個狀態中進行識別,情景如圖2-22所示。

圖2-22 不斷識別到字母、數字或下劃線的狀態

直到條件不再符合,就進入終態,表示此標識符已經識別完畢,情景如圖2-23所示。

圖2-23 進入終態并確定符號為標識符

然后從起始狀態開始準備識別下一個符號,情景如圖2-24所示。

圖2-24 重新回到起始狀態

下一個字符可能是數字、分隔符或運算符。如果是數字,情景如圖2-25所示。

圖2-25 識別到數字的狀態

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

圖2-26 識別到“,”的狀態

如果是運算符,情景如圖2-27所示。

圖2-27 識別到“=”的狀態

主站蜘蛛池模板: 汝阳县| 修水县| 永修县| 龙井市| 临沧市| 宁河县| 抚松县| 绥中县| 安阳市| 宜兴市| 扎鲁特旗| 兖州市| 靖西县| 沾益县| 恭城| 通道| 遂溪县| 长葛市| 浦东新区| 历史| 门头沟区| 河西区| 彭泽县| 昭苏县| 阳西县| 穆棱市| 古浪县| 昌乐县| 夹江县| 鄂伦春自治旗| 绥化市| 拉萨市| 汽车| 贵溪市| 镇平县| 巨鹿县| 旬阳县| 苍梧县| 乐都县| 青田县| 长宁县|