Sunteți pe pagina 1din 34

UNIVERSIDAD NACIONAL DE JUJUY

Facultad de Ingeniera

ANLISIS SEMNTICO
Grupo 4: CARI, Jonatan Maximiliano
LAMAS, Daniel Alberto
GUERRERO, Matas
GUZMAN, Ariel Palomino

Estas 2 primeras fases


son las encargadas de
definir la estructura
sintctica del lenguaje
y sus componentes

LD A, t1
INC A
STA t1,
A

Cdigo Final

Cdigo Intermedio

<a, ID>

Analizador Semntico

;1+
a := a

Analizador Lxico

a:=a+1
;

Analizador Sintctico

FASES DEL COMPILADOR

Las 3 fases siguientes son las


encargadas
de
dar
un
significado nico, preciso y
computable
a
cada
construccin del lenguaje.

0000
0110
0110
1100
1110
0110
0001
0111
1111
1101

POR QU NECESITAMOS EL ANLISIS


SEMNTICO?

El analizador sintctico solo puede detectar


errores sobre la estructura del lenguaje, no
as los errores de la interpretacin de esta
estructura. Por esta razn necesitamos un
analizador semntico.

QU ES UN ANALIZADOR
SEMNTICO?

El analizador semntico es un parte ms del proceso


de los compiladores en lo cual incluye la verificacin
de que una gramtica tenga sentido o interpretacin
de un significado de un determinados elementos,
smbolos, o expresin.
El analizador semntico trata de determinar el tipo de
resultado intermedio, comprobar que los argumentos
que tienen un operador pertenece a un conjunto de
los operadores posibles y si son compatible entre si.

QU ES UN ANALIZADOR
SEMNTICO?
Por ejemplo
Supongamos que tenemos una lnea de cdigo en C#

COMO FUNCIONA EL ANALIZADOR


SEMNTICO
El analizador semntico requiere las siguientes
caractersticas que son

atributos
reglas semnticas

Existen dos maneras de asociarlos

definicin dirigida por regla de sintaxis


esquema de traduccin

En ambos casos es til definir un conjunto de


atributos a los smbolos gramaticales a los
lenguajes.

TRADUCCIN DIRIGIDA POR


SINTAXIS
Es una generalizacin de una gramtica libre de
contexto en la cual cada smbolo tiene asociado un
conjunto de atributos.
Asocia informacin a construcciones de un lenguaje de
programacin, asignndole atributos al smbolo de la
gramtica que representa dicha construccin.
Dependiendo
del tiempo en que se realice la
traduccin dentro del ciclo de compilacin tenemos dos
clases de traduccin:
1. Traduccin en tiempo de compilacin.
2. Traduccin en tiempo de ejecucin.

DEFINICIN DIRIGIDA POR SINTAXIS


Una definicin dirigida por sintaxis es un formalismo
para especificar las traducciones para las construcciones
en funcin de atributos asociados con sus componentes
sintcticos.
La idea es asociar con cada smbolo de la gramtica un
conjunto de atributos y adems a cada produccin un
conjunto de reglas semnticas para calcular los valores
de los atributos asociados con los smbolos que
aparecen en esa produccin.
La definicin dirigida por sintaxis consiste en s entonces
de la gramtica y el conjunto de reglas semnticas.

TABLA DE SMBOLOS
Estructura ms importante para el anlisis
semntico.

Contiene informacin esencial para el


anlisis.

Su informacin va a servir para fases


posteriores de sntesis:

Optimizacin
Generacin

de cdigo final

Permanece slo en tiempo de compilacin,


salvo excepciones

TABLA DE SMBOLOS
Qu almacena?
Almacena informacin sobre:
- Identificadores
- Palabras reservadas (opcional)
- Constantes (opcional)
Para cada entrada en la TS se debe guardar:
- Lexema
- Tipo (depende de la implementacin)
- mbito (depende de la implementacin)
- Direccin de memoria

TABLA DE SMBOLOS
Ejemplo

PRINCIPALES OPERACIONES DE LA
TS

Insercin

Bsqueda

Eliminacin

GESTIN DE TABLA DE SMBOLOS


La gestin de la TS es un punto crtico para el
rendimiento del compilado.
El acceso a la TS debe hacerse de forma
eficiente y en cualquier momento.
Quin debe acceder a la TS?

Analizador

Lxico.
Analizador Semntico.

IMPLEMENTACIN DE LA TABLA DE
SMBOLOS
La Implementacin de la TS debe ser eficiente:
Lista:

Permite insertar fcilmente


La bsqueda depende del n de elementos
Puede ser muy costoso

Lista ordenada:

La bsqueda es sencilla
La insercin es muy costosa

Tabla Hash:

Coste de insercin bajo


Coste de bsqueda bajo
Ideal para la TS

TABLA DE SMBOLOS
Ejemplo
Valor

Lnea
Declaraci
n

Lneas
Referenciada

9,14,25

12,14

Formal

36,37,38

48

10,11,13,23

Resp

52

11,23,25

56

17,21

Primero

64

28,29,30,38

Nmero

Nombre de
Variable

Direccin

Tipo

Empresa

X3

ATRIBUTOS
Un atributo es un espacio de informacin que sirve para albergar
una caracterstica propia del proceso de traduccin y que puede
ser transferida a otras producciones gramaticales para que
pueda ser usada desde all por sus reglas semnticas.
Tambin se puede definir atributo como a las propiedades de los
smbolos del lenguaje que almacenan contenidos relacionados
con el significado de los smbolos a los que pertenecen.

Se utiliza la notacin
Ejemplos

ATRIBUTOS: TIPOS DE ATRIBUTOS


