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

2021-08-20 18:42:37 字數 1818 閱讀 3072

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

屬性分類:綜合屬性和繼承屬性

綜合屬性:

用於」自上而下「傳遞資訊

在語法樹中,乙個結點的綜合屬性的值,由其子結點的屬性值決定

s-屬性文法:僅僅使用綜合屬性的屬性文法

繼承屬性:

用於」自上而下「傳遞資訊

在語法樹中,乙個結點的繼承屬性由此結點的父結點和/或兄弟結點的某些屬性確定

語義規則:對於文法的每乙個產生式配備一組屬性的計算規則

b:=f(c1,c2,…,ck) 

這裡f是乙個函式,而且或者

(1)b是a的乙個綜合屬性並且c1,c2,…ck是產生式右邊文法符號的屬性;或者ιιιιιθθ

(2)b是產生式右邊某個文法符號的乙個繼承屬性並且c1,c2,…ck是a或產生式右邊任何文法符號的屬性在這兩種情況下,我們都說屬性b依賴於屬性c1,c2,…,ck.

終結符只有綜合屬性,它由詞法分析器提供

非終結符既可以有綜合屬性也可以有繼承屬性,文法開始符號的所有繼承屬性作為屬性計算前的初始值

產生式右邊符號的繼承屬性和產生式左邊符號的綜合屬性都必須提供乙個計算規則

產生式左邊符號的繼承屬性和產生式右邊符號的綜合屬性不由所給的產生式的屬性計算規則進行計算,它們由其它產生式的屬性規則計算

基於屬性文法的處理過程

輸入串->語法樹->依賴圖->語義規則計算次序->計算結果

依賴圖:在一顆語法樹中的結點的繼承屬性和綜合屬性之間的相互依賴關係可以用稱作依賴圖的乙個有向圖來描述

依賴圖的構造演算法

for分析樹中每乙個結點n

for 結點的文法符號的每乙個屬性a

為a在依賴圖中建立乙個結點;

for分析樹中每乙個結點n

for結點n所用產生式對應的每乙個語義規則

b:=f(c1,c2,…ck)

for i :=1 to k

從ci結點到b結點構造一條有向邊

屬性的計算次序

乙個有向非迴圈圖的拓撲序是圖中結點的任何順序m1,m2, …mk,使得邊必須是從序列中前面的結點指向後面的結點。也就是

說,如果mi→mj是mi到mj的一條邊,那麼在序列中mi必須出現在mj之前

乙個依賴圖的任何拓撲排序都給出乙個語法樹中結點的語義規則計算的有效順序。這就是說,在拓撲排序中,在乙個結點上,語

義規則b:=f(c1,c2,…ck)中的屬性c1,c2…ck在計算b以前都是可用的

s屬性的自下而上計算:

s—屬性文法,它只含有綜合屬性

綜合屬性可以在分析符號串的同時由自上而下的分析器來構造

分析器可以儲存與棧中文法符號有關的綜合屬性值

每當進行歸約時,新的屬性值就由棧中正在歸約的產生式右邊符號的屬性值來計算

可以通過擴充分析器中的棧來存放這些綜合屬性值

s-屬性文法的翻譯器通常可借助於lr分析器實現

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

l-屬性文法

如果每個產生式a →x1 x2 … xn 的每條語義規則計算的屬性是a的綜合屬性;或者是xj 的繼承屬性, 1 ≦j ≦ n, 但它僅依賴:

該產生式中xj左邊符號x1, x2, …, xj-1的屬性

a的繼承屬性

翻譯模式:

翻譯模式是語法制導定義的一種便於翻譯的書寫形式。其中屬性與文法符號相對應,語義規則或語義動作用花括號{ }括起來,

可被插入到產生式右部的任何合適的位置上

這是一種語法分析和語義動作交錯的表示法,他表達在按深度優先遍歷分析樹的過程中何時執行語義動作

翻譯模式給出了使用語義規則進行計算的順序。可看成是分析過程中翻譯的注釋

編譯原理 語法制導翻譯

子問題 在語法分析基礎上邊分析邊翻譯 語法制導的翻譯方案syntax directed translation scheme sdt 決定於翻譯的目的,例如 產生什麼樣的中間 在對sdd的求值過程中,如果結點n的屬性a依賴於結點m1的屬性a1,m2的屬性a2,那麼我們必須先計算出mi的屬性,才能計算...

第6章 屬性文法和語法制導翻譯

一.課程內容 1.屬性文法 是在上下文無關文法的基礎上為每個文法符號配備若干個相關的 值 分為綜合屬性和繼承屬性 2.綜合屬性 用於 自下而上 傳遞資訊,在語法樹中,乙個結點的綜合屬性的值,由其子結點的屬性值確定。3.繼承屬性 用於 自上而下 傳遞資訊。在語法樹中,乙個結點的繼承屬性由此結點的父結點...

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

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