1. If indentation is significant and required, dotted notation should be optional:
[foo]
[bar]
[car]
The parser should be able to understand that this results in a foo.bar.car structure without explicitly using dotted notation in the keys.2. Support include files. With #1 implemented, includes would be extremely powerful and flexible. Since indentation is required, no special syntax is needed to relatively position the included files. And without requiring dotted notation in keys, include files can be reused in a configuration (such as common settings in the [servers] section of the example).
I personally never jumped on YAML or JSON. I liked that they weren't XML, but they each felt like XML++ too much for me. There was still too much, I don't know, weirdness/typing/oops! Don't get me wrong, I think they were better than XML, but only marginally. It would be nice to see more of a phase change type of approach. I'd LOVE to see something like this (or something else) that involves much less typing/special characters/etc than YAML and JSON.
Personal opinion.
value = "example # no that's not a comment" # but here's one
If inline comments where not allowed we could just check the first and last character for a quote and we know we have a string, same for arrays (check for [ and ]). But with inline comments, we need to parse the whole string.As far as I can see both the C# and Python parsers don't handle this kind of comment correctly at the moment, and probably many implementations will have troubles with that. They should just drop this option in my opinion.
>>> value = "example # no that's not a comment" # but here's one
>>> value
"example # no that's not a comment"It seems there are now several other Python parsers, so some of them are probably getting it right.
Personally, of course, I think we should just use a slightly modified version of s-exprs which would be easier to parse.
(:keyword value)
where value can be an atom, list of atoms or a list of keyword value pairs. Comments could follow the Lisp convention and start with semi-colon and end with newline. Only 5 characters to escape, namely, '(', ')', ':', ' ' and ';'.
Can you tell at a glance what is wrong with this YAML snippet:
scandinavia:
SE: Sweden
NO: Norway
FI: FinlandBut I think the "square bracket list" things only ever occur in value position, and the headers only ever occur in root position, so it's not that hard.