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

El anlisis semntico se realiza despus del sintctico y es ms difcil de formalizarque ste.

Se
trata de determinar el tipo de los resultados intermedios, comprobar quelos argumentos que
tiene un operador pertenecen al conjunto de los operadoresposibles, y si son compatibles
entre s, es decir, comprobar que el significado de loque se va leyendo es vlido.El anlisis
semntico utiliza como entrada el rbol sintctico detectado paracomprobar restricciones de
tipo y otras limitaciones semnticas y preparar lageneracin de cdigo.
La salida terica de la fase de anlisis semntico sera un rbol semntico. Consiste
en un rbol sintctico en el que cada una de sus ramas ha adquirido el significado quedebe
tener. En el caso de los operadores polimrficos (un nico smbolo con variossignificados), el
anlisis semntico determina cul es el aplicable. Por ejemplo,consideremos la siguiente
sentencia de asignacin:A := B + C
En Pascal, el signo + sirve para sumar enteros y reales, concatena
r cadenas decaracteres y unir conjuntos. El anlisis semntico debe comprobar que B y C sean
deun tipo comn o compatible y que se les pueda aplicar dicho operador. Si B y C sonenteros o
reales los sumar, si son cadenas las concatenar y si son conjuntoscalcular su unin.
Acciones semnticas
Dependiendo del tipo de sentencias, las acciones semnticas pueden agruparse en:
Sentencias de Declaracin: completar la seccin de tipos de la Tabla de Smbolos.
Sentencias ejecutables: realizar comprobaciones de tipos entre los operandos implicados.
Funciones y procedimientos: comprobar el nmero, orden y tipo de los parmetros actuales
en cada llamada a una funcin o procedimiento.
Identificacin de variables: comprobar si identificador ha sido declarado antes de utilizarlo.
Etiquetas: comprobar si hay etiquetas repetidas y validacin.
Constantes: comprobar que no se utilicen en la parte izquierda de una asignacin.
Conversiones y equivalencias de tipo: verificacin.
Sobrecarga de operadores y funciones: detectar y solventar.



TABLA DE SIMBOLOS
La tabla de smbolos permite que al analizador lxico devuelva un token distinto segn la
categora del identificador en este contexto. Esta tabla va conteniendo un registro por cada
identificador definido/declarado por el programador, aadindose informacin asociada:
Registra del identificador (maysculas y minsculas).
Categora: variable, constante, tipo, campo, procedimiento, funcin, parmetro, clase,
etiqueta, modulo, macro, etc.
A que mbito pertenece (profundidad).



ESTRUCTURA DE LA TABLA DE SIMBOLOS
A. LOGICA: viene determinada por:

El tipo de mbito (esttico o dinmico)
Los mecanismos de mbito del lenguaje:
Procedimientos, bloques, herencia, mdulos, espacios de nombres, registros, witch,.
Si se da ms de una pasada.
Compilacin separada: ficheros con tablas.

B. IMPLEMENTACION FISICA: ms eficiente suele ser la de una tabla de hash, asociada a pila
de mbitos activos.
Truco: mover (insertar, al menos) el elemento actual a la cabeza de la lista.

C. LAS RISTRAS: (identificadores, constantes) pueden ir en lista(s) aparte.

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 explicita [cast] o forzada [coercion].
Inferencia de tipos (en valores).
Sobrecarga de funciones y operadores.
Funciones polimrficas.

DEFINICIONES DE TIPOS
Tambin llamadas expresiones de tipos, en las que el programador desarrolla los
componentes de la estructura. CUESTIONES:
1) Puede ser conveniente construir un rbol/grafo:
En caso de equivalencias estructural
Para comprobacin de no-ciclicidad:
Type a=b; b=a;
2) (Descomponer en) tipos annimos.
Las definiciones incompletas (declaraciones) son necesarias para definiciones recursivas:
entrada en tabla provisionalmente vaca para tipo base.

Вам также может понравиться