That's inside the macro though. Whatever you parse inside the macro is defined by the creator of the macro. The macro invocation itself is defined by the rust language.
Rust allows you to use any bracket because it doesn't know what the macro is supposed to do.
Some macros work like functions:
println!("Hello world");
Some macros work like array declarations:
let v = vec![1,2,3];
And some macros work like a code scope:
select!{
a => myfunc(),
b => my_other_func()
}
Since rust doesn't know what your macro does, it just lets the user choose whatever the user sees more fitting for that specific macro invocation.