Which Python tool can you recommend to parse programming languages? It should allow for a readable representation of the language grammar inside the source, and it should be able to scale to complicated languages (something with a grammar as complex as e.g. Python itself).
When I search, I mostly find pyparsing, which I will be evaluating, but of course I’m interested in other alternatives.
Edit: Bonus points if it comes with good error reporting and source code locations attached to syntax tree elements.
I really like pyPEG. Its error reporting isn’t very friendly, but it can add source code locations to the AST.
pyPEG doesn’t have a separate lexer, which would make parsing Python itself hard (I think CPython recognises indent and dedent in the lexer), but I’ve used pyPEG to build a parser for subset of C# with surprisingly little work.
An example adapted from fdik.org/pyPEG/: A simple language like this:
A pyPEG parser for that language: