【发布时间】:2015-05-30 07:01:48
【问题描述】:
我试图解析一些代码并重新格式化它们,但似乎引用会忽略 cmets。
有什么方法可以实现吗?我想我必须深入到 erlang 方面?
【问题讨论】:
-
如果您无法在 Elixir 宏中获取 cmets,您可能只想直接处理原始源代码。
我试图解析一些代码并重新格式化它们,但似乎引用会忽略 cmets。
有什么方法可以实现吗?我想我必须深入到 erlang 方面?
【问题讨论】:
不,您无法在宏中获取代码 cmets。它们永远不会成为 AST 的一部分,并且仍然在 Elixir 的标记器中被丢弃。
【讨论】:
:elixir 模块中的任何函数?如果是这样,您是否会考虑在分词器中选择性地保留 cmets?
似乎 cmets 是在分词器级别处理的,因此解析器甚至看不到它们。来自 elixir 标记器的 relevant parts 表明 cmets 在管道的早期就被丢弃了。来自 elixir core 的This test case 告诉我们同样的事情:
comments_test() ->
[{number, {1,1,2}, 1},{eol, {1,3,4}},{number,{2,1,2},2}] = tokenize("1 # Comment\n2").
【讨论】: