在編譯器設計中,詞法分析器的作用是什麼?


詞法分析是編譯器的第一個階段,其中詞法分析器充當原始碼和編譯器其餘階段之間的介面。它讀取源程式的輸入字元,將其分組為詞素,併為每個詞素生成一系列標記。這些標記被髮送到解析器進行語法分析。

如果詞法分析器作為編譯器中的一個單獨的階段存在,則可能需要一箇中間檔案來存放其輸出,然後解析器從中獲取輸入。它可以消除對中間檔案的需求,詞法分析器和語法分析器(解析器)通常組合到同一個階段,其中詞法分析器要麼在解析器的控制下執行,要麼作為解析器的子程式執行。

詞法分析器在將標記傳遞給解析器時也與符號表進行互動。每當發現一個標記時,詞法分析器就會向解析器返回該標記的表示形式。如果標記是一個簡單的結構,包括括號、逗號或冒號,則它會返回一個整數程式。如果標記是更復雜的專案,包括識別符號或具有值的另一個標記,則該值也會傳遞給解析器。

詞法分析器將源語言的字元分成邏輯上屬於同一組的單元,稱為標記。它包括標記名稱,這是一個定義詞法單元型別的抽象符號,以及一個可選的屬性值,稱為標記值。標記可以是識別符號、關鍵字、常量、運算子和標點符號,包括逗號和括號。表示一組輸入字串的規則,對於這些字串,輸出相同的標記,稱為模式。

正則表示式在指定模式方面發揮著至關重要的作用。如果關鍵字被視為標記,則模式只是一個字元序列。對於識別符號和各種標記,模式形成一個複雜的結構。

詞法分析器還處理諸如去除註釋和空白(製表符、換行符、空格和其他用於分隔輸入中標記的字元)等問題。與源程式一起,編譯器在詞法分析器期間生成的相應錯誤訊息。

例如,它可以跟蹤所有換行符,以便它可以將每個錯誤訊息與模糊的語句行號相關聯。在宏的情況下,可以在源程式中使用預處理器來實現宏的擴充套件。

更新於: 2023年11月7日

44K+ 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告