ANALIZADOR
SEMÁNTICO
INGENIERIA DE SISTEMAS
INTRODUCCIÓN
Los programas que se compilan no son solamente cadenas de símbolos sin significado alguno que pueden ser
aceptadas como correctas o no por una máquina abstracta. El lenguaje no es más que el vehículo por el cual
se intenta transmitir una serie de instrucciones a un procesador para que éste las ejecute produciendo unos
resultados. Por ello, la tarea del compilador requiere la extracción del contenido semántico incluido en las
distintas sentencias del programa.
El Análisis Semántico es aquél que estudia a las palabras en
función de su significado.
EL
ANÁLISIS
SEMÁNTIC
O Un componente importante del análisis semántico es la
verificación de tipos. Aquí, el compilador verifica si cada
operado tiene operandos permitidos por la especificación del
lenguaje fuente.
✓ Identificar cada tipo de instrucción y sus componentes.
✓ Completar la Tabla de Símbolos.
FUNCIONES
✓ Realizar distintas comprobaciones y validaciones.
PRINCIPAL
ES ✓ Lenguaje natural
✓ Especificación formal:
• Semántica Operacional
• Semántica denotacional
• Semántica Axiomática
• Gramáticas con Atributos
ÁRBOL SEMÁNTICO
Es una estructura jerárquica en la cual se
registran las operaciones que implica u
opera dentro del programa fuente, en cada
una de las ramas del árbol se registra el
valor o significado que este debe tener y
el análisis analiza cuál de los valores
registrado en las ramas es aplicable.
Los árboles de expresiones representan el
código de nivel del lenguaje en forma de
datos. Los datos se almacenan en una
estructura con forma de árbol. Cada nodo
del árbol de expresión representa una
expresión.
RECORRIDOS EN ÁRBOLES
Preorden Postorden
En este tipo de recorrido se realiza cierta En este caso se trata primero el hijo
acción (quizás simplemente imprimir por izquierdo, después el derecho y por último el
pantalla el valor de la clave de ese nodo) nodo actual.
sobre el nodo actual y posteriormente se
trata el hijo izquierdo y cuando se haya
concluido, el hijo derecho.
RECORRIDOS EN ÁRBOLES
Inorden Amplitud
En este caso se trata primero el hijo En este caso el recorrido se realiza en
izquierdo, después el nodo actual y por orden por los distintos niveles del árbol.
último el hijo derecho. Así, se comenzaría tratando el nivel 1, que
sólo contiene el nodo raíz, seguidamente
el nivel 2, el 3 y así sucesivamente.
ACCIONES SEMÁNTICAS
Funciones y procedimientos
u t a b les
Sentenc
ci as e jec
ias de D
e claració
n
Senten
Identifi Constantes
cación
de var Sobrecarga de funciones
iables
PILA SEMÁNTICA
Contiene información semántica asociada a los operandos.
Guarda la información en registros.
Es necesario guardar los atributos de un símbolo en otra tabla.
Incorpora a la pila de el analizador sintáctico.
Pila semántica
GENERACIÓN DE TABLA DE SÍMBOLOS
Una tabla de símbolos es la estructura de datos que permite almacenar información semántica, es decir en
ella se encuentra el significado asociado a las estructuras formales (sintaxis) del lenguaje.
EJEMPLO
1 2
3 4
VERIFICACIÓN DE TIPOS DE EXPRESIONES
La verificación de los tipos de
Cada lenguaje tiene un sistema Reglas que permite comprobar el datos se hace asignando el valor
de tipos propio. dominio de un identificador. de tipo de cada una de los
componentes léxicos.
Estos valores se comparan para
Hay situaciones donde se quiere verificar que los tipos de datos
guardar un tipo de dato en otro coincidan y sean congruentes, de
diferente. lo contrario no se pueden realizar
los cálculos.
OPERACIONES A TENER
Coerción
Sobrecarga de operadores
Funciones polimorficas
Conversión de tipos
CONVERSIÓN DE TIPOS
Se reconoce si la variable destino
tiene la suficiente precisión para
contener el valor origen.
En java se puede almacenar
un byte en una variable int.
TIPOS DE
CONVERSIÓN
Explicita
recibe un tipo y devuelve otro
Implícita
el compilador convierte automáticamente
COMPROBACIÓN ESTÁTICA
Durante la compilación
Comprobación de tipos incompatibles
de operadores
EXPRESIÓN DE TIPO
Vectores
Punteros
Funciones
Clases
Es un conjunto de reglas para asignar
expresiones de tipos a las distintas
construcciones de un lenguaje.
SISTEMA
DE TIPOS Clasifica los valores y expresiones en tipos.
Los sistemas de tipificación varia
significativamente entre lenguajes
ATRIBUTOS Y GRAMÁTICAS ATRIBUIDAS
Ejemplos de atributos:
Tipo de una variable
Valor de una expresión
Ubicación en memoria de una variable
Código objeto de un procedimiento
Número de dígitos significativos en un número
GRAMÁTICAS ATRIBUIDAS
Una gramática de atributos es una gramática independiente del contexto
en la cual a sus símbolos terminales y no terminales se les dota de unos
atributos y a sus producciones de unas funciones de evaluación que
hacen que dichos atributos se propaguen a través de la gramática.
Su fin es conocer un determinado valor de un atributo en cualquier parte
del árbol de derivación y tomar la decisión oportuna.
MANEJO DE ERRORES
MANEJO DE ERRORES
Un error semántico se Un error semántico puede
produce cuando la sintaxis hacer que le programa
Los errores semánticos
es correcta, pero la termine de forma anormal,
son más sutiles.
semántica o significado no con o sin un mensaje de
lo es. error.
Conversión de tipos no permitidas.
• Por ejemplo:
LOS
• int x;
• x=4.32;
ERRORES Variables usadas y no definidas.
• Por ejemplo:
SEMÁNTICO • String nombre;
• nombre= "José";
S TÍPICOS • apellido= "Pérez"
SON: Operandos no compatibles.
• Por ejemplo:
• Float A;
• String B;
• A=B+5;
No coinciden los tipos.
• Por ejemplo:
LOS • int a;
• a= hola;
ERRORES Uso inadecuado de un identificador.
SEMÁNTICO • Por ejemplo:
• String nombre;
S TÍPICOS • nombre= "José";
• apellido= "Pérez"
SON: Índice de matriz fuera de rango.
• Por ejemplo:
• Int v [] = new int[10];
• v [10]=100;
RECUPERACIÓN DE ERRORES
Un sistema de tipos seguro elimina la necesidad de comprobar dinámicamente errores de tipos ya que permite
determinar estáticamente que dichos errores no pueden ocurrir cuando se está ejecutando el programa objeto.
Se dice que un lenguaje es fuertemente tipificado si su compilador puede garantizar que los programas
que acepte se ejecutarán sin errores de tipo.
BRIONES VENTURA,
ALEXANDER.
INTEGRANTE
S: COTRINA ESCOBAL,
RICHARD.
SAUCEDO HUAMÁN,
KEVIN.
TASILLA UCEDA, NURI.
¡GRACIAS!