qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v4 2/3] qapi: Add a primitive to include other f


From: Lluís Vilanova
Subject: Re: [Qemu-devel] [PATCH v4 2/3] qapi: Add a primitive to include other files from a QAPI schema file
Date: Thu, 13 Mar 2014 19:05:12 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Eric Blake writes:

> On 03/13/2014 09:33 AM, Benoît Canet wrote:
>>> We certainly can't do without comments.
>>> 
>>> JSON is designed for easy data exchange, but we use it as programming
>>> language syntax.  Its restrictions make sense for easy data exchange,
>>> but hurt our use.  We're not the first ones experiencing that pain:
>>> http://json5.org/
>>> 
>>> No idea how much momentum this JSON5 thingy has...

> If we 's,#,//,', our comments magically fall in line with JSON5 syntax;
> everything else in our files is already compliant with JSON5.

>>> 
>>> Switch to JSON5 and call it qapi-schema.json5?

> This actually seems like a rather nice idea - but due to our choice of
> comments, it means rewriting the bulk of the file and tweaking our parser.

>>> 
>> 
>> Hmm don't we want something that python and other language know how to parse 
>> out
>> of the box ? Or will we write yet another delicate work of art to parse it ?

> Our existing parser would only need to learn a new comment syntax to
> parse the subset of JSON5 that we currently actually use.  Parsing FULL
> JSON5 would mean also learning about trailing commas, unquoted names in
> name:value pairs, multiline strings, and alternative numeric
> representations.  But a point made on the JSON5 page is that ES5
> JavaScript already parses JSON5, just as it already parses original JSON.

Another option is to bump QEMU requirements to python 2.6 or later. Then we can
use the json parser that comes with python. A simple pre-processing could
eliminate the comments before passing them to the json package for loading into
python structures. The commands/enums/etc should also be elements of a list for
it to work (that must be either changed on the qapi files, or hackishly
"injected" before parsing).


Lluis

-- 
 "And it's much the same thing with knowledge, for whenever you learn
 something new, the whole world becomes that much richer."
 -- The Princess of Pure Reason, as told by Norton Juster in The Phantom
 Tollbooth



reply via email to

[Prev in Thread] Current Thread [Next in Thread]