macros: support multiple choices for deserializing strings
While `|` would be preferred, in macros, `expr` matches may include `|` and therefore may not be followed by `|`. The only other options are `,`, `;`, or `=>`. The comma is already used for separating variants and the arrow for the variant/string separation. Semicolon is the only one left, but it is also used for "or" in Prolog.