Let’s consider the macro
@mymacro which parses some input arguments which are separated by commas as shown below.
macro mymacro(expr...) # ... does something with expr return expr end @mymacro(x' = x, x∈X, dim=1)
If I use parentheses around the input argument, they are parsed as a
(:(x' = x), :(x ∈ X), :(dim = 1)) which is exactly what I like to obtain.
However, if I call the macro like this
@mymacro x' = x, x∈X, dim=1
because I like to leave out the parentheses which created to
Tuple to reduce the verbosity of the macro, the input argument are parsed totally different. Because the precedence of
= is higher than the one of
,, the inputs are parsed as
(:(x' = ((x, x ∈ X, dim) = 1)),).
Is there a “best” or an “official” way to transform the parsed input
(:(x' = ((x, x ∈ X, dim) = 1)),) obtaining from calling the macro without parantheses to the desired
(:(x' = x), :(x ∈ X), :(dim = 1)) for an arbitrary number of comma separated inputs?