檢視原始碼 erl_id_trans (stdlib v6.2)

此模組執行 Erlang 程式碼的識別解析轉換。

它被包含在內作為想要編寫自己的解析轉換器的使用者的範例。如果將選項 {parse_transform,Module} 傳遞給編譯器,則使用者編寫的函式 parse_transform/2 將在程式碼檢查錯誤之前被編譯器呼叫。

在函式 parse_transform/2 被呼叫之前,Erlang 編譯器會檢查解析轉換是否可以處理帶有欄數的抽象程式碼:如果函式 parse_transform_info/0 已實作並且傳回一個 map,其中 key error_location 與 value line 相關聯,則編譯器會在呼叫解析轉換之前從抽象程式碼中移除欄數。否則,編譯器將在不修改的情況下傳遞抽象程式碼。

解析轉換

如果程式設計師想要使用 Erlang 語法,但使用不同的語意,則會使用解析轉換。原始的 Erlang 程式碼隨後被轉換為其他 Erlang 程式碼。

注意

強烈建議程式設計師不要進行解析轉換。不對遇到的問題提供支援。

參閱

erl_parsecompile

總結

函式

作為範例,對 Erlang 表單執行識別轉換。

傳回關於解析轉換本身的資訊。

函式

連結到此函式

parse_transform(Forms, Options)

檢視原始碼
-spec parse_transform(Forms, Options) -> NewForms
                         when
                             Forms :: [erl_parse:abstract_form() | erl_parse:form_info()],
                             NewForms :: Forms,
                             Options :: [compile:option()].

作為範例,對 Erlang 表單執行識別轉換。

連結到此函式

parse_transform_info()

檢視原始碼 (自 OTP 24.0 起)
-spec parse_transform_info() -> #{error_location => column | line}.

傳回關於解析轉換本身的資訊。