3.
BNF:
La idea de
transcribir la estructura del lenguaje con reglas de reescritura se remontan
cuando menos al trabajo del gramático indio Panini
(hacia el 460 a. C.), que la utilizó en su
descripción de la estructura de palabras del idioma sánscrito (algunos incluso han sugerido
renombrar BNF a Forma Panini-Backus). Lingüïstas estadounidenses como Leonard
Bloomfield y Zellig Harris llevaron esta idea un paso más adelante al tratar de
formalizar el lenguaje y su estudio en términos de definiciones formales y
procedimientos (1920-1960).
Peter Naur,
en su reporte sobre ALGOL 60 de 1963, identificó la notación de Backus como la Forma Normal de Backus (Backus Normal
Form), y la simplificó para usar un conjunto de símbolos menor, pero a
sugerencia de Donald Knuth, su apellido fue agregado en
reconocimiento a su contribución, reemplazando la palabra "Normal"
por Naur, dado que no se trata de una forma normal en ningún sentido, a
diferencia, por ejemplo de la Forma Normal de Chomsky.
La notación de Backus-Naur, también
conocida por sus denominaciones inglesas Backus-Naur form (BNF),
Backus-Naur formalism o Backus normal form, es una metalenguaje
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.
El BNF es un metalenguaje muy utilizado para
definir la estructura sintáctica de un lenguaje de programación. Pero también
podría servir para describir enunciados en español. Usaremos este ejemplo para
explicar algunas de las reglas y la terminología de los lenguajes formales.
Presentando asi una breve introducción a las ideas de Noam Chomsky, quien
intento formalizar los lenguajes naturales. Por ejemplo, un enunciado en
español (E) consiste en una "frase nominal" (FN) y una "frase
verbal" (FV). En BNF, esto se describiría como: la forma de Backus – Naur
fue creada para definir la estructura del lenguaje de programación ALGOL60
4.
Análisis sintáctico:
Se
puede describir la sintaxis de las construcciones de los LP por medio de
gramáticas independientes del contexto o notación BNF.
Ø Una
gramática da una especificación sintáctica precisa y fácil de entender de un LP
Ø A
partir de algunas clases de gramáticas se puede construir automáticamente un
analizador sintáctico eficiente que determine si un programa fuente está
sintácticamente bien formado
Ø Una
gramática diseñada adecuadamente imparte una estructura a un lenguaje de
programación útil para la traducción de programas fuente a código objeto
correcto y para la detección de errores
Los
lenguajes evolucionan con el tiempo, adquiriendo nuevas construcciones y
realizando tareas adicionales
La función del analizador sintáctico
La
principal tarea del analizador sintáctico (o parser) no es comprobar que la
sintaxis del programa fuente sea correcta, sino construir una representación
interna de ese programa y, en el caso de
que sea un programa incorrecto, dar un mensaje de error.
No hay comentarios:
Publicar un comentario