martes, 31 de mayo de 2016

Análisis Semántico

Análisis Semántico.

¿Que es la semántica?

Se refiere a los aspectos del significado, sentido o interpretación del significado de un determinado elemento, símbolo, palabra, expresión o representación formal.



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 entre sí, etc. En definitiva, comprobará que el significado de lo que se va leyendo es válido.

El análisis semántico se realiza posteriormente al sintáctico y mucho más difícil de formalizar que éste.

La salida “teórica” de la fase de análisis semántico sería un árbol semántico.

¿Que es un árbol semántico?

Es una estructura jerárquica en la cual se registran las operaciones que implica u operan dentro del programa fuente.

En cada una de las ramas del  árbol semántico se registra el valor o significado que este debe tener, y el análisis semántico se encarga de terminar cual de los valores registrados en las ramas es aplicable.

Tabla de símbolos en esta fase.

Un compilador necesita guardar y usar la información de los objetos que se va encontrando en el texto fuente, como variables, etiquetas, declaraciones de tipos, etc.

Esta información se almacena en una estructura de datos interna conocida como tabla de símbolos.

El compilador debe desarrollar una serie de funciones relativas a la manipulación de esta tabla como consultar un elemento en ella, y consultar la información relacionada con un símbolo, etc.

Como se tiene que acceder mucho a la tabla de símbolos los accesos deben ser lo más rápidos posible para que la compilación sea eficiente.

Sistemas de tipo:

Es el conjunto de reglas que determinan el criterio para asignar expresiones de tipo a las diferentes partes del código fuente.
  • Tipo básico: entero, carácter, real, lógico 
  • 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 estáticos, como chequeos de tipos:
  • Consistencia: unicidad, existencia, no-ciclicidad, ... 
  • Equivalencia y compatibilidad de tipos 
  • Inferencia de tipos (en valores) 
  • Sobrecarga de funciones y operadores
COMPROBACIONES SEMÁNTICAS TIPOS

Comprobaciones ESTÁTICAS. 
  • Las comprobaciones sintácticas y semánticas. 
Comprobaciones DINÁMICAS. 
  • Realizadas en tiempo de ejecución.
COMPROBACIONES SEMÁNTICAS TIPOS

Comprobaciones SEMÁNTICAS
 
De TIPO.
Verificación del tipo de los operando en las expresiones.

De FLUJO de CONTROL.

Verifica los puntos del programa de salida y entrada del control.


COMPROBACIONES SEMÁNTICAS


De UNICIDAD. 

Verifica la presencia de símbolos de forma única. (ejemplo: declarar un símbolo una sólo vez).

 Relación de NOMBRES. 

Un mismo nombre puede aparecer más de una vez.

No hay comentarios:

Publicar un comentario