From: "Daniel P. Berrange" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH v8 02/26] qapi: New QAPISchema intermediate reperesentation
Date: Wed, 16 Sep 2015 15:44:56 +0100 [thread overview]
Message-ID: <20150916144456.GG21184@redhat.com> (raw)
In-Reply-To: <1442401589-24189-3-git-send-email-armbru@redhat.com>
On Wed, Sep 16, 2015 at 01:06:05PM +0200, 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 and structs are
> represented as a more general object type.
>
> 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 <armbru@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 | 381 ++++++++++++++++++++++++++++++++++++++++-
> tests/qapi-schema/test-qapi.py | 2 +-
> 6 files changed, 377 insertions(+), 14 deletions(-)
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
next prev parent reply other threads:[~2015-09-16 14:45 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-16 11:06 [Qemu-devel] [PATCH v8 00/26] qapi: QMP introspection Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 01/26] qapi: Rename class QAPISchema to QAPISchemaParser Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 02/26] qapi: New QAPISchema intermediate reperesentation Markus Armbruster
2015-09-16 14:44 ` Daniel P. Berrange [this message]
2015-09-16 15:08 ` Eric Blake
2015-09-17 7:44 ` Markus Armbruster
2015-09-17 15:40 ` Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 03/26] qapi: QAPISchema code generation helper methods Markus Armbruster
2015-09-16 14:51 ` Daniel P. Berrange
2015-09-16 15:11 ` Eric Blake
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 04/26] qapi: New QAPISchemaVisitor Markus Armbruster
2015-09-16 14:51 ` Daniel P. Berrange
2015-09-16 15:21 ` Eric Blake
2015-09-17 7:46 ` Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 05/26] tests/qapi-schema: Convert test harness to QAPISchemaVisitor Markus Armbruster
2015-09-16 14:53 ` Daniel P. Berrange
2015-09-16 15:27 ` Eric Blake
2015-09-17 7:49 ` Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 06/26] qapi-types: Convert to QAPISchemaVisitor, fixing flat unions Markus Armbruster
2015-09-16 14:54 ` Daniel P. Berrange
2015-09-16 17:09 ` Eric Blake
2015-09-17 17:00 ` Eric Blake
2015-09-18 6:54 ` Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 07/26] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs Markus Armbruster
2015-09-16 14:54 ` Daniel P. Berrange
2015-09-16 17:10 ` Eric Blake
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 08/26] qapi-commands: Convert to QAPISchemaVisitor Markus Armbruster
2015-09-16 14:57 ` Daniel P. Berrange
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 09/26] qapi: De-duplicate enum code generation Markus Armbruster
2015-09-16 14:58 ` Daniel P. Berrange
2015-09-16 17:16 ` Eric Blake
2015-09-17 8:04 ` Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 10/26] qapi-event: Eliminate global variable event_enum_value Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 11/26] qapi-event: Convert to QAPISchemaVisitor, fixing data with base Markus Armbruster
2015-09-16 14:59 ` Daniel P. Berrange
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 12/26] qapi: Replace dirty is_c_ptr() by method c_null() Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 13/26] qapi: Clean up after recent conversions to QAPISchemaVisitor Markus Armbruster
2015-09-16 15:00 ` Daniel P. Berrange
2015-09-16 17:20 ` Eric Blake
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 14/26] qapi-visit: Rearrange code a bit Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 15/26] qapi-commands: Rearrange code Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 16/26] qapi: Rename qmp_marshal_input_FOO() to qmp_marshal_FOO() Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 17/26] qapi: De-duplicate parameter list generation Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 18/26] qapi-commands: De-duplicate output marshaling functions Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 19/26] qapi: Improve built-in type documentation Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 20/26] qapi: Make output visitor return qnull() instead of NULL Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 21/26] qapi: Introduce a first class 'any' type Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 22/26] qom: Don't use 'gen': false for qom-get, qom-set, object-add Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 23/26] qapi-schema: Fix up misleading specification of netdev_add Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 24/26] qapi: Pseudo-type '**' is now unused, drop it Markus Armbruster
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 25/26] qapi: New QMP command query-qmp-schema for QMP introspection Markus Armbruster
2015-09-16 20:08 ` Eric Blake
2015-09-16 11:06 ` [Qemu-devel] [PATCH v8 26/26] qapi-introspect: Hide type names Markus Armbruster
2015-09-16 15:07 ` [Qemu-devel] [PATCH v8 00/26] qapi: QMP introspection Daniel P. Berrange
2015-09-17 16:16 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150916144456.GG21184@redhat.com \
--to=berrange@redhat.com \
--cc=armbru@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.