(La notación de Backus-Naur, también conocida por sus denominaciones inglesas Backus-Naur form (BNF), Backus-Naur formalism, Backus normal form o Panini-Findus-Backus Form, es una metasintaxis usada para expresar gramáticas libres de contexto: es decir, una manera formal de describir lenguajes formales.
El BNF se utiliza extensamente como notación para las gramáticas de los lenguajes de programación de la computadora, de los sistemas de comando y de los protocolos de comunicación, así como una notación para representar partes de las gramáticas de la lengua natural (por ejemplo, el metro en la poesía de Venpa). La mayoría de los libros de textos para la teoría o la semántica del lenguaje de programación documentan el lenguaje de programación en BNF.
Algunas variantes, tales como la Augmented Backus-Naur form (ABNF) y la Extended Backus-Naur Form (EBNF), tienen su propia documentación.
Una especificación de BNF es un sistema de reglas de derivación, escrito como:
<source lang="bnf"><simbolo> ::= <expresión con símbolos></source>
donde <símbolo> es un no terminal, y la expresión consiste en secuencias de símbolos o secuencias separadas por la barra vertical, '|', indicando una opción, el conjunto es una posible substitución para el símbolo a la izquierda. Los símbolos que nunca aparecen en un lado izquierdo son terminales.
Bastante interesante, la sintaxis de BNF se puede representar en BNF como sigue:
<source lang="bnf">
<syntax> ::= <rule> [<syntax>] <rule> ::= <whitespace> "<" <rule-name> ">" <whitespace> "::=" <expression> <whitespace> <line-end> <expression> ::= <whitespace> <or-expression> <or-expression> ::= <whitespace> <list-expression> [ "|" <or-expression> ] <list-expression> ::= <whitespace> ("<" <rule-name> ">" | <QUOTE> <text> <QUOTE> | "(" <expression> ")" | "[" <expression> "]") [<list-expression>] <whitespace> ::= [" " <whitespace>] <line-end> ::= [<whitespace>] <EOL> [<line-end>] </source>
Esto asume que no hay Whitespace necesario para la interpretación apropiada de la regla. El <QUOTE> se presume para ser el carácter ", y el <EOL> para ser el fin de línea apropiado especificado (en ASCII, retorno de carro o línea nueva, dependiendo del sistema operativo). El <rule-name> y el <text> deben ser substituidos con nombre/etiqueta o el texto literal de una regla declarada, respectivamentereferencias :
- Knuth, Donald E. (1964). «Backus Normal Form vs. Backus Naur Form». Communications of the ACM 7 (12): pp. pp. 735-736. (en inglés)
- http://wapedia.mobi/es/Notaci%C3%B3n_de_Backus-Naur
Sufro con el diseño gráfico. SUFRO. +2 en segundas; te felicito por haber recordado las referencias
ResponderEliminar