Macros 可以通过宏获取注释吗?

Macros 可以通过宏获取注释吗?,macros,elixir,Macros,Elixir,我试图解析一些代码并重新格式化它们,但quote似乎只会忽略注释 有没有办法做到这一点?我想我必须深入到erlang方面?不,宏中不能有代码注释。它们从未成为AST的一部分,并且仍然在Elixir的标记器中被丢弃。注释似乎是在标记器级别处理的,因此解析器甚至不会看到它们。来自elixir标记器的注释表明注释在管道中很早就被丢弃了。从长生不老药核心告诉我们同样的事情: comments_test() -> [{number, {1,1,2}, 1},{eol, {1,3,4}},{num

我试图解析一些代码并重新格式化它们,但quote似乎只会忽略注释


有没有办法做到这一点?我想我必须深入到erlang方面?

不,宏中不能有代码注释。它们从未成为AST的一部分,并且仍然在Elixir的标记器中被丢弃。

注释似乎是在标记器级别处理的,因此解析器甚至不会看到它们。来自elixir标记器的注释表明注释在管道中很早就被丢弃了。从长生不老药核心告诉我们同样的事情:

comments_test() ->
  [{number, {1,1,2}, 1},{eol, {1,3,4}},{number,{2,1,2},2}] = tokenize("1 # Comment\n2").

所以,我想不可能重写
:elixir
模块中的任何函数?如果是这样的话,你会考虑在记录器中保留注释吗?我可以用一个补丁来保存记录器中的注释,只要它不是默认的行为,因为它会使语法分析器严重复杂化。也就是说,我不认为只修补标记器会对您有所帮助。如果您无法在Elixir宏中获得注释,您可能只想直接处理原始源代码。