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]- 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
[modifica]- Univ. de Regensburg - BNF i altres especificacions gramaticals Arxivat 2007-05-05 a Wayback Machine. (anglès)