Analizador sintactico

2
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.

Transcript of Analizador sintactico

Page 1: Analizador sintactico

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.

Page 2: Analizador sintactico

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.