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

2021-08-20 17:52:43 字數 1706 閱讀 6572

一.

課程內容

1.

屬性文法:

是在上下文無關文法的基礎上為每個文法符號配備若干個相關的「值」。分為綜合屬性和繼承屬性

2.

綜合屬性:

用於「自下而上」傳遞資訊,在語法樹中,乙個結點的綜合屬性的值,由其子結點的屬性值確定。

3.

繼承屬性:

用於「自上而下」傳遞資訊。在語法樹中,乙個結點的繼承屬性由此結點的父結點和/或兄弟結點的某些屬性確定。

4.

屬性的計算次序

乙個有向非迴圈圖的拓撲序是圖中結點的任何順序m1,m2,…mk,使得邊必須是從序列中前面的結點指向後面的結點。也就是說,如果mi®mj是mi到mj的一條邊,那麼在序列中mi必須出現在mj之前。

5.

抽象語法樹:

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

6.

一遍掃瞄的處理方法:

與樹遍歷的屬性計算方法不同,一遍掃瞄的處理方法是在語法分析的同時計算屬性值,而不是語法分析構造語法樹之後進行屬性的計算,而且無需構造實際的語法樹。

7.

屬性文法的自下而上計算:

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

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

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

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

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

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

翻譯模式:

翻譯模式是語法制導定義的一種便於翻譯的書寫形式。其中屬性與文法符號相對應,語義規則或語義動作用花括號{}括起來,可被插入到產生式右部的任何合適的位置上。

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

屬性的計算次序受分析方法所限定的分析樹結點建立次序的限制

分析樹的結點是自左向右生成

如果屬性資訊是自左向右流動,那麼就有可能在分析的同時完成屬性計算

s屬性文法包含於l屬性文法

二.課後習題:

三.課後總結:

感覺這章學的不夠紮實,還有很多需要鞏固,像l文法的翻譯,抽象語法樹這部分還要加強學習。課後題也有不會的,還好有室友的指導,讓我明白了許多。需要的是多練習,再實踐中理解。

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

屬性文法 是在上下文無關文法的基礎上為每個文法符號 終結符或非終結符 配備若干個相關的 值 稱為屬性 屬性分類 綜合屬性和繼承屬性 綜合屬性 用於 自上而下 傳遞資訊 在語法樹中,乙個結點的綜合屬性的值,由其子結點的屬性值決定 s 屬性文法 僅僅使用綜合屬性的屬性文法 繼承屬性 用於 自上而下 傳遞...

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

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

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

一 內容小結 本章主要介紹語法分析及翻譯的問題,其處理方法主要是屬性文法和語法制導翻譯方法。重點內容有 1.屬性文法 2.基於屬性文法的處理方法 3.s 屬性文法的自上而下計算 4.l 屬性文法和自下而上的翻譯。1.屬性文法 是在上下文無關文法的基礎上為每個文法符號 終結符或非終結符 配備若干個相關...