【问题标题】:Is that possible to get comments with macro?可以用宏获得评论吗?
【发布时间】:2015-05-30 07:01:48
【问题描述】:

我试图解析一些代码并重新格式化它们,但似乎引用会忽略 cmets。

有什么方法可以实现吗?我想我必须深入到 erlang 方面?

【问题讨论】:

  • 如果您无法在 Elixir 宏中获取 cmets,您可能只想直接处理原始源代码。

标签: macros elixir


【解决方案1】:

不,您无法在宏中获取代码 cmets。它们永远不会成为 AST 的一部分,并且仍然在 Elixir 的标记器中被丢弃。

【讨论】:

  • 所以,我想不可能覆盖:elixir 模块中的任何函数?如果是这样,您是否会考虑在分词器中选择性地保留 cmets?
  • 我可以接受一个在标记器中保留 cmets 的补丁,只要它不是默认行为,因为它会使解析器严重复杂化。也就是说,我认为仅修补标记器不会对您有所帮助。
【解决方案2】:

似乎 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").

【讨论】:

    猜你喜欢
    • 2014-09-05
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2010-12-29
    • 2010-09-20
    相关资源
    最近更新 更多