[rfc-i] v3imp #8 Fragment tagging on sourcecode
pkyzivat at alum.mit.edu (Paul Kyzivat) Tue, 27 January 2015 20:53 UTC
From: "pkyzivat at alum.mit.edu"
Date: Tue, 27 Jan 2015 15:53:43 -0500
Subject: [rfc-i] v3imp #8 Fragment tagging on sourcecode
In-Reply-To: <54C4AFF1.6030608@gmx.de>
References: <54C20F92.4090400@seantek.com> <54C232FC.1000604@gmx.de> <54C275BC.1040905@alum.mit.edu> <20150123175511.GI2350@localhost> <54C28E3F.4040901@alum.mit.edu> <E378C876-5217-4274-86B6-1DBFB653DE24@vpnc.org> <54C29891.6040101@alum.mit.edu> <54C3576A.9030206@greenbytes.de> <54C3BE06.8010707@alum.mit.edu> <54C3C6A3.6080003@seantek.com> <54C3CF7F.6090901@seantek.com> <54C4AFF1.6030608@gmx.de>
Message-ID: <54C7FAD7.7040500@alum.mit.edu>
On 1/25/15 3:57 AM, Julian Reschke wrote: > On 2015-01-24 17:59, Sean Leonard wrote: >> On 1/24/2015 8:21 AM, Sean Leonard wrote: >>> First of all there is no such thing as "ABNF modules" yet--only ABNF >>> grammar (combined with specification text). I recognize this >>> conversation is trending to creating them. >>> Providing different definitions of the same rule in the same RFC is >>> reckless >> >> The more I thought about this, the more I would like to propose that the >> RFC itself be unit of analysis (i.e., "module"). >> ... > > > I agree that it's good to formalize this somewhat, but I'm not convinced > updating/extending RFC 5234 is a good idea. > > For instance, in the HTTP specs we use prose rules with a well-defined > syntax: > > <http://greenbytes.de/tech/webdav/rfc7231.html#imported.abnf> > > This might be enough for automated checkers to do the right thing. I agree that we need to be careful not to extend ABNF too much, making it more difficult. OTOH, the people who use ABNF are not, for the most part, stupid. (Does ABNF need to be understandable to someone who doesn't know at least one real programming language?) The use of some symbols defined in another draft presents a particularly interesting issue: To verify the using ABNF, you need to import at least the rule defining the symbol in question. But that rule may well refer to other rules in the referenced document. Should you: - selectively import rules that are needed, one by one, until there are no more undefined symbols? - OR, simply import the full set of rules from the referenced document? Either way, there may then be conflicts between rules defined in the new document and those imported from the old document. The potential is greater if you have imported all the ABNF from the referenced document. And this of course depends a bit on whether the ABNF in the referenced document was intended to be one "module" or not. RFC5234 is itself an interesting case study. It includes: - a set of "Core Rules" in Appendix B. This could be viewed as one ABNF "module". - a complete ABNF definition of ABNF. This could also be viewed as a separate ABNF "module", but it informally indicates that it depends (imports) the Core Rules. - ABNF fragments interspersed with text, duplicating rules in both of the above. *Many* uses of ABNF reuse rules defined in the Core Rules. When doing so, it would probably be fine to import the full set of Core Rules, but it would probably be inappropriate to also import the rules defining the ABNF of ABNF, and it certainly would be inappropriate to also import all the fragments. IMO it would make sense to introduce enough new syntax to ABNF to define named modules, and to specify the import of specific named modules from an external document. Thanks, Paul
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Sean Leonard
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Julian Reschke
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Nico Williams
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Nico Williams
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Hoffman
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Nico Williams
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Sean Leonard
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Nico Williams
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Ted Lemon
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Ted Lemon
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Nico Williams
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Nico Williams
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Nico Williams
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Nico Williams
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Sean Leonard
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Julian Reschke
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Julian Reschke
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Sean Leonard
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Ted Lemon
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Sean Leonard
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Julian Reschke
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Julian Reschke
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Sean Leonard
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Sean Leonard
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Nico Williams
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Nico Williams
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Sean Leonard
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Nico Williams
- [rfc-i] [Json] v3imp #8 Fragment tagging on sourc… Nico Williams
- [rfc-i] [Json] v3imp #8 Fragment tagging on sourc… Bjoern Hoehrmann
- [rfc-i] [Json] v3imp #8 Fragment tagging on sourc… Sean Leonard
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Sean Leonard
- [rfc-i] ABNF Core Rule extensions Paul Kyzivat
- [rfc-i] ABNF Core Rule extensions Dave Crocker
- [rfc-i] ABNF Core Rule extensions Nico Williams
- [rfc-i] ABNF Core Rule extensions Dave Crocker
- [rfc-i] [Json] v3imp #8 Fragment tagging on sourc… Bjoern Hoehrmann
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Bjoern Hoehrmann
- [rfc-i] ABNF Core Rule extensions Julian Reschke
- [rfc-i] ABNF Core Rule extensions Bjoern Hoehrmann
- [rfc-i] ABNF Core Rule extensions Julian Reschke
- [rfc-i] ABNF Core Rule extensions Bjoern Hoehrmann
- [rfc-i] ABNF Core Rule extensions Julian Reschke
- [rfc-i] [Json] v3imp #8 Fragment tagging on sourc… Sean Leonard
- [rfc-i] ABNF Core Rule extensions Dave Crocker
- [rfc-i] ABNF Core Rule extensions Paul Kyzivat
- [rfc-i] ABNF Core Rule extensions Sean Leonard
- [rfc-i] ABNF Core Rule extensions Julian Reschke
- [rfc-i] ABNF Core Rule extensions Dave Crocker
- [rfc-i] ABNF Core Rule extensions Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] ABNF Core Rule extensions Dave Crocker
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Bjoern Hoehrmann
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] ABNF Core Rule extensions Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Bjoern Hoehrmann
- [rfc-i] ABNF Core Rule extensions Dave Crocker
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Riccardo Bernardini
- [rfc-i] ABNF Core Rule extensions Sean Leonard
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat
- [rfc-i] v3imp #8 Fragment tagging on sourcecode Paul Kyzivat