詞法分析器的輸出形式
詞法分析器的結構
符號的識別
詞法分析器的實現
符號表詞法分析器在編譯器負責:
詞法分析器不斷地讀取輸入串(原始檔),直到識別出下乙個符合單詞模式的字串(詞素),詞法分析器根據此「符合單詞模式的字串」生成下乙個單詞,將單詞流的輸出形成乙個輸出檔案,作為語法分析器的輸入。
語法分析器呼叫詞法分析器,指示詞法分析器從它的輸入不斷讀取字元,直到識別出下乙個「符合單詞模式的字串」為止,詞法分析器根據其生成下乙個單詞(token),返回給語法分析器。
示例:
上面的語句可以分成:
輸入緩衝區:源程式進入輸入緩衝區;
預處理程式:取消注釋、剔除無用的空白、回車、換行等;
掃瞄緩衝區:從輸入緩衝區輸入固定長度的字串到另乙個緩衝區(掃瞄緩衝區),詞法分析可以直接在此緩衝區中進行符號識別
設定左右兩個緩衝區,當左緩衝區讀完後,新讀入的字元存入右緩衝區;反之,存放在左緩衝區;
根據語言規定的詞法規則,進行識別。
對不同型別的單詞符號,有不同的識別要求為了判定乙個單詞符號的識別,必須掃瞄到某一地方,而該單詞符號並沒有這麼長,這種掃瞄方式叫做超前搜尋。
起點指標指向當前單詞的開始處。簡稱轉換圖(transition diagram),是一張有限方向圖,是設計詞法分析器的有效工具。搜尋指標用於向前搜尋,尋找單詞的結束,搜尋指標前移前需要確定是否達到末尾。
如果是,讀取n個新字元到另一緩衝區,如果剩餘字元不足n個,新增 eof 字元(或其他不會在源程式中的字元)。
單詞確定後,搜尋指標指向該詞素結尾字元。
生成單詞並記錄或返回給語法分析器後, 生成單詞並記錄或返回給語法分析器後, 生成單詞並記錄或返回給語法分析器後起點指標指向下乙個字元。
它由如下成分構成:
特點:從初態出發到某一終態路徑上字元的連線。
識別識別符號的狀態轉換圖:從初態開始
從輸入串中讀乙個字元
判明讀入字元與從當前狀態出發的哪條弧上的標記相匹配,便轉到相應匹配的那條弧所指向的狀態;
重複3,均不匹配時便告失敗;到達終態時便識別出乙個單詞符號。
在很多程式語言中,基本字也符合識別符號的模式,如何區分?
解決方法:
在程式中 ,使用者用識別符號定義了不少名字來代表不同的資料物件,編譯程式將這些名字儲存在符號表中。
符號表除了記錄名字本身而外,還記錄了與名字關聯的各種屬性資訊。每個名字對應乙個表項,乙個表項包括名字域和資訊域。
資訊域通常設定若干個子域和標誌位,其內容可以是與名字有關的任何資訊,如型別、種屬、長度、相對位址、陣列的內情向量、記錄與分量的聯絡、形參標誌、說明標誌、賦值標誌等。
因名字的長度、資訊域的組成和長度可能是各不相同的,一般採用間接表技術。
間接符號表的資料結構:
編譯器之詞法分析
最近我們在做乙個有關snl語言的編譯器,下面寫了一下大概流程 詞法分析器是編譯過程的第一階段,功能是 1.對以字串形式輸入的源程式 這裡是把源程式從檔案讀出,也可以在控制台輸入 按順序進行掃瞄,根據snl語言的詞法規則識別具有獨立意義的單詞 符號 序列,如保留字 由語言系統自身定義的,通常是由字母組...
xbmc軟體技術構成分析
xbmc的技術構成 1 xbmc在圖形化方面採用了x11庫來構建介面 注 x11指x window系統版本11,是乙個對網路透明的客戶 伺服器架構的圖形顯示系統,它支援應用程式在你的螢幕上繪製象素,線條,文字,圖象等等。x11還包括一些其它的輔助的函式庫,使得它可以容易地繪製使用者介面,例如 按鈕,...
開源軟體技術
有關軟體分發的特殊理念是作業系統未來發展所需關注的乙個問題,即開發一種同時適用於公司和消費者的作業系統。大家普遍認為linux作為一種根據 開源軟體技術 的原則建立和分發的作業系統,已經對作業系統產生了較大的影響。大多數作業系統 驅動程式和實用程式由分發其軟體 可執行版本 這些版本不可以研究或更改 ...