El Backus-Naur form (BNF)
Conocido también como Backus-Naur formalism, Backus normal form o Panini-Backus Form es una metasintaxis usada para expresar gramáticas libres de contexto.
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.
El BNF fue nombrado originalmente después de que John Backus y más adelante (con la sugerencia de Donald Knuth) también después de Peter Naur. Eran dos pioneros en informática, especialmente en el arte del diseño del compilador. La Backus-Naur Form o las gramáticas de BNF tiene semejanzas significativas a las reglas de la gramática de Pāṇini, y a veces también se conoce como Panini-Backus Form . El BNF fue creado como parte de crear las reglas para ALGOL 60.
Una especificación de BNF es un sistema de reglas de la derivación, escrito como
::=
donde es un noqnterminal, y la expresión consiste en secuencias de símbolos y/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.
Hay muchas variantes y extensiones de BNF, posiblemente conteniendo algunos o todos los comodines de expresiones regulares como un "*" o "+". El Extended Backus-Naur form (EBNF) es una variante común. De hecho el ejemplo anterior no es la forma pura inventada para el informe del ALGOL 60. La notación de los corchetes "[ ]" fue introducida algunos años más tarde en la definición de PL/I de la IBM pero ahora se reconoce universal. La ABNF es otra extensión usada comúnmente para describir protocolos del IETF.
Las expresiones gramaticales de analizadores sintácticos construidas en BNF y las notaciones de expresión regular para formar una clase alternativa de la gramática formal, que es esencialmente analítica más que generativa en carácter.
No hay comentarios.:
Publicar un comentario