Aller au contenu principal

4. Définition ABNF de l'ABNF

NOTES:

  1. Cette syntaxe exige une mise en forme des règles relativement stricte. Par conséquent, la version d'un ensemble de règles incluse dans une spécification peut nécessiter un prétraitement pour garantir qu'elle puisse être interprétée par un analyseur ABNF.

  2. Cette syntaxe utilise les règles fournies à l'annexe B.

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

      rule           =  rulename defined-as elements c-nl
                             ; continues if next line starts
                             ;  with white space

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

      defined-as     =  *c-wsp ("=" / "=/") *c-wsp
                             ; basic rules definition and
                             ;  incremental alternatives

      elements       =  alternation *c-wsp

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

      c-nl           =  comment / CRLF
                             ; comment or newline

      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
                             ; quoted string of SP and VCHAR
                             ;  without DQUOTE

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

      bin-val        =  "b" 1*BIT
                        [ 1*("." 1*BIT) / ("-" 1*BIT) ]
                             ; series of concatenated bit values
                             ;  or single ONEOF range

      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) ">"
                             ; bracketed string of SP and VCHAR
                             ;  without angles
                             ; prose description, to be used as
                             ;  last resort