ANÁLISIS SINTÁCTICO O GRAMATICAL
¿Qué es el analizador sintáctico?
Un analizador sintáctico (o parser) es una de las
partes de un compilador que transforma su entrada en un árbol de derivación. El
análisis sintáctico convierte el texto de entrada en otras estructuras
(comúnmente árboles), que son más útiles para el posterior análisis y capturan
la jerarquía implícita de la entrada.
Es la fase del analizador que se encarga de chequear
el texto de entrada en base a una gramática dada. Y en caso de que el programa
de entrada sea válido, suministra el árbol sintáctico que lo reconoce.
En teoría, se supone que la salida del analizador
sintáctico es alguna representación del árbol sintáctico que reconoce la
secuencia de tokens suministrada por el analizador léxico.
En la práctica, el analizador sintáctico también hace:
• Acceder a la tabla de símbolos (para hacer parte del
trabajo del analizador semántico).
• Chequeo de tipos (del analizador semántico).
• Generar
código intermedio.
• Generar errores cuando se producen.
En definitiva, realiza casi todas las operaciones de
la compilación. Este método de trabajo da lugar a los métodos de compilación
dirigidos por sintaxis.
Manejo de errores sintácticos:
Si un compilador tuviera que procesar sólo programas
correctos, su diseño e implantación se simplificarían mucho. Pero los
programadores a menudo escriben programas incorrectos, y un buen compilador
debería ayudar al programador a identificar y localizar errores. Es más,
considerar desde el principio el manejo de errores puede simplificar la
estructura de un compilador y mejorar su respuesta a los errores.
Los errores en la programación pueden ser de los
siguientes tipos:
• Léxicos, producidos al escribir mal un
identificador, una palabra clave o un operador.
• Sintácticos, por una expresión aritmética o
paréntesis no equilibrados.
• Semánticos, como un operador aplicado a un operando
incompatible.
• Lógicos, puede ser una llamada infinitamente
recursiva.
El manejo de errores de sintaxis es el más complicado
desde el punto de vista de la creación de compiladores. Nos interesa que cuando
el compilador encuentre un error, se recupere y siga buscando errores.
Por lo
tanto el manejador de errores de un analizador sintáctico debe tener como
objetivos:
• Indicar los errores de forma clara y precisa.
Aclarar el tipo de error y su localización.
• Recuperarse del error, para poder seguir examinando
la entrada.
• No ralentizar significativamente la compilación.
Un buen compilador debe hacerse siempre teniendo
también en mente los errores que se pueden producir; con ello se consigue:
• Simplificar la estructura del compilador.
• Mejorar la respuesta ante los errores.
La gramática que acepta el analizador sintáctico es
una gramática de contexto libre:
• Gramática: G (N, T, P, S)
N = No terminales.
T = Terminales.
P = Reglas de Producción.
S = Axioma Inicial.

HUMILDAD, CIENCIA Y HONESTIDAD.
No hay comentarios:
Publicar un comentario