Syntax elixir宏允许的语法是什么?

Syntax elixir宏允许的语法是什么?,syntax,macros,elixir,Syntax,Macros,Elixir,我正在写一些宏,想知道语法的规则是什么。为什么我可以创建宏~>,但是|>给了我一个语法错误 defmacro lhs ~>> rhs # Works fine defmacro lhs |>> rhs # syntax error before: '>' elixir的解析器只能识别有限的一组运算符 我不确定这些是否有明确的文档记录,但您可以查看解析器本身以了解可能的情况:除了Michal下面所说的之外,我还注意到“|>”是Elixir中定义的运算符,而据我所知,

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

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

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


我不确定这些是否有明确的文档记录,但您可以查看解析器本身以了解可能的情况:

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