I implemented the parser manually since I couldn't get pypeg2 to emit
useful error messages (I confess to be a bit proud of my multi-level
color-coded reporting).
The DSL isn't complete yet. Explicit dependencies and nested rules are
still missing, as are most column types. But it's enough to create and
populate some tables from a real-world project, so I consider it to have
reached to MVP stage.