基礎介紹:
任務:從字符流到記號流
字符流:我們程序的源代碼
記號流:把一些有意義的一段字符流識別為一些記號,比如if、括號、變量名字等等。
token中第一個是枚舉變量,賦值為IF、ELSE等,但變量的名字是不同的,因此我們需要lexeme來進一步說明變量的字符內容。
手工編碼實現:
比較的實現轉移圖:
偽代碼實現:
標識符的轉移圖:
關鍵字是標識符的一部分,識別出關鍵字之后可以通過哈希算法來看看是否是關鍵字,哈希表不是關鍵, 表才是關鍵,哈希表只是為了加快查找速度。
詞法分析器的生成器:
程序員寫聲明規范,然后用生成器生成。
有限狀態自動機: