ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Análisis Semántico


Enviado por   •  25 de Marzo de 2015  •  1.089 Palabras (5 Páginas)  •  264 Visitas

Página 1 de 5

Análisis Semántico

El análisis semántico se realiza después del sintáctico y es mucho más difícil de formalizar que éste. 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. Comprobará que el significado de lo que se va leyendo es válido. La fase de análisis semántico revisa el tipo de los resultados intermedios, comprobar que los argumentos que tienen los operadores pertenecen al conjunto de operadores posibles, si son compatibles entre sí y verifica la conversión de tipos del programa; analiza el programa fuente para encontrar errores de tipo semántico, manejarlos y reunir información sobre los tipos utilizando el árbol sintáctico de la fase anterior.

En compiladores de un solo paso, las llamadas a las rutinas semánticas se realizan directamente desde el analizador sintáctico y son dichas rutinas las que llaman al generador de código. El instrumento más utilizado para conseguirlo es la gramática de atributos. El análisis semántico es posterior al sintáctico y mucho más difícil de formalizar que éste. 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. La salida “teórica” de la fase de análisis semántico sería un árbol semántico. Consiste en un árbol sintáctico en el que cada una de sus ramas ha adquirido el significado que debe tener. En el caso de los operadores polimórficos (un único símbolo con varios significados), el análisis semántico determina cuál es el aplicable. Por ejemplo, consideremos la siguiente sentencia de asignación: A:=B+C En Pascal, el signo “+” sirve para sumar enteros y reales, concatenar cadenas de caracteres y unir conjuntos. El análisis semántico debe comprobar que B y C sean de un tipo común o compatible y que se les pueda aplicar dicho operador. Si B y C son enteros o reales los sumará, si son cadenas las concatenará y si son conjuntos calculará su unión.

Se encarga de analizar y comprobar

• Ajuste significativo

• Comprobación de tipos: operandos-operadores

• Comprobación del flujo de control, ejemplo:

for(;;)

{

break;

w=a+2;

}

• Comprobación de unicidad:

• int a;

• char a; //una sola vez

• Comprobación relacionadas con nombres

• Tabla de símbolos:

• Estructura en memoria

• Almacena información sobre los tipos

• Sistemas de tipo:

• 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();.

• Sistema de tipos: conjunto de reglas que determinan el criterio para asignar expresiones de tipo a las diferentes partes del código fuente.

• Cada analizador semántico implementa un sistema de tipos

• Comprobación dinámica y estática

• Estática: compilación

• Dinámica: Ejecución char a[5]; strcpy(a, “abcdefghijk”);

Este tipo de analizador puede ser:

• Fuertemente tipificado

• Débilmente tipificado

Verificación de tipos en expresiones

La verificación de los tipos de datos se hace asignando el valor de tipo de cada una de los componentes léxicos. Estos valores se comparan para verificar que los tipos de datos coincidan y sean congruentes, de lo contrario no se pueden realizar los cálculos. Es el proceso que permite asegurar que un programa obedece a las reglas en el sistema de compatibilidad especificada en el sistema de tipos del lenguaje. Esto quiere decir que por medio de la verificación

...

Descargar como (para miembros actualizados) txt (8 Kb)
Leer 4 páginas más »
Disponible sólo en Clubensayos.com