On Fri, Feb 16, 2024 at 03:58:38PM +0100, Markus Armbruster wrote: > QAPISchemaParser is a conventional recursive descent parser. Except > QAPISchemaParser.get_doc() delegates most of the doc comment parsing > work to a state machine in QAPIDoc. The state machine doesn't get > tokens like a recursive descent parser, it is fed tokens. > > I find this state machine rather opaque and hard to maintain. > > Replace it by a conventional parser, all in QAPISchemaParser. Less > code, and (at least in my opinion) easier to understand. > > Signed-off-by: Markus Armbruster <arm...@redhat.com> > --- > scripts/qapi/parser.py | 478 ++++++++++++++++++----------------------- > 1 file changed, 210 insertions(+), 268 deletions(-)
Reviewing parsing code typically gives me a headache, and reviewing diffs of parsing code is even worse. Thus instead of R-b I'll give a Tested-by: Daniel P. Berrangé <berra...@redhat.com> on the basis that we've got great test coverage and I think that's the real killer requirement for parsing code. The tests still pass with this commit, so functionally it is working as expected. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|