ietf-openproxy
[Top] [All Lists]

RE: capability negotiations

2003-10-08 12:13:43


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.

I got the same idea after posting the last message.
Although I think it could be handled without the CRLF (parse a value,
check whether it is also a name and followed by a colon, if yes switch
to named-parameter), I agree, that an indication in front is better.
We have it for all other elements in OCP, so we should have it here too.

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
      ;


Agreed, regarding the syntax of structures.


I think we actually migrated to an even cleaner/simpler syntax with
all these named-members-related changes! Any corrections or
objections?


Almost perfect, IMO.
I don't like yet that payload is separated with an empty line from headers in 
case of named parameters but starts on a new line if there are only anonymous 
params. And the semicolon should either always or never start on a new line, I 
think.
So, how about this little change?

  message = name [SP anonym-parameters] CRLF
            [named-parameters CRLF]
            [payload CRLF]
            ";" CRLF

Every element, but anonymous parameters, starts on a new line.

Regards
Martin


<Prev in Thread] Current Thread [Next in Thread>