A parser combinator library for Scala, based on the Trifecta library for Haskell.
The main features of Trifecta is that it provides good error messages. When a parser fails, it can report the failure location in the source, along with a message indicating what the failure was, including suggestions for how the source could be modified to fix the error.
It is reasonably fast, and stack safe.