語法制導翻譯

語法制導翻譯 是指一種源語言代碼的翻譯完全由 語法分析器 驅動的 編譯器 的實現方法。

一個常見的語法制導翻譯方法是將輸入字符串通過把相應的動作附加到每一條語法規則上的方法翻譯為一連串的動作。[1] 因此,對於一個基於某語法的字符串的解析會產生一個對於規則的應用序列。語法制導分析提供了一種將語義附加到任何一種語法上的簡單方法。

概述

語法制導翻譯的根本上是在一個上下文無關文法中透過向結果中添加動作(action)來工作的,從而形成語法制導定義(Syntax-Directed Definition)。[2] 動作是指,一個結果在推導過程中被使用的時候,將要被執行的步驟或過程。 一個嵌入了將要執行的動作的語法規則,稱為一個語法制導翻譯計劃 (有時簡稱為「翻譯計劃」)。

語法中的每個符號可以有一個屬性,即一個將被關聯到符號的值。常見的屬性可能包含變量類型、表達式的值,等等。 給出一個符號和一個屬性t,符號的屬性可以通過 X.t 來引用。

因此,給出動作和屬性,語法規則可以透過每個符號的屬性來應用動作和傳遞信息,從而將語法規則用於翻譯某語言上的字符串。

元編譯器

早期元編譯器在其描述中使用了語法驅動翻譯和語法制導翻譯這兩個術語。在其輸出代碼中具有元編程的語言特性。

參見元編譯器META II 以及 TREE-META

參見

參考文獻

  1. ^ Gurari, Eitan M. Syntax-Directed Translation Schemes (SDTS's). [2017-10-16]. (原始內容存檔於2012-07-28). 
  2. ^ Aho, Alfred V. Compilers: Principles, Techniques, & Tools. Boston: Pearson/Addison Wesley, 2007.