1. 程式人生 > >編譯原理入門(三)——詞法分析簡介

編譯原理入門(三)——詞法分析簡介

    上一篇博文介紹了編譯器翻譯的過程,本篇博文對翻譯過程的第一步詞法分析進行講解。

     詞法分析

    詞法分析的主要任務:1.對源程式的程式碼進行從左到右的逐行掃描,識別出各個單詞,從而確定單詞的型別。

                                        2.將識別出的單詞轉換為統一的機內表示——詞法單元(token)形式,token:<種別碼,屬性值>

   第二點看不懂沒事,先說說什麼是詞法單元形式,token是一個鍵值對,key是種別碼,什麼是種別碼?請看下圖便會知曉。

    當我們寫程式碼時,是不是需要用到這些單詞型別,現在是不是有一種似懂非懂的感覺。

    上圖中種別碼大概分為一詞一碼、一型一碼、多詞一碼等。

     一詞一碼:例如當你寫 if 這個詞的時候便可以從已經寫好的種別內容中找到該詞並確定它的型別,也就是該詞預先就定義好的。

     多詞一碼:在定義變數時,變數名是我們自己定義的,你不能從種別內容中找到該詞,所以會用一個集合把該詞存入其中,也就是並沒有預先定義的詞。

    一型一碼:不能從種別內容中找到你定義該常量的值,但是能找到你定義該值的型別。

    總結上面的種別碼:一對一則表示在種別內容中預先定義好的,多對一則表示在種別內容中沒有預先定義,是使用者自己定義的。

    token:<種別碼,屬性值>,種別碼就是型別,屬性值就是值,類似Map中的key,value的形式。 

   下圖是詞法分析後得到的token序列(使用的是巨集定義,後面會解釋),下圖中,沒有value的則表示是預先在種別內容中定義好的。

   

      好了,此部分內容便到此結束,下面繼續看語法分析。