¿Para qué se utiliza la forma Backus-Naur?

El formulario Bakus-Naur se usa para describir la gramática (generalmente de lenguajes de programación). Fue introducido en la década de 1950 por John Backus, el diseñador principal del lenguaje de programación Fortran en IBM.

El propósito del formulario Bakus-Naur es describir un lenguaje de programación de una manera simple y concisa.

La estructura de este formulario es:
< No terminal > -> reemplazo
El reemplazo puede ser cualquier secuencia de cero o más no terminales o terminales.
Las terminales nunca aparecen en el lado izquierdo de una regla. Una vez que llegue a una terminal, no hay nada más con lo que pueda reemplazarla. Aquí hay un ejemplo que muestra cómo derivar una oración siguiendo las reglas de reemplazo:
Oración -> Objeto Verbo Objeto
-> Objeto de verbo sustantivo
-> I Objeto Verbo
-> Me gusta el objeto
-> Me gusta el sustantivo
-> Me gusta Python
Lo importante de una gramática de reemplazo es que podemos describir un lenguaje infinitamente grande con un pequeño conjunto de reglas precisas.

Un ejemplo de Python Grammar para hacer expresiones (la mayoría de los lenguajes de programación siguen este formulario)
Expresión -> Expresión Operador Expresión

La expresión no terminal que aparece en el lado izquierdo se puede reemplazar por una expresión, seguida de un operador, seguida de otra expresión. Por ejemplo, 1 + 1 es una Expresión Operador Expresión.

Referencia: nota de clase de la clase de informática de Udacity.

Se usa comúnmente para describir la sintaxis de lenguajes como los lenguajes de programación.

More Interesting

¿Cuál es el mejor sistema de archivos que funciona para los sistemas operativos Windows y Mac?

¿Cuál debería ser el rango mínimo en el JEE Advanced para obtener un asiento CS en el IIT superior?

¿Existen pequeños proyectos significativos en el aprendizaje automático?

¿Cuáles son las ventajas y desventajas de utilizar Google App Engine y Heroku en este momento?

¿Cuánto tiempo llevas trabajando en aprendizaje automático / inteligencia artificial?

¿Cuáles son algunos de los principales problemas no resueltos en robótica?

Si una placa base falla, ¿es posible iniciar el sistema informático o no?

¿Qué se entiende por ejecución, instalación, bat.exe, BCD, arranque, etc.?

Cómo crear una red neuronal para la detección de Alzheimer

¿Cómo se escala la aplicación de aprendizaje automático?

¿Puede una computadora ser lo suficientemente rápida como para detectar una bala en tiempo real? Imagine un círculo en el suelo y se dispara una bala desde fuera del círculo hacia él. ¿Sería una computadora lo suficientemente rápida como para detectar la bala dentro de un par de nanosegundos?

¿Cuál es una explicación intuitiva del problema de 'explicación' en modelos gráficos dirigidos?

Cómo insertar, actualizar y eliminar valores en filas con restricciones de clave externa en bases de datos relacionales

¿Qué hay de nuevo en la tecnología informática?

¿Qué métodos podrían haber utilizado las agencias de inteligencia para determinar que Rusia fue la fuente de los ataques de DNC?