屬性文法
2、屬性:代表與文法符號相關的資訊,和變數一樣,可以進行計算和傳遞。
3、屬性的分類
4、語義規則:對於文法的每乙個產生式配備一組屬性的計算規則,則稱為語義規則。
這裡f是乙個函式,而且:
或者(1)b是a的乙個綜合屬性並且c1,c2,…ck是產生式右邊文法符號的屬性;
或者(2)b是產生式右邊某個文法符號的乙個繼承屬性並且c1,c2,…ck是a或產生式右邊任何文法符號的屬性;
在這兩種情況下,我們都說屬性b依賴於屬性c1,c2,…,ck。
5、語義規則所描述的工作:屬性計算、靜態語義檢查、符號表操作、**生成等
基於屬性文法的處理方法
1、樹遍歷的屬性計算方法
假設語法樹已經建立了並且樹中已帶有開始符號的繼承屬性和終結符的綜合屬性。以某種次序遍歷語法樹,直至計算出所有的屬性。
2、一遍掃瞄的處理方法
在語法分析的同時計算屬性值,而不是語法分析構造語法樹之後進行屬性的計算,而且無需構造實際的語法樹。
3、抽象語法樹
從語法樹中去掉對翻譯不必要的資訊,而獲得更有效的源程式中間表示。這種經變換後的語法樹稱之為抽象語法樹。
在抽象語法樹中,操作符和關鍵字都不作為葉結點出現,而是把它們作為內部結點,即這些葉結點的父結點。
4、s-屬性文法的自下而上計算
s—屬性文法,它只含有綜合屬性。綜合屬性可以在分析符號串的同時由自上而下的分析器來構造。
5、l-屬性文法的自頂向下翻譯
如果每個產生式a->x1 x2 … xn 的每條語義規則計算的屬性是a的綜合屬性;或者是xj 的繼承屬性,1<= j<= n, 但它僅依賴:
(1)該產生式中xj左邊符號x1, x2, …, xj-1的屬性;
(2)a的繼承屬性
s屬性文法包含於l屬性文法
翻譯模式
是語法制導定義的一種便於翻譯的書寫形式。其中屬性與文法符號相對應,語義規則或語義動作用花括號{}括起來,可被插入到產生式右部的任何合適的位置上。
第六章我們重點學習了屬性文法和語法制導翻譯的基本思想,這一章有很多新的定義:屬性文法,語法制導,翻譯模式,自頂向下翻譯,自底向上翻譯等。其中如何通過屬性來表達翻譯是這裡面難度比較大,不容易掌握。
編譯原理第六章 屬性文法和語法制導翻譯
第六章主要講了屬性文法 語義規則 基於屬性文法的處理 s屬性的自下而上計算 l 屬性文法的自頂向下翻譯等內容。一些基本的概念 屬性文法 是在上下文無關文法的基礎上為每個文法符號 終結符或非終結符 配備若干個相關的 值 稱為屬性 屬性 代表與文法符號相關的資訊,和變數一樣,可以進行計算和傳遞。綜合屬性...
編譯原理第六章 屬性文法和語法制導翻譯
一 內容小結 本章主要介紹語法分析及翻譯的問題,其處理方法主要是屬性文法和語法制導翻譯方法。重點內容有 1.屬性文法 2.基於屬性文法的處理方法 3.s 屬性文法的自上而下計算 4.l 屬性文法和自下而上的翻譯。1.屬性文法 是在上下文無關文法的基礎上為每個文法符號 終結符或非終結符 配備若干個相關...
編譯原理第六章 屬性文法和語法制導翻譯
1 知識點圖 重點記憶 1.屬性文法 1.1屬性文法 是在上下文無關文法的基礎上為每個文法符號 終結符或非終結符 配備若干個相關 的 值 稱為屬性,代表與文法符號相關的資訊,和變數一樣,可以進行計算和傳 遞 1.2屬性分類 1.2.1綜合屬性 用於 自下而上 傳遞資訊 在語法樹中,乙個結點的綜合屬性...