b'\n_START_ARTICLE_\nNotaci\xc3\xb3n de Backus-Naur\n_START_PARAGRAPH_\nLa notaci\xc3\xb3n de Backus-Naur, tambi\xc3\xa9n conocida por sus denominaciones inglesas Backus-Naur form (BNF), Backus-Naur formalism o Backus normal form, es un metalenguaje usado para expresar gram\xc3\xa1ticas libres de contexto: es decir, una manera formal de describir lenguajes formales._NEWLINE_El BNF se utiliza extensamente como notaci\xc3\xb3n para las gram\xc3\xa1ticas de los lenguajes de programaci\xc3\xb3n, de los sistemas de comando y de los protocolos de comunicaci\xc3\xb3n, as\xc3\xad como una notaci\xc3\xb3n para representar partes de las gram\xc3\xa1ticas de la lengua natural (por ejemplo, el metro en la poes\xc3\xada de Venpa). La mayor\xc3\xada de los libros de textos para la teor\xc3\xada o la sem\xc3\xa1ntica del lenguaje de programaci\xc3\xb3n documentan el lenguaje de programaci\xc3\xb3n en BNF. _NEWLINE_Algunas variantes, tales como la Augmented Backus-Naur Form (ABNF) y la Extended Backus\xe2\x80\x93Naur Form (EBNF), tienen su propia documentaci\xc3\xb3n.\n_START_SECTION_\nHistoria\n_START_PARAGRAPH_\nLa idea de transcribir la estructura del lenguaje con reglas de reescritura se remontan cuando menos al trabajo del gram\xc3\xa1tico indio Panini (hacia el 460\xc2\xa0a.\xc2\xa0C.), que la utiliz\xc3\xb3 en su descripci\xc3\xb3n de la estructura de palabras del idioma s\xc3\xa1nscrito (algunos incluso han sugerido renombrar BNF a Forma Panini-Backus). Ling\xc3\xbcistas estadounidenses como Leonard Bloomfield y Zellig Harris llevaron esta idea un paso m\xc3\xa1s adelante al tratar de formalizar el lenguaje y su estudio en t\xc3\xa9rminos de definiciones formales y procedimientos (1920-1960). _NEWLINE_Noam Chomsky, maestro de ling\xc3\xbc\xc3\xadstica de alumnos de teor\xc3\xada de la informaci\xc3\xb3n del MIT, combin\xc3\xb3 la ling\xc3\xbc\xc3\xadstica y las matem\xc3\xa1ticas, tomando esencialmente el formalismo de Axel Thue como la base de su descripci\xc3\xb3n de la sintaxis del lenguaje natural. Tambi\xc3\xa9n introdujo una clara distinci\xc3\xb3n entre reglas generativas (de la gram\xc3\xa1tica libre de contexto) y reglas transformativas (1956)._NEWLINE_John Backus, un dise\xc3\xb1ador de lenguajes de programaci\xc3\xb3n de IBM, adopt\xc3\xb3 las reglas generativas de Chomsky para describir la sintaxis del nuevo lenguaje de programaci\xc3\xb3n IAL, conocido en la actualidad como ALGOL 58 (1959), presentando en el primer Congreso de Computaci\xc3\xb3n Mundial (World Computer Congress) el art\xc3\xadculo \xc2\xabThe syntax and semantics of the proposed international algebraic language of the Zurich ACM-GAMM Conference\xc2\xbb._NEWLINE_Peter Naur, en su reporte sobre ALGOL 60 de 1963, identific\xc3\xb3 la notaci\xc3\xb3n de Backus como la Forma Normal de Backus (Backus Normal Form), y la simplific\xc3\xb3 para usar un conjunto de s\xc3\xadmbolos menor, pero a sugerencia de Donald Knuth, su apellido fue agregado en reconocimiento a su contribuci\xc3\xb3n, reemplazando la palabra \xc2\xabNormal\xc2\xbb por Naur, dado que no se trata de una forma normal en ning\xc3\xban sentido, a diferencia, por ejemplo de la Forma Normal de Chomsky.\xe2\x80\x8b\n_START_SECTION_\nIntroducci\xc3\xb3n\n_START_PARAGRAPH_\nUna especificaci\xc3\xb3n de BNF es un sistema de reglas de derivaci\xc3\xb3n, escrito como:_NEWLINE_<simbolo> ::= <expresi\xc3\xb3n con s\xc3\xadmbolos>_NEWLINE_donde <s\xc3\xadmbolo> es un no terminal, y la expresi\xc3\xb3n consiste en secuencias de s\xc3\xadmbolos o secuencias separadas por la barra vertical, \'|\', indicando una opci\xc3\xb3n, el conjunto es una posible substituci\xc3\xb3n para el s\xc3\xadmbolo a la izquierda. Los s\xc3\xadmbolos que nunca aparecen en un lado izquierdo son terminales.\n_START_SECTION_\nOtros ejemplos\n_START_PARAGRAPH_\nBastante interesante, la sintaxis de BNF se puede representar en  BNF como sigue:_NEWLINE_ <syntax> ::= <rule> [<syntax>]_NEWLINE_ <rule> ::= <whitespace> "<" <rule-name> ">" <whitespace> "::="   _NEWLINE_    <expression> <whitespace> <expression> ")" | "[" <expression>  _NEWLINE_    "]") [<list-expression>]_NEWLINE_ <whitespace> ::= [" " <whitespace>]_NEWLINE_ <line-end> ::= [<whitespace>] <EOL> [<line-end>]_NEWLINE_Esto asume que no hay Whitespace necesario para la interpretaci\xc3\xb3n apropiada de la regla. El <QUOTE> se presume para ser el car\xc3\xa1cter ", y el <EOL> para ser el fin de l\xc3\xadnea apropiado especificado (en ASCII, retorno de carro o l\xc3\xadnea 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, respectivamente.'