0% encontró este documento útil (0 votos)
175 vistas29 páginas

Análisis Semántico en Compiladores

Este documento trata sobre el análisis semántico realizado por los compiladores. El análisis semántico estudia el significado de las palabras y verifica la compatibilidad de tipos. Realiza tareas como identificar los tipos de instrucciones, completar la tabla de símbolos, y validar conversiones de tipos. El árbol semántico registra las operaciones del programa y los valores en cada rama. El análisis semántico también incluye la generación de tablas de símbolos, verificación de tipos de expresiones, y
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
175 vistas29 páginas

Análisis Semántico en Compiladores

Este documento trata sobre el análisis semántico realizado por los compiladores. El análisis semántico estudia el significado de las palabras y verifica la compatibilidad de tipos. Realiza tareas como identificar los tipos de instrucciones, completar la tabla de símbolos, y validar conversiones de tipos. El árbol semántico registra las operaciones del programa y los valores en cada rama. El análisis semántico también incluye la generación de tablas de símbolos, verificación de tipos de expresiones, y
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

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!

También podría gustarte