Eric Blake <ebl...@redhat.com> writes: > On 09/07/2015 04:16 AM, Markus Armbruster wrote: >> The QAPI code generators work with a syntax tree (nested dictionaries) >> plus a few symbol tables (also dictionaries) on the side. >> >> They have clearly outgrown these simple data structures. There's lots >> of rummaging around in dictionaries, and information is recomputed on >> the fly. For the work I'm going to do, I want more clearly defined >> and more convenient interfaces. >> >> Going forward, I also want less coupling between the back-ends and the >> syntax tree, to make messing with the syntax easier. >> >> Create a bunch of classes to represent QAPI schemata. >> >> Have the QAPISchema initializer call the parser, then walk the syntax >> tree to create the new internal representation, and finally perform >> semantic analysis. >> >> Shortcut: the semantic analysis still relies on existing check_exprs() >> to do the actual semantic checking. All this code needs to move into >> the classes. Mark as TODO. >> >> Simple unions are lowered to flat unions. Flat unions ands structs >> are represented as a more general object type. > > s/ands/and/
Fixing... >> >> Catching name collisions in generated code would be nice. Mark as >> TODO. >> >> We generate array types eagerly, even though most of them aren't used. >> Mark as TODO. >> >> Nothing uses the new intermediate representation just yet, thus no >> change to generated files. >> >> Signed-off-by: Markus Armbruster <arm...@redhat.com> >> Reviewed-by: Eric Blake <ebl...@redhat.com> >> Reviewed-by: Daniel P. Berrange <berra...@redhat.com> >> --- >> scripts/qapi-commands.py | 2 +- >> scripts/qapi-event.py | 2 +- >> scripts/qapi-types.py | 2 +- >> scripts/qapi-visit.py | 2 +- >> scripts/qapi.py | 379 ++++++++++++++++++++++++++++++++++++++++- >> tests/qapi-schema/test-qapi.py | 2 +- >> 6 files changed, 375 insertions(+), 14 deletions(-) > > Still looks okay; the improvements made for pep8 look reasonable. Thanks!