Atributos
Sintetizados

Atributos Heredados

Se calculan a partir de atributos de


nodos hijos.

Calculados con atributos en nodos padre


y hermanos.

Se refieren a los atributos


antecedente de la regla.

Se refieren a atributos del consecuente


de la regla.

del

La informacin asciende por el rbol.


Los atributos sintetizados
durante toda la gramtica.
Los atributos
sintetizados.

de

lo

terminales

Informacin descendente o de transito


horizontal.

son
Los atributos heredados lo son durante
toda la gramtica.
son

ATRIBUTOS: EJEMPLOS
Atributos Heredados

Atributos Sintetizados

REGLAS SEMNTICAS
Una regla semntica es una expresin formal
asociada a una regla de produccin que
permite definir la semntica de la construccin
gramatical asociada a la misma en trminos de
los smbolos de la regla de produccin.

REGLAS SEMNTICAS
Contamos con 2 tipos de Reglas Semnticas:

Reglas de ecuaciones de atributos.

Reglas de accin semntica.

ECUACIONES DE ATRIBUTOS
Los valores de los atributos, de cada smbolo gramatical,

estn relacionados con los valores de los atributos de los


otros smbolos en la regla.

donde:

es una funcin matemtica de sus argumentos.


es la coleccin de todos los atributos para todas las reglas
gramaticales.
smbolos gramaticales.

ECUACIONES DE ATRIBUTOS
Ahora

veremos un ejemplo para la cadena

Consideremos la siguiente gramtica


simple para
declaraciones de variables de tipo int y float en una sintaxis
tipo C:

ECUACIONES DE ATRIBUTOS
Asociada a la gramtica tendremos
gramtica con atributos dtype.
Regla Gramatical

Reglas Semnticas

la

siguiente

ECUACIONES DE ATRIBUTOS
Las ecuaciones de atributo se pueden exhibir en un rbol
de anlisis gramatical.
Regla Gramatical
Reglas Semnticas

GRAFOS DE DEPENDENCIAS
Un grafo de dependencias describe el flujo de
informacin entre las instancias de atributos
en un rbol de anlisis sintctico especfico;
una flecha de una instancia de atributo a otra
significa que el valor de la primera se necesita
para calcular la segunda.

GRAFOS DE DEPENDENCIAS

Algoritmo
para su construccin:

Para cada nodo en el rbol de anlisis sintctico hacer


Para

cada atributo del smbolo gramatical en el nodo hacer

Construir un nodo en el grafo de dependencias para ;

Para cada nodo en el rbol de anlisis sintctico hacer


Para

cada regla semntica asociada con la produccin


utilizada en hacer

Para cada hasta k hacer


Construir una arista desde el nodo hasta el nodo para ;

GRAFOS DE DEPENDENCIAS

Ahora
veremos un ejemplo para ello utilizaremos la

gramtica anterior y la misma cadena de entrada:

ACCIONES SEMNTICAS
Define solo el valor de los atributos de los smbolos que
aparecen en la produccin.
Una accin semntica se ejecuta justo cuando se han
reconocido los smbolos que se encuentran a su
izquierda en el cuerpo de la produccin.
La accin semntica se puede ver como una regla
semntica asociada a un nuevo smbolo no terminal
cuya nica produccin asociada es ejecutada

ESQUEMAS DE TRADUCCIN
Esquema de
traduccin
postfijo

Esquema de
traduccin con
acciones en medio
de la produccin

ESQUEMAS DE TRADUCCIN
Esquema de traduccin postfijo
Definicin: un esquema de traduccin postfijo es aquel en el cual
las acciones semnticas se encuentran al final del cuerpo de
produccin
Ejemplo

Si en la regla insertamos un fragmento de cdigo:


La accin semnticase ejecutar despus de todas las acciones
asociadas con el recorrido de los subrboles.

ESQUEMAS DE TRADUCCIN
Esquema de traduccin con acciones en medio de la
produccin (infijo)
Para aplicar estas acciones se deben realizar los siguientes
pasos:

Recorrer en pre orden el rbol de anlisis sintctico ejecutando las


acciones semnticas.

Adicionar nuevos hijos a cada smbolo de la parte izquierda como


nuevos hijos que contienen a las acciones semnticas en el punto
donde ellas se deben realizar.
Construir el rbol de anlisis sintctico ignorando las acciones
semnticas.

ESQUEMAS DE TRADUCCIN
Ejemplo de INFIJO
Si en la regla insertamos un fragmento de cdigo:

La accinse ejecutar despus de todas las acciones asociadas con el recorrido del
subrbol de y antes que todas las acciones asociadas con el recorrido del subrbol.
Otro ejemplo con el rbol de anlisis sintctico

{actio
n}

OBJETIVOS DEL ANALIZADOR


SEMNTICO
La Fase de anlisis semntico tiene por objetivo analizar los componentes
del rbol de anlisis sintctico que representan en el programa con el fin de
comprobar que se respetan ciertas reglas semnticas que dan un significado
coherente a las construcciones del lenguaje, es decir, el analizador
semntico va comprobando la coherencia semntica del rbol de anlisis
sintctico segn se va construyendo.

Las responsabilidades del analizador semntico


son:declaraciones
Registrar
Inferir tipos
Comprobar tipos
Comprobar correccin
semntica

CONCLUSIN
Concluimos que el analizador semntico es tan
importante como vital para un compilador,
debido a que este analiza cada estructura
sintctica verificando la coherencia de la
misma.
Para esto emplea las estructuras:
rbol sintctico
Tabla de Smbolos
Que son las ms primordiales para este

S-ar putea să vă placă și