詞法分析器:
- 作用:

- 與符號表進行交互,存儲和讀取符號表中的標識符的信息
- 讀入源程序的輸入字符,將他們組成詞素,生成並輸出一個詞法單元序列,每個詞法單元序列對應一個於一個詞素
- 過濾掉程序中的注釋和空白
- 將編譯器生成的錯誤消息與源程序的位置聯系起
- 相關概念:
- 詞法單元:由一個詞法單元名和一個可選的屬性值組成,詞法單元名是一個表示某種詞法單位的抽象符號,詞法單元名是語法分析器的輸入符號
- 在很多程序設計語言中:
- 每個關鍵字有一個詞法單元,一個關鍵字的模式就是該關鍵字本身
- 表示運算符的詞法單元,可以表示單個運算符,也可以表示一類運算符
- 一個表示所有標識符的詞法單元
- 一個或多個表示常量的詞法單元,比如數字和字面值字符串
- 每一個標點符號有一個詞法單元,比如左右括號、逗號和分號
- 屬性值:
- 一個標識符的屬性值是一個指向符號表中該標識符對應條目的指針
- 例:
- 在很多程序設計語言中:
- 模式:描述了一個詞法單元的詞素可能具有的形式
- 詞素:是源程序中與某個詞法單元的模式匹配的一個字符序列,由詞法分析器識別為該詞法單元的一個實例
- 例:
- 詞法單元:由一個詞法單元名和一個可選的屬性值組成,詞法單元名是一個表示某種詞法單位的抽象符號,詞法單元名是語法分析器的輸入符號
- 詞法錯誤恢復策略:
- 恐慌模式恢復:從剩余的輸入中不斷刪除字符,直到詞法分析器能夠在剩余輸入的開頭發現一個正確的詞法單元為止
- 可能采取的其他錯誤恢復動作:
- 從剩余的輸入中刪除一個字符
- 向剩余的輸入中插入一個遺漏的字符
- 用一個字符來替換另一個字符
- 交換兩個相鄰的字符
參考——《編譯原理(第二版)》


