編譯器之語義分析

2021-09-07 09:20:13 字數 474 閱讀 4153

semantic: 語言的意義

編譯器的語義分析階段將變數與其用法關聯起來,檢查每個表示式是否有正確的型別,還有, 將抽象的語法翻譯成更簡單的形式以

方便生成機器語言(碼)。

符號表將識別符號和其型別、位置關聯起來,當我們去處理變數,函式的宣告時,就是將這些資訊組織(繫結)起來,放在表裡,當需

要知道這些函式,變數的意義時,就去這個表裡查。

每乙個區域性變數都有其作用域(scope). 舉個例子, let d in e end

所有在d裡面宣告的變數、型別,還有函式只能在e結束之前是可見的,相應的,語義分析到達乙個作用末尾時,後續的就直接丟棄處理。

我們將多個這種繫結叫做環境(environment), 用箭頭 |-> 表示,比如, {g |->string, a|-> int|, 其函義為a是乙個整型變數,g是乙個字串

型變數。

舉乙個簡單的例子:

編譯器之語義分析

semantic 語言的意義 編譯器的語義分析階段將變數與其用法關聯起來,檢查每個表示式是否有正確的型別,還有,將抽象的語法翻譯成更簡單的形式以 方便生成機器語言 碼 符號表將識別符號和其型別 位置關聯起來,當我們去處理變數,函式的宣告時,就是將這些資訊組織 繫結 起來,放在表裡,當需 要知道這些函...

手工打造編譯器之語義分析1

語義分析階段的任務是 將變數的定義與它們的各個使用聯絡起來,檢查每乙個表示式是否有正確的型別,並將抽象語法變為更簡單的更適合生成機器 的表示。符號表是繫結的集合。這些繫結是識別符號與其含義的一種對映關係。因為作用域的改變,符號表也隨之改變。如下面的c語言 struct m 上面 的符號表可能為 t1...

編譯原理之語義分析

見語法制導翻譯篇 語義是指源程式及其組成部分所表述的含義 和語法不同,語法是關於程式及其組成部分的構成規則的描述,是上下文無關的 而語義是關於語法結構的含義及其使用規則的描述,是上下文有關的。語法上正確,其語義不一定正確。語義分析與中間 生成器基於語義規則,對語法樹進行語義分析 變數是否定義,型別是...