1. 程式人生 > >編譯原理入門(五)——語義分析簡介

編譯原理入門(五)——語義分析簡介

    前面的兩篇博文介紹了詞法分析、語法分析,本篇博文將介紹語義分析。

    語義分析

    語義分析是編譯的第三步,它的主要任務是:1.收集識別符號的屬性資訊資訊,如收集種屬資訊(簡單變數、複合變數(陣列等)、過程),型別資訊,儲存位置,長度,值,作用域,引數,返回值等。在語義分析階段收集的這些資訊將會存放在符號表的資料結構中。

     符號表的每一條記錄對應一個識別符號,符號表的每一個欄位表示識別符號的屬性資訊。下圖中的S、I、M、P所在的部分為字串表,每一個符號表通常都會帶著一個字串表,此表用來存放識別符號的名稱和長度,也就是符號表中的NAME字元部分。NAME欄位被分為兩部分,舉個例子,識別符號SIMPLE表示一個識別符號的名,NAME的第一部分便是指向這個識別符號名的起始位置,第二部分表示該識別符號的長度,這樣便能找出每一個識別符號的名。(識別符號的名可以理解為我們定義的變數名)

   

   上面的內容說的是語義分析的第一個任務,語義分析還有第二個任務,便是進行語義的檢查,如常見的錯誤:變數或過程未經宣告就使用、運算分量型別不匹配(例如字串型別和整型相加,會對其進行轉換)、變數名或過程名重複使用等。

   好了,語義分析的簡介就到這裡。