Interesting talk on using PEGs to parse Clojure in Cursive to give good syntax error messages: https://www.youtube.com/watch?v=kt4haSH2xcs (the messages are largely machine-generated!)