RFC Errata
RFC 8259, "The JavaScript Object Notation (JSON) Data Interchange Format", December 2017
Source of RFC: jsonbis (art)
Errata ID: 7650
Status: Reported
Type: Technical
Publication Format(s) : TEXT
Reported By: Lucas Tesson
Date Reported: 2023-09-20
Section 7 says:
string = quotation-mark *char quotation-mark char = unescaped / escape ( %x22 / ; " quotation mark U+0022 %x5C / ; \ reverse solidus U+005C %x2F / ; / solidus U+002F %x62 / ; b backspace U+0008 %x66 / ; f form feed U+000C %x6E / ; n line feed U+000A %x72 / ; r carriage return U+000D %x74 / ; t tab U+0009 %x75 4HEXDIG ) ; uXXXX U+XXXX
It should say:
string = quotation-mark *json-char quotation-mark json-char = unescaped / escape ( %x22 / ; " quotation mark U+0022 %x5C / ; \ reverse solidus U+005C %x2F / ; / solidus U+002F %x62 / ; b backspace U+0008 %x66 / ; f form feed U+000C %x6E / ; n line feed U+000A %x72 / ; r carriage return U+000D %x74 / ; t tab U+0009 %x75 4HEXDIG ) ; uXXXX U+XXXX
Notes:
RFC 5234 Section 2.1 "Rule Naming" notes that "rule names are case insensitive". It is explained that literal text strings enclosed in quotation marks are case insensitive, and have later been clarified by RFC 7405.
In RFC 5234 Appendix B, Section B.1 "Core Rules", the rule "CHAR" is already defined such that it constitutes the core of ABNF, thus no grammar can use those names regarding the previous explanation.
The goal of this errata is to propose an alternative for the "char" rule such that RFC 8259 can provide a valid grammar regarding the ABNF RFCs.