第六章主要講了屬性文法、語義規則、基於屬性文法的處理、
s屬性的自下而上計算、
l-屬性文法的自頂向下翻譯等內容。
一些基本的概念:
屬性文法
:是在上下文無關文法的基礎上為每個文法符號(終結符或非終結符)配備若干個相關的「值」(稱為屬性)。
屬性:代表與文法符號相關的資訊,和變數一樣,可以進行計算和傳遞。
綜合屬性:
用於「自下而上」傳遞資訊,
在語法樹中,乙個結點的綜合屬性的值,由其子結點的屬性值確定
繼承屬性:
用於「自上而下」傳遞資訊。
在語法樹中,乙個結點的繼承屬性由此結點的父結點和/或兄弟結點的某些屬性確定
語義規則所描述的工作:
1.屬性計算
2.靜態語義檢查
3.符號表操作
4.**生成
基於屬性文法的處理方法
1 輸入串語法樹依賴圖語義規則計算次序計算結果
這種由源程式的語法結構所驅動的處理辦法就是語法制導翻譯法。
語義規則的計算可能產生**、在符號表中存放資訊、給出錯誤資訊或執行任何其它動作。對輸入串的翻譯也就是根據語義規則進行計算得出結果。
2 屬性的計算次序
乙個有向非迴圈圖的拓撲序是圖中結點的任何順序m1,m2, …mk,使得邊必須是從序列中前面的結點指向後面的結點。也就是說,如果mimj是mi到mj的一條邊,那麼在序列中mi必須出現在mj之前。
3、樹遍歷的屬性計算方法
假設語法樹已經建立起了,並且樹中已帶有開始符號的繼承屬性和終結符的綜合屬性。然後以某種次序遍歷語法樹,直至計算出所有的屬性。
4.抽象語法樹
從語法樹中去掉對翻譯不必要的資訊,而獲得更有效的源程式中間表示。
這種經變換後的語法樹稱之為抽象語法樹
屬性文法的自下而上計算
s—屬性文法,它只含有綜合屬性。綜合屬性可以在分析符號串的同時由自上而下的分析器來構造。分析器可以儲存與棧中文法符號有關的綜合屬性值。每當進行歸約時,新的屬性值就由棧中正在歸約的產生式右邊符號的屬性值來計算。可以通過擴充分析器中的棧來存放這些綜合屬性值
s-屬性文法的翻譯器通常可借助於lr分析器實現
l-屬性文法的自頂向下翻譯
屬性的計算次序受分析方法所限定的分析樹結點建立次序的限制。分析樹的結點是自左向右生成。如果屬性資訊是自左向右流動,那麼就有可能在分析的同時完成屬性計算
翻譯模式
翻譯模式是語法制導定義的一種便於翻譯的書寫形式。其中屬性與文法符號相對應,語義規則或語義動作用花括號{ }括起來,可被插入到產生式右部的任何合適的位置上。
這是一種語法分析和語義動作交錯的表示法,他表達在按深度優先遍歷分析樹的過程中何時執行語義動作。
翻譯模式給出了使用語義規則進行計算的順序。可看成是分析過程中翻譯的注釋。
本章總結:第六章沒有考試內容,知識點比較容易理解,在此就不過多的贅述了
編譯原理第六章 屬性文法和語法制導翻譯
一 內容小結 本章主要介紹語法分析及翻譯的問題,其處理方法主要是屬性文法和語法制導翻譯方法。重點內容有 1.屬性文法 2.基於屬性文法的處理方法 3.s 屬性文法的自上而下計算 4.l 屬性文法和自下而上的翻譯。1.屬性文法 是在上下文無關文法的基礎上為每個文法符號 終結符或非終結符 配備若干個相關...
編譯原理第六章 屬性文法和語法制導翻譯
1 知識點圖 重點記憶 1.屬性文法 1.1屬性文法 是在上下文無關文法的基礎上為每個文法符號 終結符或非終結符 配備若干個相關 的 值 稱為屬性,代表與文法符號相關的資訊,和變數一樣,可以進行計算和傳 遞 1.2屬性分類 1.2.1綜合屬性 用於 自下而上 傳遞資訊 在語法樹中,乙個結點的綜合屬性...
編譯原理第六章 屬性文法和語法制導翻譯
屬性文法 2 屬性 代表與文法符號相關的資訊,和變數一樣,可以進行計算和傳遞。3 屬性的分類 4 語義規則 對於文法的每乙個產生式配備一組屬性的計算規則,則稱為語義規則。這裡f是乙個函式,而且 或者 1 b是a的乙個綜合屬性並且c1,c2,ck是產生式右邊文法符號的屬性 或者 2 b是產生式右邊某個...