Sie sind auf Seite 1von 4

ANLISIS SEMANTICO

En el anlisis semntico se detectan errores relacionados con la validez del


programa. Se puede decir que estos errores son de tipo sintctico-semntico, pero
no pueden ser detectados por el analizador sintctico, ya que se relacionan con
interdependencias entre las diferentes partes de un programa que no son reflejadas
en un anlisis gramatical. El analizador semntico recibe la informacin resultado
del anlisis sintctico que puede ser un rbol jerrquico con la informacin relativa
a la organizacin de los tokens en la instruccin que se esta analizando.
Ejemplo de errores que pueden ser detectados en el proceso de anlisis
semntico son los casos de compatibilidad entre la declaracin de un identificador
y su uso (chequeo de tipos), la concordancia entre la definicin de una funcin y
su activacin o llamada, etc.
Ejemplo: id1 = id2 + id3 * 7
Durante el anlisis semntico de un lenguaje de fuerte chequeo de tipos el
rbol sintctico debe ser modificado para reflejar el anlisis de los tipos de los
datos. Note que haciendo un chequeo de tipos la constante 7, al ser una constante
entera debe ser convertida a real para poder ser operada y las dems variables no
tienen dificultad alguna para ser utilizadas al ser todas reales.
El anlisis semntico se trata de determinar el tipo de los resultados intermedios,
comprobar que los argumentos que tiene un operador pertenecen al conjunto de los
operadores posibles, y si son compatibles ente si, etc. En definitiva, comprobar
que el significado do lo que se va leyendo es vlido.
El anlisis semntico se realiza posteriormente al sintctico y mucho mas difcil de
formalizar que ste.
La salida terica de la fase de anlisis semantico seria un rbol semntico.

QU ES UN RBOL SEMNTICO?
Es una estructura jerrquica en la cual se registran las operaciones que implica
u opera dentro del programa fuente.

En cada una de las ramas del rbol semntico se registra el valor o significado que
este debe tener, y el anlisis se encarga de terminar cual de los valores registrados
en las ramas es aplicable.
Ejemplo: Suponiendo que tenemos esta lnea de cdigo en C:
res = valor1 + valor2;
En C el smbolo (+) implica una suma de valores o una unin de las cadenas.
El anlisis semntico se va a encargar que tanto el valor1 como el valor2 tengan
datos que son compatibles en comn y que adems se les pueda aplicar dicho
operador

TABLA DE SMBOLOS
Un compilador necesita guardar y usar la informacin de los objetos que se va
encontrando en el texto fuente, como variables, etiquetas, declaraciones de tipos,
etc.
Esta informacin se almacena en una estructura de datos interna conocida como
tabla de smbolos.

El compilador debe desarrollar una serie de funciones relativas a la manipulacin


de esta tabla como insertar un nuevo elemento en ella, consultar la informacin
relacionada con un smbolo, borrar un elemento, etc. Como se tiene que acceder
mucho a la tabla de smbolos los accesos deben ser lo ms rpidos posible para
que la compilacin sea eficiente.

SISTEMAS DE TIPO
Es el conjunto de reglas que determinan el criterio para asignar expresiones de
tipo a las diferentes partes del cdigo fuente.

Tipo bsico: entero, carcter, real, lgico

Nombres de tipo

Constructores de tipo: estructuras, uniones, objetos

Apuntadores: referencias a tipos

Funciones a=suma();

Chequeos de tipos (y otros)

Un compilador debe realizar una serie de chequeos estticos, como chequeos de


tipos:

Consistencia: unicidad, existencia, no-ciclicidad, ...

Equivalencia y compatibilidad de tipos

Conversin explcita [cast] o forzada [coercion]

Inferencia de tipos (en valores)

Sobrecarga de funciones y operadores

COMPROBACIONES SEMNTICAS

Comprobaciones ESTTICAS. Las comprobaciones sintcticas y semnticas.

Comprobaciones DINMICAS. Realizadas en tiempo de ejecucin.

Comprobaciones SEMNTICAS

v De TIPO. Verificacin del tipo de los operandos en las expresiones.


v De FLUJO de CONTROL. Verifica los puntos del programa de salida y entrada del
control.
v De UNICIDAD. Verifica la presencia de smbolos de forma nica. (ejemplo: declarar
un smbolo una sola vez).
v Relacin de NOMBRES. Un mismo nombre puede aparecer ms de una vez.

REPRESENTACIONES INTERNAS
Intermedias entre frontal [front-end] y dorsal [back-end], permiten desacoplar los
diseos de unos y otros. Orientadas a: Su optimizacin (instrucciones claras y
simples). Generar cdigo de distintas mquinas objeto y el diseo debe permitir su
fcil generacin por el analizador semntico.

Das könnte Ihnen auch gefallen