Daniel P. Berrangé <berra...@redhat.com> writes: > 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.
Makes sense. Figuring out what language the old parser parses gave me a headache or three, too. Thanks!