analizador sintactico
TRANSCRIPT
PONTIFIA UNIVERSIDAD CATOLICA DEL ECUADOR SEDE IBARRA INGENIERIA EN SISTEMAS
Nombre: Marco Acosta
Nivel: 5to Nivel
Carrera: Sistemas
Fecha: 08/05/2014
ANALIZADOR SINTACTICO
El papel del analizador sintáctico es:
Comprobar que la secuencia de componentes léxicos cumple las reglas de la
gramática.
convierte el texto de entrada en otras estructuras (comúnmente árboles).
Análisis sintáctico ascendente y descendente
La tarea esencial de un analizador es determinar si una determinada entrada puede ser
derivada desde el símbolo inicial, usando las reglas de una gramática formal, y como hacer
esto, existen esencialmente dos formas:
Analizador sintáctico descendente (Top-Down-Parser): Un analizador puede empezar con el símbolo inicial e intentar transformarlo en la entrada,
intuitivamente esto sería ir dividiendo la entrada progresivamente en partes cada vez más
pequeñas, de esta forma funcionan los analizadores LL, un ejemplo es el javaCC.
Analizador sintáctico ascendente (Bottom-Up-Parser): Un analizador puede empezar con la entrada e intentar llegar hasta el símbolo inicial,
intuitivamente el analizador intenta encontrar los símbolos más pequeños y
progresivamente construir la jerarquía de símbolos hasta el inicial, los analizadores LR
funcionan así y un ejemplo es el Yacc.
Análisis semántico y tratamiento de errores. La fase de análisis semántico revisa el programa fuente para tratar de encontrar errores
semánticos y reúne la información sobre los tipos para la fase posterior de generación
Clasificación
Dinámica: Aspectos que solo pueden ser conocidos en tiempos de ejecución.
Estática: Aspectos que solo pueden ser controlados en tiempo de compilación.
Verificación de Tipos: el compilador verifica si cada operador tiene operandos permitidos
por la especificación del lenguaje fuente.
PONTIFIA UNIVERSIDAD CATOLICA DEL ECUADOR SEDE IBARRA INGENIERIA EN SISTEMAS
TRATAMIENTO DE ERRORES Los errores encontrados en las distintas fases de análisis se envían a un módulo denominado
manejo de errores. En el caso más sencillo puede ser un subprograma al que se le invoca
enviándole el código de error, y que se encarga de escribir un mensaje con el error
correspondiente, y el número de línea donde se ha producido, así como de cortar el proceso
de traducción.
TIPOS DE ERRORES Tipos de errores que suelen ocurrir (dependiendo de la fase):
Léxicos: No concuerda con ninguna ER.
Ejemplo: escribir mal una palabra clave
Sintácticos: La estructura que se ha seguido no es correcta.
Ejemplo: expresión con paréntesis no emparejados Semánticos: La estructura está bien pero hay errores de significado
Ejemplo: operador y operandos incompatibles.
Lógicos: Los comete el programador
Ejemplo: una llamada infinitamente recursiva
Árboles Sintácticos Es una clase especial de árbol, se le denomina Árbol Sintáctico es una forma condensada de
un árbol de análisis sintáctico, útil para representar instrucciones de lenguajes. Un árbol
sintáctico permite demostrar que una secuencia de caracteres es una determinada categoría
sintáctica. Llevan su nombre en base a la función que cumple, donde cada nodo representa
una operación y los hijos de un nodo son los argumentos de la operación.
Un árbol sintáctico puede cumplir tres funciones diferentes:
Comprobar el orden en que llegan los tokens (componente léxico es una cadena de caracteres)
Construir una representación del programa fuente.
Si es sintácticamente correcto generar el error
Un Árbol Sintáctico bien realizado se caracteriza por ser una representación abstracta que
va desde las sub-categorías hasta la categoría general, por constar de operadores en nodos
no terminales y operandos en nodos terminales.