編譯原理第六章 屬性文法和語法制導翻譯

2021-08-20 17:28:02 字數 1062 閱讀 3840

一·內容小結

本章主要介紹語法分析及翻譯的問題,其處理方法主要是屬性文法和語法制導翻譯方法。

重點內容有:1.屬性文法

2.基於屬性文法的處理方法

3.s-

屬性文法的自上而下計算

4.l-

屬性文法和自下而上的翻譯。

1.屬性文法

是在上下文無關文法的基礎上為每個文法符號(終結符或非終結符)配備若干個相關的「值」(稱為屬性)。

(1)綜合屬性

(2)繼承屬性

語義規則所描述的工作:屬性計算、靜態語義檢查、符號表操作、**生成

2.基於屬性文法的處理方法

輸入串-語法樹

-依賴圖

-語義規則計算次序

-計算結果

這種由源程式的語法結構所驅動的處理辦法就是語法制導翻譯法。

1)樹遍歷的屬性計算方法:

假設語法樹已經建立起了,並且樹中已帶有開始符號的繼承屬性和終結符的綜合屬性。然後以某種次序遍歷語法樹,直至計算出所有的屬性。

2)抽象語法樹

從語法樹中去掉對翻譯不必要的資訊,而獲得更有效的源程式中間表示。

3.屬性文法的自下而上計算

s—屬性文法,它只含有綜合屬性。綜合屬性可以在分析符號串的同時由自上而下的分析器來構造。分析器可以儲存與棧中文法符號有關的綜合屬性值。每當進行歸約時,新的屬性值就由棧中正在歸約的產生式右邊符號的屬性值來計算。

s-屬性文法的翻譯器通常可借助於

lr分析器實現。

4. l-屬性文法的自頂向下翻譯

屬性的計算次序受分析方法所限定的分析樹結點建立次序的限制。分析樹的結點是自左向右生成。如果屬性資訊是自左向右流動,那麼就有可能在分析的同時完成屬性計算。

二.知識運用

三.感想

經過第四章和第五章的洗禮,這章的內容相對來說容易一些,但說簡單也不簡單,在表示式建立語法樹翻譯模式的**上還是理解起來比較困難,由於不是學習的重點,私下也沒有花太多時間理解,主要是為第七章的內容做一下鋪墊吧。

編譯原理第六章 屬性文法和語法制導翻譯

第六章主要講了屬性文法 語義規則 基於屬性文法的處理 s屬性的自下而上計算 l 屬性文法的自頂向下翻譯等內容。一些基本的概念 屬性文法 是在上下文無關文法的基礎上為每個文法符號 終結符或非終結符 配備若干個相關的 值 稱為屬性 屬性 代表與文法符號相關的資訊,和變數一樣,可以進行計算和傳遞。綜合屬性...

編譯原理第六章 屬性文法和語法制導翻譯

1 知識點圖 重點記憶 1.屬性文法 1.1屬性文法 是在上下文無關文法的基礎上為每個文法符號 終結符或非終結符 配備若干個相關 的 值 稱為屬性,代表與文法符號相關的資訊,和變數一樣,可以進行計算和傳 遞 1.2屬性分類 1.2.1綜合屬性 用於 自下而上 傳遞資訊 在語法樹中,乙個結點的綜合屬性...

編譯原理第六章 屬性文法和語法制導翻譯

屬性文法 2 屬性 代表與文法符號相關的資訊,和變數一樣,可以進行計算和傳遞。3 屬性的分類 4 語義規則 對於文法的每乙個產生式配備一組屬性的計算規則,則稱為語義規則。這裡f是乙個函式,而且 或者 1 b是a的乙個綜合屬性並且c1,c2,ck是產生式右邊文法符號的屬性 或者 2 b是產生式右邊某個...