Académique Documents
Professionnel Documents
Culture Documents
EL ANLISIS SEMNTICO
OBJETIVO GENERAL: Analizar y aplicar la manera como trabaja el
compilador en la fase donde realiza el anlisis semntico para comprender la
forma de optimizar los procesos de ejecucin de diferentes programas y
aplicaciones.
OBJETIVOS EPECFICOS.
Conocer la forma que trabaja el analizador semntico de un compilador
Estudiar el anlisis semntico de los compiladores
Aplicar la manera lgica en el cual trabajan los analizadores semnticos
de los compiladores
En esta unidad analizamos la fase del compilador que calcula la informacin
adicional necesaria para la compilacin una vez que se conoce la estructura
sintctica de un programa. Esta fase se conoce como anlisis semntico
debido a que involucra el clculo de informacin que rebasa las capacidades
de las gramticas libres de contexto y los algoritmos de anlisis sintctico
estndar, por lo que no se considera como sintaxis. La informacin calculada
tambin est estrechamente relacionada con el significado final, o semntica,
del programa que se traduce. Como el anlisis que realiza un compilador es
esttico por definicin (tiene lugar antes de a ejecucin), dicho anlisis
semntico tambin se conoce como anlisis semntico esttico. En un lenguaje
tpico estticamente tipificado como C, el anlisis semntico involucra a
construccin de una tabla de smbolos para mantenerse al tanto de los
significados de nombres establecidos en declaraciones e inferir tipos y
verificarlos en expresiones y sentencias con el fin de determinar su exactitud
dentro de las reglas de tipos del lenguaje.
El anlisis semntico se puede dividir en dos categoras. La primera es el
anlisis de un programa que requiere las reglas del lenguaje de programacin
para establecer su exactitud y garantizar una ejecucin adecuada. La
X1 X2 . . Xn
Por lo general, las gramticas con atributos se escriben en forma tabular, con
cada regla gramatical enumerada con el conjunto de ecuaciones de atributo, o
reglas semnticas asociadas con esa regla de la manera siguiente:
Regla gramatical
Reglas semnticas
Regla 1
Regla 2
Regla 3
Regla 4
Regla n
Ejemplos
.
Consideremos la siguiente gramtica simple para nmeros sin signo:
nmero
dgito
0 |1|2|3|4|5|6|7|8|9
implica
que dgito tiene valor O en este caso. Esto se puede expresar mediante la
ecuacin de atributo dgito.val = O, y asociamos e ecuacin con la regla dgito
O. Adems, cada nmero tiene un valor basado en el dg que contiene.
Si un nmero se deriva utilizando la regla.
Nmero
dgito
nmero dgito
nmero2 dgito
Ahora considere un nmero como 34. Una derivacin (por la izquierda) de este
nmero es de la manera siguiente: nmero
dgito
nmero1
nmero dgito
dgito
Regla gramatical
Reglas semnticas
numero1
numero2digito
numero1.val=numero2.val*10+digito.val
numero
digito
digito
digito.val = 0
digito
digito.val = 1
digito
digito.val = 2
digito
digito.val = 3
digito
digito.val = 4
digito
digito.val = 5
digito
digito.val = 6
digito
digito.val = 7
digito
digito.val = 8
digito
digito.val = 9
numero.val=digito.val
ACTIVIDADES
1. Realice un anlisis profundo de los anlisis semnticos, mirando sus
caractersticas ms importantes y discuta las conclusiones con su tutor.
2. Realice un programa en C++, donde se lean la fecha de un da entre el
ao 0 y el ao n positivo, y como resultado de la fecha del da siguiente
con el respectivo da de la semana.
Ejemplo:
Entrada:
19/07/2007
Salida:
Viernes 20/07/2007