Вы находитесь на странице: 1из 2

Universidad Catlica de Salta Facultad de Ingeniera e Informtica Carrera de Ingeniera en Informtica Ctedra de Compiladores Ao 2010

Anlisis semntico
[Louden Cap. 6; Aho 2.3 y cap. 5; Teufel 106-113] Revisa el programa fuente utilizando el rbol de anlisis sintctico (construido por el analizador sintctico) para: - tratar de encontrar errores semnticos - reunir la informacin sobre tipos, y en algunos casos verificar los tipos - construir la tabla de smbolos - preparar la generacin de cdigo A diferencia del anlisis sintctico, no hay mtodos estndar ni tanta teora para describir la sintaxis o los algoritmos de anlisis semntico. (Para el anlisis sintctico tenamos las gramticas independientes del contexto y una variedad de algoritmos descendentes y ascendentes.) Esto se debe a que los lenguajes de programacin son bastante diferentes entre s. Los procesos son ms ad-hoc y no hay herramientas estndar similares a LEX y YACC. Un mtodo Gramticas con atributos - identificar atrobutos (propiedades) de las entidades del lenguaje que deben ser calculadas ej. tipo de variables, ubicacin en memoria - escribir ecuaciones de esos atributos (tambin llamadas reglas semnticas) que relacionan el clculo de los atributos con las reglas de la gramtica utilizada para el anlisis sintctico A una gramtica con atributos tambin se denomina definicin dirigida por la sintaxis (hay pequeas diferencias entre los dos trminos que van ms all de lo que podemos considerar en clase). Esta denominacin proviene justamente de que las ecuaciones de atributos estn asociadas con las producciones del anlisis sintctico. Definicin dirigida por la sintaxis Utiliza la gramtica independiente del contexto. - A cada smbolo de esa gramtica le asocia un conjunto de atributos - A cada produccin le asocia un conjunto de reglas semnticas para calcular los valores de los atributos de los smbolos que aparecen en esa produccin. gramtica + reglas semnticas = definicin dirigida por la sintaxis Atributos Los valores de los atributos pueden - ser fijados antes de la ejecucin del programa objeto (es decir, durante la compilacin): static binding ej: tipo de una variable en Pascal El compilador es por tanto el encargado de calcular esos valores. - ser determinados en tiempo de ejecucin del programa objeto: dynamic binding ej: valor de una expresin o variable, ubicacin de una estructura de datos en memoria asignada dinmicamente El compilador se encarga de generar cdigo (parte del programa objeto) para calcular esos valores Ejemplos de atributos - atributo tipo de datos:

Universidad Catlica de Salta Facultad de Ingeniera e Informtica Carrera de Ingeniera en Informtica Ctedra de Compiladores Ao 2010

En C, Pascal: los tipos son estticos, es decir, el tipo de una variable se conoce en tiempo de compilacin. El verificador de tipos es (una parte del) analizador semntico que calcula el valor del atributo tipo para todas las entidades y lo verifica segn las reglas del lenguaje. Lisp: los tipos de datos son dinmicos, se calculan al ejecutar el programa. El compilador, en lugar de calcular los tipos, genera cdigo (en el programa objeto) que calcular los tipos durante la ejecucin.

- atributo valor de una expresin: normalmente es dinmico, es decir, se calcula al ejecutar el programa objeto. El compilador genera cdigo que calcular el valor de una variable o expresin en tiempo de ejecucin. Si estn involucradas slo constantes en la expresin, sta se puede calcular en tiempo de compilacin. Este proceso se llama constant folding. - atributo ubicacin de una variable en memoria: - puede ser esttico o dinmico, segn el lenguaje. o Fortran: todas estticas o Lisp: todas dinmicas o C, Pascal: mezcla (malloc permite la asignacin dinmica de memoria, por ejemplo para punteros) - dnde se ubica puede depender tambin de la arquitectura de la mquina en ejecucin - normalmente lo resuelve el generador de cdigo - atributo cdigo de un procedimiento: esttico, ya que se conoce en tiempo de compilacin. El valor lo calcula el generador de cdigo. Esta informacin se va almacenando en la tabla de smbolos. A veces los analizadores lxico y sintctico necesitan y manipulan este tipo de informacin, pero en general este proceso se corresponde con el momento entre el anlisis sintctico y la generacin de cdigo, y prepara sta ltima. Gramticas con atributos (o definicin dirigida por la sintaxis) Como vimos arriba, se asocian atributos a los T y NT de la gramtica independiente de contexto. Si X es un smbolo de la gramtica, y a es un atributo, X.a es el valor del atributo a asociado al smbolo X. Dada una regla de la gramtica 0 1 2 0 , 1 , 2 . depende de los valores de otros atributos del mismo smbolo o de otros smbolos que aparecen en la produccin. Ecuacin de atributos o regla semntica (asociada con la produccin) . = (0 . 1 0 . , 1 . 1 1 . , . 1 . ) La gramtica con atributos es una coleccin de tales ecuaciones para las producciones del lenguaje. Normalmente son funciones muy sencillas y dependen de pocos atributos. Se suelen presentar en forma de tabla. Producciones Reglas semnticas