[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 17/28] qapi: Allow true, false and null in sc
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v5 17/28] qapi: Allow true, false and null in schema json |
Date: |
Wed, 01 Apr 2015 06:17:49 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 |
On 04/01/2015 03:33 AM, Markus Armbruster wrote:
>>> Longhand:
>>>
>>> # mandatory
>>> 'name': { 'type': 'str' }
>>> # optional, with a default
>>> 'flag': { 'type': 'bool', 'default': true }
>>> # optional, no default
>>> 'string': { 'type': 'str', 'default': null }
>>>
>>> Presence of 'default' implies optional.
>>>
>>> Equivalent shorthand, if any:
>>>
>>> 'name': 'str'
>>> '*string': 'str'
>>
>> A nice shorthand for defaults would be:
>>
>> '*name': 'str' = 'default'
>>
>> Though that would be neither valid JSON nor Python any more. Do we
>> actually rely on this property anywhere or is it only parsed by the QAPI
>> generator anyway and we can extend the language in such ways?
>
> I guess JSON / Python was chosen as QAPI schema language to save us the
> bother of defining a syntax and building the tools to work with it, like
> an Emacs mode. JSON's not exactly my favourite choice, but at least
> it's not XML.
>
> What we have now isn't JSON, but it's still a subset of Python, and the
> Python tools work. If we go beyond Python, they'll break.
Well, we were a subset of Python, until this patch added true, false,
and null (the Python way would have been True, False, and None). We are
also similar to JSON5, http://json5.org/
Among other things, JSON5 allows trailing commas, allows unquoted keys
in a dictionary, allows single-quoted strings, and allows C-style comments.
>
> If we decide to sacrifice these tools for readability, then we can just
> as well replace the syntax entirely. Preferably by something where I
> don't have to put every identifier in quotes.
>
> In short, you're welcome to hack up qapi.py some more for schema
> readability, but either keep Emacs Python mode working, or provide a
> replacement :)
Since we're not quite python or JSON, we've already rolled our own
parser; so rewriting QAPI to use a syntax of our own choosing is not
that much of a leap. But not for this series.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature