value = whitespace (bare-string / quoted-string / array) whitespace

array = "<<" *name-value-pair ">>"
name-value-pair = whitespace [ "<" name ] ">" value
name = whitespace (bare-string / quoted-string) whitespace

bare-string = [ bare-string-start *bare-string-char ]
bare-string-start = %x00-21 / %x23-38 / %x3a-5f / %x61 / %x63-10ffff
bare-string-char = bare-string-start / "'"

quoted-string = single-quote not-single-quote single-quote *(whitespace quoted)
single-quote = "'"
not-single-quote = %x00-38 / %x3a-10ffff / "''"

whitespace = *(WSP / CR / LF / comment)
comment = DQUOTE not-dquote DQUOTE
not-dquote = %x00-21 / %x23-10ffff
