elixir 宏允许的语法是什么?

What is the allowed syntax for elixir macros?

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

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

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

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