Parsing expression languages

I'm working on a system (a prover for modal logic) in Haskell that needs to construct parsers for expression languages with operators of arbitrary arity and fixity. At the moment, I'm using the buildExpressionParser function from Parsec to do the heavy lifting, but it is restricted to pre-/post-fix unary and infix binary operators.

Does anyone have any suggestions as to the "correct" way to implement parsers for expression languages in Haskell? An instance of Read? Text.ParserCombinartors.ReadPrec?