Analizador Semántico

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 11

ANALIZADOR

SEMNTICO
Anlisis Semntico

El analizador semntico detecta la


validez semntica de las sentencias
aceptadas por el analizador
sintctico. El analizador semntico
suele trabajar simultneamente al
analizador sintctico y en estrecha
cooperacin.
Ejemplo:

A : FLOAT ANALIZADOR LXICO


B : STRING id1 : FLOAT ;
A :=B + 5; id2 : STRING ;

Tabla de smbolos
Lexema Complex
1 A id
2 B Id
:= Op num; 3 5 Num
Analizador sintctico

Tabla de smbolos
Lexema Complex
1 A id
2 B Id
3 5 Num
Cadena
de rbol rbol Generador
compone Analizador Anlisis de cdigo
sinttico
sintct semntico
sintct
ntes ico ico intermedio
lxicos

Tabla de
smbolos
Las rutinas semnticas deben realizar la evaluacin
de los atributos de las gramticas

Por ejemplo para una expresin como:


El analizador semntico debe determinar que
acciones pueden realizar los operadores aritmticos

Sobre las variables


Cmo se ve un programa
Representacin textual o estructura
Es posible dar una definicin matemtica precisa

Cul es el significado del programa


Es ms difcil dar una definicin matemtica precisa

Asegurarnos que el programa cumple con la definicin del lenguaje de


programacin
Proveer mensajes de error tiles al usuario
La semntica de este lenguaje est basada en las operaciones con sus tipos de datos.
La especificacin semntica se puede resumir en:
Sistema de tipos: Se permiten tres tipos de datos: CHAR (carcter), INTEGER (entero) y FLOAT (real).
Por defecto todos los operadores aritmticos siguen las leyes de composicin interna, es decir las
operaciones que tienen operandos del mismo tipo de datos, devuelven como resultado dicho tipos
de datos, un caso especial es el operador potenciacin:

<expresin>1.tipo OPERADOR <expresin>2.tipo-> <expresin>3.tipo

La sentencia de asignacin sigue la misma ley de composicin interna, es decir el tipo de la variable
de la parte izquierda debe ser igual al tipo de la expresin de la parte derecha.

<variable>.tipo = <expresin>.tipo
Conversiones de tipo por promocin: Tan solo se permite la promocin de tipo entero (INTEGER)
a tipo real (FLOAT), es decir:

<expresin>1.I OPERADOR <expresin>2.F <expresin>3.F <expresin>1.F OPERADOR


<expresin>2.I <expresin>3.F

Tambin se permite slo la promocin de entero (I) a real (F) en la sentencia de asignacin:

<variable>.F = <expresin>.I

Conversiones de tipo por descenso: MUSIM/3 las prohbe totalmente. Por ejemplo no se permite
pasar directamente de real a entero.

También podría gustarte