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.

--
Jeffrey Benjamin Brown