2. Rule Definition (Regeldefinition)
2.1. Rule Naming (Regelbenennung)
Der Name einer Regel ist einfach der Name selbst - eine Zeichenfolge, die mit einem alphabetischen Zeichen beginnt, gefolgt von einer Kombination aus Buchstaben, Ziffern und Bindestrichen.
Regelnamen sind nicht groß-/kleinschreibungsempfindlich.
Die Namen <rulename>, <Rulename>, <RULENAME> und <rUlENamE> beziehen sich alle auf dieselbe Regel.
Anders als im ursprünglichen BNF sind Winkelklammern ("<", ">") nicht erforderlich. Winkelklammern können jedoch um einen Regelnamen verwendet werden, wenn ihre Anwesenheit hilft, die Verwendung eines Regelnamens zu erkennen.
2.2. Rule Form (Regelform)
Eine Regel wird durch die folgende Sequenz definiert:
name = elements crlf
wobei <name> der Name der Regel ist, <elements> ein oder mehrere Regelnamen oder Terminalspezifikationen sind und <crlf> der Zeilenende-Indikator ist.
Das Gleichheitszeichen (=) trennt den Namen von der Definition der Regel. Die Elemente bilden eine Sequenz von einem oder mehreren Regelnamen und/oder Wertedefinitionen.
2.3. Terminal Values (Terminalwerte)
Regeln lösen sich in eine Zeichenfolge von Terminalwerten auf. In ABNF ist ein Zeichen lediglich eine nicht-negative Ganzzahl. Die Basis-Interpretation wird explizit angegeben:
b = binär
d = dezimal
x = hexadezimal
Daher:
CR = %d13 ; Wagenrücklauf in Dezimal
CR = %x0D ; Wagenrücklauf in Hexadezimal
Literale Textzeichenketten werden direkt in Anführungszeichen angegeben und sind nicht groß-/kleinschreibungsempfindlich.
Verkettete Werte
Eine verkettete Zeichenfolge wird kompakt mit einem Punkt (".") spezifiziert:
CRLF = %d13.10 ; Wagenrücklauf Zeilenvorschub Sequenz
Wertebereiche
Ein Wertebereich kann mit einem Bindestrich ("-") spezifiziert werden:
DIGIT = %x30-39 ; 0-9
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
2.4. External Encodings (Externe Kodierungen)
Externe Darstellungen von Terminalwertzeichen variieren je nach Speicher- oder Übertragungsumgebung. Die gleiche ABNF-basierte Grammatik kann mehrere externe Kodierungen haben. Anhang B liefert Definitionen für eine 7-Bit US-ASCII-Umgebung.