Boost logo

Boost :

From: Esteve Fernandez (esteve_at_[hidden])
Date: 2008-03-31 15:08:28


Hi all, it seems that the period for student applications has been extended to
April the 7th. Although I briefly discussed the idea for YAML archives
following a message by Sohail, I would like to explain it in more detail,
discuss some concerns and see if there's interest.

We already talked about YAML not being a superset of JSON, however given the
recent great news of the relicensing of TinyJSON, it still can be used as a
basis to build YAML parser.

My main concern is that YAML is sensitive to indentation, actually it uses
indentation as a substitute for { block }. One can write YAML to look like
JSON, use TinyJSON and everything will be fine, but it will not be able to
parse documents that use spaces/tabs to delimit blocks, only those that use
curly brackets. I guess it will have to be implemented at the scanner level
in Boost.Spirit, but it becomes more complicated. Anyway, with more
complications, comes more fun :-) I might be mistaken about where to
implement this stuff so feel free to correct me, but I think it's the way to
go, as I took a look at the source code for the Python interpreter and for
LibYAML, and they implemented the indentation stuff in their scanner, not in
the parser.

The good thing about doing YAML instead of JSON is that all the concerns about
object tracking and class versioning disappear, as they're already
implemented in the official spec. JSPON might or not be added to the official
JSON spec, although there are good chances that it will be, but it's still
not officially accepted and may change in the future. Also, a parser needs to
implement JSONPath (an XPath-like language for querying JSON documents),
since a reference to the root object can be written as "$ref" : "$[0].child"

A side advantage of implementing the YAML archives is that a C++ parser for
YAML would be available for those who don't want to use the official LibYAML
C parser.

Anyway, what do you think? Is there interest for this project?

Cheers.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk