詞法分析器

詞法分析器

前言:

  • 詞法分析是編譯的第一階段。它的含義是當程序進入編譯器的時候首先是詞法分析去分析它。也就能夠得出詞法分析器的主要任務。

詞法分析器的主要任務:

  • 讀入源程序的輸入字符(好比說C語言程序的#)、將它們組成詞素, 生成並輸出一個詞法單元序列, 每一個詞法單元對應於一個詞素。下一步就是進行語法分析(這不是本文章討論的內容了), 這個詞法單元序列被輸出到語法分析器進行語法分析。

詞法分析器的其餘任務:

  • 過濾掉源程序中的註釋和空白(例如: 空格、換行符、製表符以及在輸入中用於分隔詞法單元的其餘字符);
  • 編譯器生成的錯誤消息與源程序的位置聯繫起來。
  • 詞法分析器能夠負責記錄遇到的換行符的個數,以便給每一個出錯消息一個行號。在某些編譯器中,詞法分析器會創建源程序的一個拷貝,並將出錯信息插入到適當位置。若是源程序使用了一個宏預處理器,則宏的擴展也能夠由詞法分析器完成。

詞法分析器的處理階段:

  • 有的時候,詞法分析器能夠分紅兩個級聯的處理階段:code

    • 掃描階段主要負責完成一些不須要生成詞法單元的簡單處理,好比刪除註釋和將多個連續的空白字符壓縮成一個字符。
    • 詞法分析階段是較爲複雜的部分,它處理掃描階段的輸出並生成詞法單元。

詞法單元、模式和詞素:

詞法單元:

  • 詞法單元由一個詞法單元名和一個可選的屬性值組成。詞法單元名是一個表示某種詞法單位的抽象符號,好比一個特定的關鍵字,或者表明一個標識符的輸入字符序列。詞法單元名字是由語法分析器處理的輸入符號。
  • 模式描述了一個詞法單元的詞素可能具備的形式。當詞法單元是一個關鍵字時,它的模式就是組成這個關鍵字的字符序列。對於標識和其餘詞法單元,模式是一個更加複雜的結構,它能夠和不少符號串匹配。
  • 詞素是源程序中的一個字符序列,它和某個詞法單元的模式匹配,並被詞法分析器識別爲該詞法單元的一個實例。
相關文章
相關標籤/搜索