編譯原理之語義分析

2021-10-23 03:51:39 字數 810 閱讀 4774

(見語法制導翻譯篇)

語義是指源程式及其組成部分所表述的含義

和語法不同,語法是關於程式及其組成部分的構成規則的描述,是上下文無關的;而語義是關於語法結構的含義及其使用規則的描述,是上下文有關的。

語法上正確,其語義不一定正確。語義分析與中間**生成器基於語義規則,對語法樹進行語義分析(變數是否定義,型別是否正確)和中間**生成(三元式、四元式等)。 主要功能包括建立符號表,進行靜態語義檢查,發現語義錯誤

編譯器分析的語義都是靜態語義,靜態語義是指在編譯器間可以確定的語義,與之對應的動態語義只能在執行期間才能被確定。

靜態語義分析通常包括宣告、型別匹配、型別轉換等。經過語義分析之後,在語法分析生成的語法樹的基礎上進一步對表示式做一些標識。如:有些某些型別需要做隱式轉化,語義分析器會在之前的語法樹中插入相應的轉換節點

程式的語義,函式的語義,各種名字的宣告和使用的語義, 各種語句的語義,表示式的語義

3.符號表

在編譯程式工作的過程中,需要不斷收集、記錄和使用源程式中的各種名字及其屬性等相關資訊,以便檢查語義是否正確,並輔助翻譯為正確的**。一般是建立**的方式記錄資訊。

功能1)收集符號資訊 2)進行語義的合法性檢查

符號表應該包含常量表、變數表、函式表等等。

常見的語義錯誤主要有

編譯原理語義分析 編譯原理 語義分析和符號表

本文使用 zhihu on vscode 創作並發布經過詞法分析 語法分析之後,源程式形式上和結構上的正確性基本得到了保證。然而,僅有形式上的正確性,並不能保證源程式就是完全正確的,還要檢查源程式的含義是否正確。諸如符號的使用是否得當,表示式的型別是否相容等,完成這些功能的編譯階段稱為語義分析。語義...

編譯原理之語法,語義,詞法分析

詞法分析 lexicalanalysis 或scanning 和詞法分析程式 lexicalanalyzer 或scanner 詞法分析階段是編譯過程的第乙個階段。這個階段的任務是從左到右乙個字元乙個字元地讀入源程式,即對構成源程式的字元流進行掃瞄然後根據構詞規則識別單詞 也稱單詞符號或符號 詞法分...

編譯原理 語義分析題型

字尾式 又稱逆波蘭表示法,把運算量 運算元 寫在前面,把算符寫在後面 字尾 如 a b 寫成 ab a b c 寫成 abc 字尾式要注意的是運算符號優先順序 c語言中運算子優先順序排序如下 優先順序 高到低 分為優先順序15級 1 圓括號 下標運算子 分量運算子的指向結構體成員運算子 結構體成員運...