1. 程式人生 > >遊戲是不可能遊戲的,只有學習這種東西,才能維持的了生活。

遊戲是不可能遊戲的,只有學習這種東西,才能維持的了生活。

1.總結

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

    屬性代表與文法符號相關的資訊,和變數一樣,可以進行計算和傳遞。屬性分為綜合屬性和繼承屬性。

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

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

    屬性計算的過程即是語義處理的過程,對於文法的每一個產生式配備一組屬性的計算規則,則稱為語義規則。

    語義規則所描述的工作包括:屬性計算、靜態語義檢查、符號表操作、程式碼生成等。

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

這種經變換後的語法樹稱之為抽象語法樹。

    S—屬性文法的自下而上計算,S—屬性文法,它只含有綜合屬性。綜合屬性可以在分析符號串的同時由自上而下的分析器來構造,分析器可以儲存與棧中文法符號有關的綜合屬性值,每當進行歸約時,新的屬性值就由棧中正在歸約的產生式右邊符號的屬性值來計算,可以通過擴充分析器中的棧來存放這些綜合屬性值。S-屬性文法的翻譯器通常可藉助於LR分析器實現。

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

    翻譯模式是語法制導定義的一種便於翻譯的書寫形式。其中屬性與文法符號相對應,語義規則或語義動作用花括號{ }括起來,可被插入到產生式右部的任何合適的位置上。這是一種語法分析和語義動作交錯的表示法,他表達在按深度優先遍歷分析樹的過程中何時執行語義動作。翻譯模式給出了使用語義規則進行計算的順序。可看成是分析過程中翻譯的註釋。

2.感悟

    這一章主要內容是SDD語法制導定義和SDT語法制導翻譯方案,通過給CFG中的文法符號設定語義屬性來表示語法成分對應的語義資訊,而語義屬性通過相關聯的語義規則計算,在對語法分析的過程中進行翻譯。