Aller au contenu principal

1. Introduction

Les spécifications techniques Internet nécessitent souvent de définir une syntaxe formelle (Formal Syntax) et sont libres d'utiliser toute notation que leurs auteurs jugent utile. Au fil des années, une version modifiée de la forme de Backus-Naur (BNF, Backus-Naur Form), appelée BNF augmentée (ABNF, Augmented BNF), a été populaire parmi de nombreuses spécifications Internet. Elle équilibre la compacité et la simplicité avec un pouvoir de représentation raisonnable. Dans les premiers jours de l'Arpanet, chaque spécification contenait sa propre définition d'ABNF. Cela incluait les spécifications de courrier électronique, [RFC733] puis [RFC822], qui sont devenues les citations courantes pour définir ABNF. Le document actuel sépare ces définitions pour permettre une référence sélective. De manière prévisible, il fournit également quelques modifications et améliorations.

Les différences entre BNF standard et ABNF concernent les règles de nommage (Naming Rules), la répétition (Repetition), les alternatives (Alternatives), l'indépendance d'ordre (Order-Independence) et les plages de valeurs (Value Ranges). L'annexe B fournit des définitions de règles et un encodage pour un analyseur lexical de base (Core Lexical Analyzer) du type commun à plusieurs spécifications Internet. Il est fourni comme une commodité et est par ailleurs séparé du métalangage (Meta Language) défini dans le corps de ce document, et séparé de son statut formel.

Origines d'ABNF

ABNF est né du besoin d'une notation plus concise avec une plus grande puissance expressive que le BNF standard. Il a été utilisé pour la première fois dans RFC 733 (format de courrier électronique) et a ensuite été largement adopté dans RFC 822 (norme de courrier électronique).

Objectifs de conception

  • Compacité : La notation devrait être concise et lisible
  • Simplicité : Les règles devraient être intuitives
  • Expressivité : Capacité à exprimer des structures syntaxiques complexes
  • Cohérence : Système de notation unifié