Aller au contenu principal

4. ABNF Definition of ABNF (Définition ABNF d'ABNF)

Cette section fournit la définition ABNF d'ABNF lui-même. La syntaxe est définie en utilisant la notation ABNF.

rulelist       =  1*( rule / (*c-wsp c-nl) )

rule = rulename defined-as elements c-nl
; continue si la ligne suivante
; commence par un espace blanc

rulename = ALPHA *(ALPHA / DIGIT / "-")

defined-as = *c-wsp ("=" / "=/") *c-wsp
; définition de règles de base et
; alternatives incrémentales

elements = alternation *c-wsp

c-wsp = WSP / (c-nl WSP)

c-nl = comment / CRLF
; commentaire ou nouvelle ligne

comment = ";" *(WSP / VCHAR) CRLF

alternation = concatenation
*(*c-wsp "/" *c-wsp concatenation)

concatenation = repetition *(1*c-wsp repetition)

repetition = [repeat] element

repeat = 1*DIGIT / (*DIGIT "*" *DIGIT)

element = rulename / group / option /
char-val / num-val / prose-val

group = "(" *c-wsp alternation *c-wsp ")"

option = "[" *c-wsp alternation *c-wsp "]"

char-val = DQUOTE *(%x20-21 / %x23-7E) DQUOTE
; chaîne entre guillemets de SP et VCHAR
; sans DQUOTE

num-val = "%" (bin-val / dec-val / hex-val)

bin-val = "b" 1*BIT
[ 1*("." 1*BIT) / ("-" 1*BIT) ]
; série de valeurs de bits concaténées
; ou plage ONEOF unique

dec-val = "d" 1*DIGIT
[ 1*("." 1*DIGIT) / ("-" 1*DIGIT) ]

hex-val = "x" 1*HEXDIG
[ 1*("." 1*HEXDIG) / ("-" 1*HEXDIG) ]

prose-val = "<" *(%x20-3D / %x3F-7E) ">"
; chaîne entre crochets de SP et VCHAR
; sans angles
; description en prose, à utiliser en
; dernier recours

Remarques sur la définition ABNF

La définition ABNF d'ABNF démontre la nature auto-descriptive de la notation. Les règles montrent comment la syntaxe ABNF est formellement définie en utilisant ABNF lui-même.

Observations clés :

  • Les règles sont définies en utilisant les mêmes opérateurs qu'elles décrivent
  • La notation est récursive et auto-référentielle
  • Cela fournit une spécification formelle du métalangage ABNF