NOTE: The official PEG generator for Python 3.9 and later is now included in the CPython repo under Tools/peg_generator/.
See also PEP 617.
The code here is a modified copy of that generator where I am experimenting with error recovery.
The code examples for my blog series on PEG parsing also exist here (in story1/, story2, etc.).
I've written a series of blog posts on Medium about PEG parsing:
- Series overview
- PEG Parsers
- Building a PEG Parser
- Generating a PEG Parser
- Visualizing PEG Parsing
- Left-recursive PEG grammars
- Adding actions to a PEG grammar
- A Meta-Grammar for PEG Parsers
- Implementing PEG Features
- PEG at the Core Developer Sprint
I gave a talk about this at North Bay Python: Writing a PEG parser for fun and profit