資源簡介
1. 課程設計目標
實驗建立C-編譯器。只含有掃描程序(scanner)和語法分析(parser)部分。
2. 分析與設計
C-編譯器設計的整體框架,本實驗實現掃描處理和語法分析程序(圖中粗黑部分)。
2.1 、掃描程序scanner部分
2.1.1系統設計思想
設計思想:根據DFA圖用switch-case結構實現狀態轉換。
慣用詞法:
① 語言的關鍵字:else if int return void while
② 專用符號:+ - * / < >= == != = ; , ( ) [ ] { } /* */
③ 其他標記是ID和NUM,通過下列正則表達式定義:
ID = letter letter*
NUM = digit digit*
letter = a|..|z|A|..|Z
digit = 0|..|9
大寫和小寫字母是有區別的
④ 空格由空白、換行符和制表符組成。空格通常被忽略,除了它必須分開ID、NUM關鍵字。
⑤ 注釋用通常的C語言符號/ * . . . * /圍起來。注釋可以放在任何空白出現的位置(即注釋不能放在標記內)上,且可以超過一行。注釋不能嵌套
說明:當輸入的字符使DFA到達接受狀態的時候,則可以確定一個單詞了。初始狀態設置為START,當需要得到下一個token時,取得次token的第一個字符,并且按照DFA與對此字符的類型分析,轉換狀態。重復此步驟,直到DONE為止,輸出token類型。當字符為“/”時,狀態轉換為SLAH再判斷下一個字符,如果為“*”則繼續轉到INCOMMENT,最后以“*”時轉到ENDCOMMENT狀態,表明是注釋,如果其他的則是字符停滯于當前字符,并且輸出“/”。
2.1.2程序流程圖
代碼片段和文件信息
評論
共有 條評論