編譯原理之語義分析

語義分析:

(見語法制導翻譯篇)

語義是指源程序及其組成部分所表述的含義
和語法不同,語法是關於程序及其組成部分的構成規則的描述,是上下文無關的;而語義是關於語法結構的含義及其使用規則的描述,是上下文有關的。
語法上正確,其語義不一定正確。語義分析與中間代碼生成器基於語義規則,對語法樹進行語義分析(變量是否定義,類型是否正確)和中間代碼生成(三元式、四元式等)。 主要功能包括建立符號表,進行靜態語義檢查,發現語義錯誤
編譯器分析的語義都是靜態語義,靜態語義是指在編譯器間可以確定的語義,與之對應的動態語義只能在運行期間才能被確定。
靜態語義分析通常包括聲明、類型匹配、類型轉換等。經過語義分析之後,在語法分析生成的語法樹的基礎上進一步對錶達式做一些標識。如:有些某些類型需要做隱式轉化,語義分析器會在之前的語法樹中插入相應的轉換節點
在這裏插入圖片描述 2.語義描述
程序的語義,函數的語義,各種名字的聲明和使用的語義, 各種語句的語義,表達式的語義
3.符號表
在編譯程序工作的過程中,需要不斷收集、記錄和使用源程序中的各種名字及其屬性等相關信息,以便檢查語義是否正確,並輔助翻譯爲正確的代碼。一般是建立表格的方式記錄信息。
功能1)收集符號信息 2)進行語義的合法性檢查
符號表應該包含常量表、變量表、函數表等等。
常見的語義錯誤主要有
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章