Está en la página 1de 13

COMPILADORES

Yeiler Alberto
Quintero Barco
ANÁLISIS SEMÁNTICO
El análisis semántico utiliza como entrada el árbol
sintáctico detectado por el análisis sintáctico para
comprobar restricciones de tipo y otras limitaciones
semánticas y preparar la generación de código.
El analizador semántico detecta la validez semántica
de las sentencias aceptadas por el analizador
sintáctico. El analizador semántico suele trabajar
simultáneamente al analizador sintáctico y en
estrecha cooperación.
• Se entiende por semántica como el conjunto de reglas que
especifican el significado de cualquier sentencia sintácticamente
correcta y escrita en un determinado lenguaje.
• Las rutinas semánticas deben realizar la evaluación de los
atributos de las gramáticas siguiendo las reglas semánticas
asociadas a cada producción de la gramática.
Por ejemplo para una expresión como:
(A+B)*(C+D)
• El analizador semántico debe determinar que acciones pueden
realizar los operadores aritméticos (+,*) sobre las variables A,B,C
y D.
Verificación de tipos

• 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.
Conversión de tipos
Hay situaciones en las cuales se tiene un valor de un tipo
dado y se desea almacenar ese valor en una variable de un
tipo diferente.

En algunos tipos es posible almacenar simplemente el valor


sin una conversión de tipos; lo que se denomina conversión
automática.

A la conversión de tipos se le llama coerción o casting.


Conversión de tipos

Esto sólo es posible en algún lenguaje de programación, si el


compilador reconoce que la variable destino tiene la suficiente
precisión para contener el valor origen.

En Java se puede almacenar un valor byte en una variable int,


dado que este tipo de datos es de mayor precisión que el
primero.
Comprobación de Tipos

Existen dos tipos de comprobación: estática y dinámica.

La comprobación ayuda a evitar la mayoría de los errores de


programación.

Ejemplos de comprobación de tipos: Para saber si el operador


aplicado a los operadores es correcto.
Manejo Errores Semánticos

Algunos problemas se presentan durante la fase de gestión de


memoria al pasar argumentos o al crear la pila semántica.

Muchos errores se generan durante la etapa del enlazador, al


tratar de obtener código existente de algunas
funciones/métodos ya implementadas en bibliotecas/APIs
Frase de día

Sólo hay dos días en el año en que


nada se puede hacer. Uno se llama
Ayer y el otro se llama Mañana. Hoy
es el día adecuado para Amar, creer,
y sobre todo vivir. Dalai Lama

También podría gustarte