Forma de Backus i Naur

La Forma de Backus i Naur o Forma de Backus-Naur o BNF és una notació que té com a finalitat descriure les regles sintàctiques dels llenguatges de programació.

Va ser concebuda per John W. Backus i Peter Naur arran de la creació del llenguatge Algol 60.

Inicialment coneguda com a Forma Normal de Backus, va esdevenir Forma de Backus-Naur per suggeriment de Donald Knuth.

Sintaxi

[modifica]

En BNF es distingeixen els meta-símbols, els terminals i els no-terminals.

  • Els meta-símbols són els símbols del llenguatge BNF
  • Els símbols terminals són símbols del llenguatge descrit
  • Els símbols no-terminals són les categories que descriuen les produccions vàlides del llenguatge descrit.

Exemples

[modifica]

Producció "if" del llenguatge C:

<estructura_if> ::= if "(" <condició> ")" "{" <codi> "}"

Variants

[modifica]

Hi ha moltes variants i extensions de BNF, possiblement contenint alguns o tots els comodins d'expressions regulars com un "*" o "+". El Extended Backus-Naur form (EBNF) és una variant comuna. De fet l'exemple anterior no és la forma pura inventada per a l'informe de l'ALGOL 60. La notació dels claudàtors "[ ]" va ser introduïda alguns anys més tard en la definició de PL/I de la IBM però ara es reconeix universal. L'ABNF és una altra extensió usada comunament per a descriure protocols del IETF.

Les expressions gramaticals d'analitzadors sintàctics construïdes en BNF i les notacions d'expressió regular per a formar una classe alternativa de la gramàtica formal, que és essencialment analítica més que generativa en caràcter.

Vegeu també

[modifica]

Enllaços externs

[modifica]
  • Univ. de Regensburg - BNF i altres especificacions gramaticals Arxivat 2007-05-05 a Wayback Machine. (anglès)