I imagine a parser that operates on (String,[String]) pairs, for which the second element allows the user to define precedence on the fly.
For instance, it would read the pair
(x,y) = ("a , b : c", [":" , ","])
as
"(a , (b : c))"
because y informs the parser that in x the colon binds first, then the comma.
I know it is possible, because Haskell does it already! In Haskell we can define novel infix operators on the fly, including their precedence relative to each other.
I don't know how, though, so that's my question.
--