抽象句法

計算機科學中,數據的抽象句法(英語:abstract syntax)是將其結構描述為數據類型(可能但不一定是抽象數據類型),獨立於任何特定的表示或編碼。 這特別用於計算機語言中文本的表示,這些語言通常存儲在樹結構中作為抽象語法樹。對比僅由資料結構組成的抽象語法與具體句法,具體語法還包括有關表示的信息。 例如,具體句法包括括號(用於分組)或逗號(用於列表)等功能,這些功能不包含在抽象句法中,因為它們已經隱含在結構中。

如果結構是抽象的但名字(標識符)仍然是具體的(因此需要名字解析),則抽象語法被分類為一階抽象句法(FOAS);如果名字本身是抽象的,則抽象語法被分類為高階抽象句法

用途

為了實現計算或通信,必須定義從抽象句法到特定機器表示和編碼的映射; 這些可能被稱為「具體句法」(在語言實現中)或「傳輸句法」(在通信中)。

程序的編譯器的內部表示,通常由抽象句法根據類別(例如「語句」、「表達式」和「標識符」)來指定。 這與正在編譯的語言的源語法(具體句法)無關(儘管它們通常非常相似)。 解析樹類似於抽象句法樹,但它通常還包含諸如括號之類的特徵,這些特徵在句法上很重要,但隱含在抽象句法樹的結構中。

代數數據類型特別適合抽象語法的實現。

參見

參考文獻