Forma de Backus i Naur

De Viquipèdia
Dreceres ràpides: navegació, cerca

La Forma de Backus i Naur o Forma de Backus-Naur o BNF és una notació que té per 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 | modifica el codi]

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 | modifica el codi]

Producció "if" del llenguatge C:

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

Variants[modifica | modifica el codi]

Hi ha moltes variants i extensions de BNF, possiblement contenint alguns o tots els comodins de 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 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 | modifica el codi]

Enllaços externs[modifica | modifica el codi]