【问题标题】:What is the allowed syntax for elixir macros?Elixir 宏允许的语法是什么?
【发布时间】:2015-10-21 02:51:45
【问题描述】:

我目前正在尝试编写一些宏,想知道语法规则是什么。为什么我可以创建宏~>>,但是|>>给我一个语法错误?

defmacro lhs ~>> rhs
# Works fine
defmacro lhs |>> rhs
# syntax error before: '>'

【问题讨论】:

  • 除了 Michal 在下面所说的之外,我还注意到 "|>" 是 Elixir 中定义的运算符,而据我所知, ~> 不是。因此,表达式可能被解析为 |> > 而不是 |>>。尝试执行 += 宏会导致 = 之前出现语法错误。

标签: syntax macros elixir


【解决方案1】:

elixir 的解析器只能识别有限的一组运算符。

我不确定这些是否在某处明确记录,但您可以查看解析器本身以了解可能的情况:https://github.com/elixir-lang/elixir/blob/master/lib/elixir/src/elixir_parser.yrl#L51-L74

【讨论】:

  • 没错。这些是目前免费的二元运算符:>>、~>>、、、、^^^ 和一元运算符^^^。
猜你喜欢
  • 2015-11-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 2021-11-26
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多