Beruflich Dokumente
Kultur Dokumente
Practica 5
Analisis Semantico
Nombre
Grupo
Jose Sanchez Juarez
25 de mayo de 2016
1.
Objetivo
2.
Analizador Sem
antico
Las gram
aticas de atributos y los esquemas de traduccion, son dos formas de
hacer an
alisis sem
antico. Para esta practica se aplicara la gramatica de atributos
para lograr la traducci
on dirigida por la sintaxis. Para desarrollar la traduccion
dirigida por la sintaxis se requiere primero identificar los atributos que formar
an las funciones sem
anticas. Como las acciones semanticas se incrustaran
en el c
odigo del analizador sintactico, estas se pueden deducir de la aplicacion
del algoritmo del analizador sintactico. La definicion de atributo sintetizado es,
los atributos que se traspasan los valores de hijos a padres y que se formalizan
como sigue, se tiene una produccion P la cual tiene asociado los atributos
b y que se forma de la siguiente manera (a1 , a2 , . . . , an ), donde los atributos
a1 , a2 , . . . , an corresponden a los smbolos de la parte derecha de la produccion
P . La definici
on de atributo heredado es que los valores se traspasan entre
los hermanos y los padres de cada uno de los nodos, su formalizacion es que un
atributo heredado b tiene como funcion (a1 , a2 , . . . , an ), donde b es un atributo
heredado de uno de los smbolos gramaticales del lado derecho de la produccion
P , y a1 , a2 , . . . , an son atributos que pertenecen a los smbolos gramaticales
de las producciones.
El procedimiento para la construccion del analizador semantico se puede ver
mediante un ejemplo, sea la siguiente gramatica,
1
1. G T
2. T R
3. T aT c
4. R
5. R bR
Despues se procede a dividir en capas las producciones de la gramatica, como
se muestra a continuaci
on:
1. G T
2. T R
3. T a
4. R
5. R b
El siguiente paso es obtener los elementos LR(0), donde la produccion aumentada es el primer elemento LR(0) el cual se usa para formar el primer estado:
I0 = Cerr(G T )
= {T 0 T, T R, T aT c, R bR}
El estado I1 se obtiene aplicando cerradura a IR-a de I0 con T, que se
representa de la siguiente manera:
I1 = Cerr(IR a(I0 , T )) = Cerr(T 0 T )
= {G T }
El estado I2 se obtiene aplicando cerradura a IR-a de I0 con R, que se
representa de la siguiente manera:
I2 = Cerr(IR a(I0 , R)) = Cerr(T R)
= {T R}
El estado I3 se obtiene aplicando cerradura a IR-a de I0 con a, que se representa de la siguiente manera:
I3 = Cerr(IR a(I0 , a)) = Cerr(T a T c)
= {T a T c, T R, T aT c R bR
El estado I4 se obtiene aplicando cerradura a IR-a de I0 con b, que se
representa de la siguiente manera:
2
Algorithm .1: An
alisis Sintactico Ascendente LR(0)
PUSH(eof,Pila);
PUSH(EstadoInicial,Pila);
pal SigP al();
while True do
if Accion == reduccion then
k := 2 * long( );
Fori k hasta 1 Pop(pila);
Estado T ope .dato;
PUSH(Estado,pila);
PUSH(IR-a,pila);
else if Accion == desplazamiento then
PUSH(pal,pila);
PUSH(Si,pila);
pal SigP al() ;
else if Accion == aceptacion then
EsEnPan(Sintaxis Correcta);
Break;
else
EsEnPan(ERROR);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
3.
Problemas
Implementar un analizador semantico de la gramatica UNO:
1. N SL
2. S +
3. S
4. L LB
5. L B
6. B 0
7. B 1
4.
Procedimiento
A la gram
atica UNO aplicar el siguiente procedimiento, para obtener un
analizador sem
antico:
1. Se aumenta la gram
atica.
2. Se divide la gram
atica en capas.
3. Se obtienen los elementos LR(0) para formar tantos estados como smbolos
se tengan en la gram
atica.
4. Se forma el grafo de los estados obtenidos.
5. Se aplica continuidad apoyandose en los elementos LR(0) de los estados
formados.
6. Se obtiene la tabla de siguientes de los no terminales.
7. Se obtienen las tablas de Accion y de IR-a a partir del grafo y de los
elementos LR(0).
8. Se analizan las cadenas aplicando la pila siguiendo el pseudocodigo que se
presenta en la figura Algoritmo .1.
9. Se obtienen los atributos.
10. Se contruyen las funciones semanticas utilizando los atributos obtenidos
en el paso anterior.
11. Se colocan las funciones o partes de codigo en el algoritmo del analizador
sint
actico.
5.
Actividades
Realice las siguientes actividades: