複製鏈接
請複製以下鏈接發送給好友

語義分析

鎖定
語義分析是編譯過程的一個邏輯階段, 語義分析的任務是對結構上正確的源程序進行上下文有關性質的審查,進行類型審查。語義分析是審查源程序有無語義錯誤,為代碼生成階段收集類型信息。比如語義分析的一個工作是進行類型審查,審查每個算符是否具有語言規範允許的運算對象,當不符合語言規範時,編譯程序應報告錯誤。如有的編譯程序要對實數用作數組下標的情況報告錯誤。又比如某些程序規定運算對象可被強制,那麼當二目運算施於一整型和一實型對象時,編譯程序應將整型轉換為實型而不能認為是源程序的錯誤。
語義分析的地位:編譯程序最實質性的工作;第一次對源程序的語義作出解釋,引起源程序質的變化。 [1] 
中文名
語義分析
領    域
編譯原理

語義分析語義分析的地位

語義分析的地位:編譯程序最實質性的工作;第一次對源程序的語義作出解釋,引起源程序質的變化。 [1] 

語義分析語義分析的任務

按照語法分析器識別的語法範疇進行語義檢查和處理,產生相應的中間代碼或目標代碼. [1] 

語義分析中間代碼

介於源語言和目標代碼之間的一種代碼。 [1] 

語義分析引入中間代碼的目的

1. 方便生成目標代碼; [1] 
2. 便於優化; [1] 
3. 便於移植。 [1] 

語義分析舉例

一個C程序片斷
int arr[2],b;
b = arr * 10;
源程序的結構是正確的. 語義分析將審查類型並報告錯誤:不能在表達式中使用一個數組變量,賦值語句的右端和左端的類型不匹配.
又比如在語句sum:=first+count*10中,*的兩個運算對象:count是實型,10是整型,則語義分析階段進行類型審查之後,在語法分析所得到的分析樹上增加一語義處理結點,表示整型變成實型的一目算符inttoreal.
例:id1:=id2+id3*10
語法分析得知其是Pascal語言,表示成語法樹為:
:=
/ \
id1 +
/ \
id2 *
/ \
id3 10
經語義分析得插入語義處理結點的樹:
:=
/ \
id1 +
/ \
id2 *
/ \
id3 inttoreal
|
10
在高級程序設計語言翻譯中,語義分析階段的工作不與目標機器的體系結構密切相關,而目標代碼生成階段的工作與目標機器的體系結構密切相關。

語義分析語義分析的作用

在一個社會網絡中常有節點之間的信息交流。可以對這種社會網絡進行分析的一種強大的用來獲得和理解文本信息的技術被稱為語義網消息傳輸分析(語義分析)。作為一個在人工智能和計算語言學的方法,它為知識推理和語言提供了一個結構和過程。
參考資料
  • 1.    陳英.編譯原理:清華大學出版社,2009年