編譯原理:L屬性、S屬性語法制導


1 基本概念

  • Definition (語法制導定義 (Syntax-Directed Definition; SDD))

    SDD 是一個上下文無關文法和屬性及規則的結合。

  • Definition (語法制導的翻譯方案 (Syntax-Directed Translation Scheme; SDT))

    SDT 是在其產生式體中嵌入語義動作的上下文無關文法。

image-20210116175952376

2 S屬性

  • Definition (綜合屬性 (Synthesized Attribute))

    節點 N 上的綜合屬性只能通過 N 的子節點或 N 本身的屬性來定義。

  • Definition (S 屬性定義 (S-Attributed Definition))

    如果一個 SDD 的每個屬性都是綜合屬性, 則它是 S 屬性定義。

S 屬性定義的依賴圖描述了屬性實例之間自底向上的信息流

  • 當 LR 語法分析器進行歸約時, 計算相應節點的綜合屬性值
  • 在 LL 語法分析器中, 遞歸下降函數 A返回時, 計算相應節點 A 的綜合屬性值

2.1 例子

image-20210116173009713

3 L屬性

  • Definition (繼承屬性 (Inherited Attribute))

    節點 N 上的繼承屬性只能通過N 的父節點、N 本身和 N 的兄弟節 點上的屬性來定義。

  • Definition (L 屬性定義 (L-Attributed Definition))

    如果一個 SDD 的每個屬性

    1. 要么是綜合屬性,

    2. 要么是繼承屬性, 但是它的規則滿足如下限制: 對於產生式 A → X1X2 . . . Xn 及其對應規則定義的繼承屬性 Xi .a, 則這個規則只能使用

      (a) 和產生式頭 A關聯的繼承屬性;

      (b) 位於Xi 左邊的文法符號實例 X1、X2、. . . 、Xi−1 相關的繼承屬性或綜合屬性;

      (c) 和這個 Xi 的實例本身相關的繼承屬性或綜合屬性, 但是在由這個 Xi 的全部屬性組成的依賴圖中不存在環。

    則它是 L 屬性定義。

3.1 例子

image-20210116175511769

4 轉換

image-20210116175822318

5 SDT

Definition (語法制導的翻譯方案 (Syntax-Directed Translation Scheme; SDT))

SDT 是在其產生式體中嵌入語義動作的上下文無關文法。

語義動作可以嵌入在產生式體中的任何位置

image-20210116180125135


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM