語義分析的地位
語義分析的地位:編譯程式最實質性的工作;第一次對源程式的語義作出解釋,引起源程式質的變化。
語義分析的任務
按照語法分析器識別的語法範疇進行語義檢查和處理,產生相應的中間代碼或目標代碼.
中間代碼
介於源語言和目標代碼之間的一種代碼。
引入中間代碼的目的
1. 方便生成目標代碼;
2. 便於最佳化;
3. 便於移植。
舉例
一個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
在高級程式設計語言翻譯中,語義分析階段的工作不與目標機器的體系結構密切相關,而目標代碼生成階段的工作與目標機器的體系結構密切相關。
語義分析的作用
在一個社會網路中常有節點之間的信息交流。可以對這種社會網路進行分析的一種強大的用來獲得和理解文本信息的技術被稱為語義網訊息傳輸分析(語義分析)。作為一個在人工智慧和計算語言學的方法,它為知識推理和語言提供了一個結構和過程。