查看源代码 erl_id_trans (stdlib v6.2)

此模块执行 Erlang 代码的标识解析转换。

它作为用户想要编写自己的解析转换器的示例。如果将选项 {parse_transform,Module} 传递给编译器,则在检查代码是否存在错误之前,编译器会调用用户编写的函数 parse_transform/2

在调用函数 parse_transform/2 之前,Erlang 编译器会检查解析转换是否可以处理带有列号的抽象代码:如果实现了函数 parse_transform_info/0 并返回一个映射,其中键 error_location 与值 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}.

返回有关解析转换本身的信息。