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 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 Producció "if" del llenguatge C: <estructura_if> ::= if "(" <condició> ")" "{" <codi> "}"
Variants 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é Ashtadhyayi (Gramàtica en sànscrit amb estructura matemàtica) Frasejada GOLD BNF Generador de Frasejada Yacc GNU bison Versió GNU del Yacc
Enllaços externs Univ. de Regensburg - BNF i altres especificacions gramaticals
Categoria:Llenguatges formals