How would you write it when you actually want the , then? Any time you have an escape character, you need some way to escape the escape character when you want to use it literally. You can't just use \|, since what happens if you want \ literally? If \ is going to be an escape character anywhere, it needs to be one everywhere. It's the only way that works (and, as already said, it doesn't work very well).
\| and \\| Or \ | if you're treating with parserfunctions.
My point is that it doesn't need to be an escape character anywhere, only if followed by a pipe (and i don't like too much the backslash being THE escape character).
Ok, let me try and get straight what you are suggesting. In the following "->" means "parses to" and "*" means a divider (ie. what | parses to without being escaped).
| -> * | -> | \| -> * \\| -> \*
Is that right? In which case, what parses to "|"? The only thing I can think of is "\|". That boils down to:
an odd number of slashes parses to half that number rounded down slashes followed by a divider an even number of slashes parses to half that number slashes followed by a pipe
I guess that might work, but it seems extremely confusing to me.