From: Brian I. <in...@tt...> - 2001-07-18 08:15:47
|
Hi all, I need to get 3 implementations done for some demos next week. So I needed a resolution on some issues. Clark and I talked on the phone and came up with some ideas. They call for more strictness, and we both think that's good at this stage. Here they are: 1) No tabs allowed in indenting. It is invalid YAML. 2) All indenting is mandatory 4 spaces. 3) Blocks are represented like: foo: line 1 line 2 line 3 bar: - multi-line with no final new line baz: @ : Multi line block. Note (Oren) that the ':' is a bullet for blocks in list context. :- Multi line with no final newline Single line value "Multi-line\nstring that can be reformatted.\nie Leading and trailing whitespace aren't significant" code: sub standard { my $x = shift; } # Each line has 3 significant leading spaces # Also the final trailing blank line is OK # because of rule #4 qwerty: "A multi line quoted string must wrap down with 4-space indenting" 4) Top production is a list of maps, but the list separator is "---\n" instead of "\n". 5) Multi-line map keys may only be quoted (and possibly escaped). No block mode allowed. These rules allow a very clean YAML, and make for very deterministic parsing. They eliminate the need for a closing '>>' or even a leading '<<' for blocks. They also simplify the heuristics for emitting. Thoughts? FYI, I'm very comfortable with this syntax and will go ahead and use it for my demoes. Clark is currently in agreement as well. Cheers, Brian |
From: Neil K. <neilk@ActiveState.com> - 2001-07-18 09:29:44
|
I just got off the phone with Brian I. about all these changes. I had some issues, but he convinced me on every point. I'm very happy with these ideas, especially since they are similar to stuff I was about to propose anyway. :) On Wed, Jul 18, 2001 at 01:15:44AM -0700, Brian Ingerson wrote: > 1) No tabs allowed in indenting. It is invalid YAML. > 2) All indenting is mandatory 4 spaces. I was a bit worried about this since tabs are such a common way of indenting things. However we can avoid the endless problems python et al. have with mixed tabs and spaces if we get strict now. Any programmer's editor should be able to expand tabs. My one remaining concern is for nonprogrammers using Notepad or Word. At a 4-level indent, counting out 16 spaces might be be tedious and error-prone. However, at this time I think it's more important to get implementations out in the field. Then we'll see what the complaints are. Deep indents may turn out to be rare in hand-edited files. > 3) Blocks are represented like: I like all these changes. Solves most of the problems *and* is more intuitive and flexible. > 4) Top production is a list of maps, but the list separator is "---\n" > instead of "\n". > 5) Multi-line map keys may only be quoted (and possibly escaped). No > block mode allowed. No arguments. -- Neil Kandalgaonkar, ActiveState ASPN - ActiveState Programmer Network http://ASPN.ActiveState.com/ |