On Wed, 8 Oct 2003, Martin Stecher wrote:
I do not really like that a structure does now start with either SP
or CRLF right after the bracket.
I like it 50%. The leading SP is indeed a bug that should be fixed.
Leading CRLF is intentional -- it allows the parser to switch to
named-value parsing mode by looking ahead one character only.
Incidently, it makes syntax constructs simpler and also follows
classic C formatting style. How about this compromise (get rid of
leading SP, leave leading CRLF):
message = name [SP anonym-parameters]
[CRLF named-parameters CRLF]
[CRLF payload]
";" CRLF
anonym-parameters = value *(SP value) ; spaced values
named-parameters = named-value *(CRLF named-value) ; CRLF-separated values
list-parameters = value *("," value) ; comma-separated
payload = data
value = atom / structure / list
named-value = name ":" SP value
atom = bare-value / quoted-value
structure = "{" [anonym-parameters] [CRLF named-parameters CRLF] "}"
list = "(" [list-parameters] ")"
The above is (should be) identical to your proposal, except:
- named-parameters always start with CRLF,
making parsing optimizations possible
- named-parameters always end with CRLF,
making the layout classic C-like and
allowing for easier MIME-style payload
identification (CRLFCRLF or CRLF; terminates
"headers"), a very useful parsing optimization
For example,
CMD1;
CMD2 {
n1: v1
n2: {
n21: {v21a v21b}
n22: (v22a,v22b)
}
};
CMD3 1 2 3
n1: v1
n2: v2
;
I think we actually migrated to an even cleaner/simpler syntax with
all these named-members-related changes! Any corrections or
objections?
Thanks,
Alex.