Bill,
thanks for generating the real data!
I withdraw my objections at this time.
(part of the confusion is because I've done a lousy job of keeping versions
of my parser straight; I believe that the parser I'm currently using for
myself implements the blank-line fix; I don't know what versions are "out
there", and don't even know how to tell you to figure out which version
they are.)
--On 7. mars 2005 19:00 -0600 Bill Fenner
<fenner(_at_)research(_dot_)att(_dot_)com> wrote:
Harald,
I used my ABNF extractor on RFCs 3000-3999, resulting
in 128 ABNF documents. I parsed them with both your parser (from
http://www.ops.ietf.org/abnf/parser.tar.gz) and mine. Your parser
presumably implements the rules you think should exist; mine implements
exactly RFC2234 (modulo bugs; none currently known).
Of these 128 documents, mine failed none that yours didn't also fail;
yours failed 14 that mine passed; mostly because yours appears to only
accept at most two characters in %x00.00.00.00 style string and because
you only accept uppercase hex digits in %x constructs.
I'll also note that your parser doesn't permit either blank lines
or multi-line prose-vals;
forbin% cat blankline
a = b
c
forbin% ./parser blankline
Rule: a = b
Not OK
Syntax error: c<*>
forbin% cat proseval
proseval = <This is a multi-line prose-val,
which rfc2234 does not permit.>
forbin% ./parser proseval
Not OK
Syntax error: proseval = <This is a multi-line prose-val,
<*>
so I'm not sure what implementation it is you're pointing to that
implements the thing that's not 2234.
Bill