| INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO |

Introducción | Contenido | Bibliografía

Introducción
Contenido
UNIDAD I
UNIDAD II Introducción 2.1 Estructura de un Compilador 2.1.1 Función del analizador léxico 2.1.2 Función del analizador sintáctico

2.1.3 Tabla de Símbolos

2.1.4 Función del analizador Semántico

2.1.5 Etapa de análisis

2.1.6 Etapa de Síntesis

UNIDAD III
UNIDAD IV
UNIDAD V
UNIDAD VI
UNIDAD VII
UNIDAD VIII
UNIDAD IX
PROBLEMARIO
Bibliografía

2.1.5 Etapa de Análisis

> En la etapa de análisis se controla que el texto fuente sea correcto en todos los sentidos, y se generan las estructuras necesarias para la generación de código. Esta etapa se forma a partir del analizador léxico, donde la cadena de caracteres que constituye el programa fuente se lee de izquierda a derecha y se agrupa en componentes léxicos, que son secuencias de caracteres que tienen un significado atómico; además el analizador léxico trabaja con la tabla de símbolos introduciendo en ésta los nombres de las variables.

> Por ejemplo los caracteres de la proposición de asignación:

> comisión = fijo + valor * 8 ;

> Se agruparían en los componentes léxicos siguientes:

> 1.- El identificador comisión.
> 2.- El símbolo de asignación ‘=’.
> 3.- El identificador fijo.
> 4.- El signo de suma ‘+’.
> 5.- El identificador valor.
> 6.- El signo de multiplicación ‘*’.
> 7.- El número 8.
> 8.- El símbolo de fin de sentencia ‘;’.

> Cada componente léxico se traduce a su categoría gramatical, y se le asocia alguna información, que puede ser un puntero a la tabla de símbolos donde se describe el identificador, o incluso un valor directo, como ocurre en el caso del literal 8. Así, cada componente se convierte en un par (categoría, atributo), y se actualiza la tabla de símbolos, esta secuencia de pares se le pasa a la siguiente fase de análisis.

> Nótese como los espacios en blanco que separan los caracteres de estos componentes léxicos normalmente se eliminan durante el análisis léxico, siempre y cuando la definición del lenguaje a compilar así lo aconseje, como ocurre en C, lo mismo pasa con los tabuladores innecesarios y con los retornos de carro, los comentarios, ya estén anidados o no, también son eliminados.

> También incluye el analizador sintáctico que trabaja con una gramática de contexto libre y genera el árbol sintáctico que reconoce su sentencia de entrada.

> En nuestro caso las categorías gramaticales del análisis léxico son los terminales de la gramática. Para el ejemplo que nos ocupa podemos partir de la gramática:

> S → <ID> <ASIG> expr <TERM>
> expr → <ID>
> | <ID> <+> expr
> | <ID> <*> expr
> | <NUM>

> De manera que el análisis sintáctico intenta generar un árbol sintáctico que encaje con la sentencia de entrada.

> El análisis semántico, revisa el árbol sintáctico junto con los atributos y la tabla de símbolos para tratar de encontrar errores semánticos. Para todo esto se analizan los operadores y operandos de expresiones y proposiciones, la cual, finalmente reúne la información necesaria sobre los tipos de datos para la fase posterior de generación de código.

> El componente más importante del análisis semántico es la verificación de tipos, en donde el compilador verifica si los operandos de cada operador son compatibles según la especificación del lenguaje fuente. Si suponemos que nuestro lenguaje solo trabaja con números reales, la salida de esta fase sería su mismo árbol, excepto porque el atributo de <NUM>, que era el entero 8 a la entrada, ahora pasaría a ser el real 8,0. Además se ha debido controlar que las variables implicadas en la sentencia, a saber, comisión, fijo y valor son compatibles con el tipo numérico de la constante 8,0.

> Atrás Siguiente

##### Introducción / Contenido / Unidad I / Unidad II / Unidad III / Unidad IV / Unidad V / Unidad VI / Unidad VII / Unidad VIII / Unidad IX / Problemario / Bibliografía

##### Inicio

##### Créditos

José Sánchez Juárez, Andrés Ortigoza Campos, Fabiola Ocampo Botello