It would be treated as 3 infix calls. So if ! expands to (l 'r) then it would be ((a '!) 'b) That may not be a good idea. By the way, a!!!!b would be ((a '!) '!) b
As for precedence, that's why I made it an alist rather than a table: it's sorted, so I can compare it in a top-to-bottom fashion. In other words, precedence is determined by the item's index within the alist.
> "That should be easy enough if you already have a plan for modules."
Yes, but I made it a requirement anyways, in case somebody had a crazy idea for custom ssyntax that was incompatible with modules.