- 編譯系統透視:圖解編譯原理
- 新設計團隊
- 6字
- 2019-01-04 03:30:34
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 識別到“=”的狀態
推薦閱讀
- 實戰Java程序設計
- Getting Started with SQL Server 2012 Cube Development
- Java軟件開發基礎
- ADI DSP應用技術集錦
- Building Android UIs with Custom Views
- Django 3.0入門與實踐
- JBoss:Developer's Guide
- Arduino可穿戴設備開發
- Bootstrap for Rails
- 計算機應用技能實訓教程
- Python全棧開發:基礎入門
- Java設計模式深入研究
- Responsive Web Design with jQuery
- 軟件開發中的決策:權衡與取舍
- VC++ 2008專題應用程序開發實例精講