本題目是編譯原理實驗,現在只發布核心代碼,僅供交流,歡迎評論!
實驗要求:
根據編譯中的分詞原理,編寫一個詞法分析程序:
1. 輸入:任意一個C語言程序的源代碼。
2. 處理:對輸入進行分析,分離出保留字、標識符、常量、算符和界符。
3. 輸出:對應的二元式(種別編碼自定,可暫編爲一類對應一個編碼)。
一、說明
/**
*
* @author 劉小文
* 本詞法分析器只對一部分進行了分析,並沒有包含全部的信息,暫編一類對應一個編碼
* (1)關鍵字:二元式定義如下:(單詞種別爲1,關鍵字名稱) yes
* 關鍵字表:"auto","break","case","char","const","continue","default","do","double","else","enum","extern","float","for","goto","if","int","long","register","return","short","signed","static", "sizeof","struct","switch","typedef","union","unsigned","void","volatile","while"
*
* (2)標識符:二元式定義如下:(單詞種別爲2,標識符名稱) yes
*
* (3)常 數:二元式定義如下:(單詞種別3,常數值) yes
* 常數表:整型常數、浮點型常數、布爾型常數、字符型常數、字符串
*
* (4)運算符:二元式定義如下:(單詞種別4,運算符) no 三目運算符沒有判斷
* 運算符表:+、+=、++、-、-=、--、*、*=、/、/=、%、%=、>、>=、<、<=、=、==、!、!= 、. 、->、>>、<<、&、&&、||、||、~、^
*
* (5)界 符:二元式定義如下:(單詞種別5,界符) yes
* 界符表:#、;、,、(、)、{、}、[、]
*
* no 不加雙引號的漢字誤判爲標識符,應爲非法字符 ;加雙引號的漢字,正確的判斷爲字符串常數
*/
二、詞法分析器核心代碼
三、運行結果