Está en la página 1de 37

Análisis Semántico

Nelson Jaramillo Enríquez


Análisis Sintáctico

Análisis
Semántico
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS

GRAMATICA L-ATRIBUTADA
 
El propósito de la propiedad L-atributada es el de asegurar que esos atributos puedan ser evaluados dentro de un
camino propio del procesamiento descendente.
 
El objetivo es obtener una máquina de pila aumentada que permita realizar la traducción especificada en la
gramática L-atributada que tiene un procesamiento descendente con una gramática de entrada LL(1)
 
Condiciones L-atributada

Una gramática de traslación con atributos se llama L-atributada si y solo si cumple con las siguientes condiciones:
 
• Para cada regla de evaluación de atributos de un atributo heredado de algún símbolo dado en el lado derecho
de una producción, cada argumento de esa regla es ó un atributo heredado del lado izquierdo o un atributo
arbitrario del algún símbolo del lado derecho que aparezca a la izquierda del símbolo evaluado.
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS

GRAMATICA L-ATRIBUTADA
 
Condiciones L-atributada

Una gramática de traslación con atributos se llama L-atributada si solo si cumple con las siguientes condiciones:
 

• Para cada regla de evaluación de atributo asociado con un atributo sintetizado del lado izquierdo de una
producción, cada argumento de esa regla es, ó un atributo heredado del lado izquierdo dado ó un atributo
arbitrario de algún símbolo del lado derecho.

• Para cada regla de evaluación de atributos asociado con un atributo sintetizado de un símbolo de acción, cada
argumento de esa regla es un atributo heredado del símbolo de acción dado.
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
Para ilustrar la evaluación suponemos que una gramática tiene la siguiente producción:
  i1,i4,i7,i8,i9 son atributos heredados
<A>i1,s2,s3  <B>i4 <C>s5 <D>s6,i7,i8 <F>i9 s2,s3,s5,s6 atributos sintetizados.
   
Y las reglas de evaluación de atributos son dadas para s2 , s3, i4,i7,i8,i9
La evaluación de estas producciones consiste en chequear que las reglas para i4, i7, i8 e i9 satisfacen la condición 1
y las reglas para s2 y s3 satisfacen la condición 2.
 
Bajo la condición 1, la evaluación de la regla para i4 puede usar solamente i1 como un argumento, así la regla puede
ser:
 
i4  f (i1) ó i4  328 ó (i4,i7)  i1

Igualmente los argumentos para las reglas i7 e i8 deben estar dados por el conjunto {i1,i4,s5} y los argumentos
para la regla i9 debe estar dado por el conjunto {i1,i4,s5,s6,i7,i8}

Bajo la condición 2, la regla de evaluación de atributos para s2 y s3 pueden usar cualquier atributo del lado derecho
y los heredados del lado izquierdo {i1,i4,s5,s6,i7,i8,i9}

 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
Para ilustrar la evaluación suponemos que una gramática tiene la siguiente producción:
 
La condición 3 es usada para evaluar reglas asociadas con símbolos de acción y es sacada por la inspección de la
lista de argumentos y asegurar que atributos sintetizados no son usado en una regla de evaluación.

Condición L-atributada

Llamamos una regla L-atributada si esta satisface cualesquiera de las condiciones apropiadamente.
Llamamos a una producción o a un símbolo de acción L-atributado si todas las reglas de evaluación de atributos son
L-atributados.

Una gramática es entonces L-atributada si todas las producciones y símbolos de acción son L-atributados.
 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
FORMA SIMPLE DE ASIGNACIÓN

Las reglas de evaluación de atributos se las maneja como instrucciones de asignación (pero no son asignaciones) y
tienen las siguientes formas: 
El lado derecho como función
x  F(y,z)
 
El lado derecho puede ser el valor de un atributo o una constante
Asignado a uno o varios atributos
 
x  y y (x,y,z)  17

Definición
Regla de Copia: una regla de evaluación es una regla de copia si y solo si es de la forma:
 
x  y ó (x1 ,x2, ....., xn)  y
 
Donde el lado izquierdo es un único atributo o lista de atributos y el lado derecho una constante o un atributo.
El lado derecho es llamado fuente y el lado izquierdo el destino.
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
FORMA SIMPLE DE ASIGNACIÓN

Reglas de copia independientes


 
Ejemplo
(x,y)  z y (a,b)  y son reglas de copia y se las puede escribir así:
 
(x,y,a,b)  z
 
Un conjunto de reglas de copia es independiente si y solo si la fuente de cada regla del conjunto no aparece en
ningún otro conjunto de otra regla.

En el ejemplo (x,y)  z es equivalente a (a,b)  z porque y vale z


Cuando esto ocurre se puede consolidar y obtener (x,y,a,b)  z
 
Dos reglas de copia son independientes, si no pueden ser consolidadas.
 
El concepto de reglas de copia y la independencia de las reglas permiten establecer la forma simple de asignación
así:
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
FORMA SIMPLE DE ASIGNACIÓN
Definición
Gramática atributada en forma simple de asignación

Una gramática atributada está en forma simple de asignación si y solo si:


 
• Todas las reglas de evaluación de una producción deben ser reglas de copia, excepto las reglas que
calculan atributos sintetizados de símbolos de acción.

• El conjunto de reglas de copia asociadas con cada producción son independientes.

Encontrar gramática en forma simple de asignación.


 
Dada una gramática L-atributada, encontrar una gramática equivalente en la forma simple de
asignación:
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
FORMA SIMPLE DE ASIGNACIÓN

Encontrar gramática en forma simple de asignación.


 Dada una gramática L-atributada, encontrar una gramática equivalente en la forma simple de asignación:
 Procedimiento para convertir reglas que no son de copia en reglas de copia
<A>  ar <B>s <S>i
i  f (r,s) i es heredado y s sintetizado
  
El primer paso
Crear un símbolo de acción para representar la evaluación de la función f con el nombre de la función.
En el ejemplo { f }.
Crear atributos heredados de acuerdo a la cantidad de argumentos de la función f
i1, para r
I2 para s
Crear un atributo sintetizado para el resultado de f
De acuerdo con lo anterior el símbolo de acción queda:

{f } i1,i2,s1 heredados i1,i2 sintetizado s1


Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
FORMA SIMPLE DE ASIGNACIÓN

Encontrar gramática en forma simple de asignación.


Segundo paso
 
Insertar el nuevo símbolo de acción {f } dentro del lado derecho de la regla de tal forma que se garantice la
condición L-atributada.
Introducir nuevas reglas de copia las cuales llevan valores a los atributos heredados de f (en el ejemplo para r y s).
Introducir una nueva regla de copia para llevar el atributo sintetizado el valor computado por f
Descartar la regla que involucra a f
 
Un posible resultado sería el siguiente:
 
<A>  ar <B>s {f } i1,i2,s1 <S>i
i1  r i2  s i  s1 <A>  ar <B>s <S>I
  i  f (r,s)
El símbolo de acción se coloca en medio de <B> y de <C> porque se quiere garantizar la gramática L-atributada
(Debe cumplir las tres reglas planteadas).
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
FORMA SIMPLE DE ASIGNACIÓN
 Ejemplo: Realizar una gramática con atributos que permita reconocer expresiones aritméticas en notación prefija y
convertirla a forma simple de asignación.
 
< S >  < E >p {respuesta}r
rp
 
< E >p  + < E > q < E >r
pq+r
 
< E >p  * < E >q< E >r
pq*r
 
< E >p  C q
pq
 
De la anterior gramática se puede establecer que las producciones 2 y 3 no están en forma simple de asignación
porque sus reglas no son de copia.
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS

Ejemplo: Realizar una gramática con atributos que permita reconocer expresiones aritméticas en notación prefija y
convertirla a forma simple de asignación.
Paso uno
Crear los símbolos de acción para re realizar las operaciones de suma y multiplicación respectivamente. Estos
símbolos de acción va a tener los siguientes elementos
 
{suma}a1,a2,s a1 y a2 son heredados y s sintetizado
s  a1 + a2
 
{mult}a1,a2,s
s  a1 * a2
 
Los demás símbolos y sus características son los siguientes:
 
{respuesta}r r heredado
 
<E>p p sintetizado
Paso dos
La gramática en forma simple de asignación queda de la siguiente forma:
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS

Ejemplo: Realizar una gramática con atributos que permita reconocer expresiones aritméticas en notación prefija y
convertirla a forma simple de asignación.

La gramática en forma simple de asignación queda de la siguiente forma:


 
 
1. < S >  < E >p {respuesta}r 1. < S >  < E >p {respuesta}r
rp rp
   
2. < E >p  + < E >q< E >r {suma}a1,a2,s 2. < E >p  + < E >q< E >r
a1  q a2  r p  s s  a1 + a2 pq+r
   
3. < E >p  * < E >q< E >r {mult}a1,a2,r 3. < E >p  * < E >q< E >r
a1  q a2  r p  s s  a1 * a2 pq*r
   
4. < E >p  Cq 4. < E >p  Cq
pq pq
 
 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS

AUTÓMATA DE PILA AUMENTADA


 
Permite tener en cuenta en un autómata de pila común los diferentes atributos de los símbolos de la gramática en
forma simple de asignación.
 
En la pila se representan los símbolos de pila y el conjunto de campos asociados con el símbolo.

Un símbolo con n campos en la pila se representa con (n+1) celdas, donde la celda del tope contiene el nombre
del símbolo y las de abajo representan los n campos.

De acuerdo con el ejercicio anterior la gramática aumentada que permita tratar sus diferentes atributos sería la
siguiente:
 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS

Ejemplo. Representar la gramática que reconoce la notación postfija en una máquina de pila aumentada.

Representación de los elementos en la máquina de pila aumentada

 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS

Ejemplo. Representar la gramática que reconoce la notación postfija en una máquina de pila aumentada.

Representación de los elementos en la máquina de pila aumentada

 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS

Ejemplo. Representar la gramática que reconoce la notación postfija en una máquina de pila aumentada.
Representación gráfica de las producciones

 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS

Ejemplo. Representar la gramática que reconoce la notación postfija en una máquina de pila aumentada.
Representación gráfica de las producciones

 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
Ejemplo. Representar la gramática que reconoce la notación postfija en una máquina de pila aumentada.

Utilizar la gramática de expresiones prefijas para obtener determinar el resultado de las siguiente expresión (2*3)+5,
el cual en notación prefija y debidamente tipificada es la siguiente:
+*C 2C 3 C5
Representación gráfica del reconocimiento

 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
Ejemplo. Representar la gramática que reconoce la notación postfija en una máquina de pila aumentada.

 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
Ejemplo. Representar la gramática que reconoce la notación postfija en una máquina de pila aumentada.

 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
Resumen de las reglas
 
Las reglas de evaluación plantean las siguientes formas generales:
1. Heredado  Sintetizado
2. Sintetizado 1  Sintetizado 2
3. Sintetizado  Heredado
4. Sintetizado  Entrada o arbitrario
 
• Para el caso 1 en el atributo sintetizado se coloca la dirección donde va a quedar almacenado el valor del
atributo heredado, el cual puede ser una estructura de datos como una lista ligada.
• Para el caso 2 en donde los dos elementos son sintetizados en el sintetizado 2 se mantiene la dirección que
existe en el sintetizado 1.
• En caso 3 el valor que esté almacenado en el atributo heredado se copia en la dirección que está referenciada
en el atributo sintetizado.
• El cuarto caso es semejante al anterior, un valor de entrada es almacenado en la dirección especificada por
atributo sintetizado.
 
 
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
Ejemplo 2 teniendo en cuenta las reglas anteriores
 Seguimiento de la pila de la secuencia: (8*2)+4 = +*C 8 C2 C4  Aplico #3:
REEMPLACE ({MULT} <E> <E>),
AVANCE
Pila inicial: Aplico #1: Aplico #2:
REEMPLACE ({RESPUESTA} <E>), REEMPLACE ({SUMA} <E> <E>),
RETIENE AVANCE
Análisis Semántico
PROCESAMIENTO DESCENDENTE DE GRAMÁTICAS ATRIBUTADAS
Ejemplo 2 teniendo en cuenta las reglas anteriores
 Seguimiento de la pila de la secuencia: (8*2)+4 = +*C 8 C2 C4 

Aplico #4: POP, AVANCE Ejecuta {MULT}: POP, RETIENE Aplico #4: POP, AVANCE Ejecuta {SUMA}: POP, RETIENE

Ejecuta {RESPUESTA} Acepta la secuencia


POP,RETIENE:
Procesamiento descendente
Ejercicio . Implementar una máquina de pila determinística para reconocer expresiones aritméticas con
gramáticas LL(1) 
1. <E> <T> <E-L> Selección (<E><T> <E-L>) = primero (<T>< E_L>)= {(, Id}

2. <E-L> Selección (< E-L >  +<T>< E-L >) = primero (+<T> < E-L >)=
+ <T> <E-L> {+}

3. <E-L>  Selección (< E-L >) = primero () U siguiente (< E-L >) ={ } U { ), ¬ } = { ), ¬ }

4. <T> <F> <T-L> Selección (<T><F><T_L>) = primero (<F>< T_L >) = { (, Id }

5. <T-L> Selección (< T_L >  *<F>< T_L >) = primero (*<F>< T_L >)=
* <F> <T-L> {*}

6. <T-L>  Selección (< T_L > ) = primero () U siguiente (< T_L >) ={ } U {+,), ¬}= {+,), ¬}

7. <F> (<E>) Selección (<F>(<E>) = primero (<E>) = {(}

8. <F> Id Selección (<F>Id) = primero (Id) = {I}

 Resumen
Selección (1) = {(, Id}
Selección (2) = {+}
Selección (3) = { ), ¬ }
Selección (4) = { (, Id }
Selección (5) = {*}
Selección (6) = {+,), ¬}
Selección (7) = { ( }
Selección (8) = {I}
Procesamiento Descendente
Ejercicio . Implementar una tabla de control para la gramática de operaciones aritméticas LL(1)

Resumen #1: pop, push (<E><T_L> ), retiene


Selección (1) = {(, I} #2: pop, push (<E><T_L>), avance
Selección (2) = {+} #3: pop, avance
Selección (3) = { ), ¬ } #4: pop, push (<T><F_L>), retiene
Selección (4) = { (, Id } #5: pop, push (<T><F_L>), avance
Selección (5) = {*} #6: pop, retiene
Selección (6) = {+,), ¬} #7: pop, push ( )<F>), avance
Selección (7) = { ( } #8: pop, avance
Selección (8) = {I}  
Procesamiento Descendente
Ejercicio . Gramatica LL(1) para expresiones infijas con atributos y en forma simple de asignación
Procesamiento Descendente
Ejercicio . Gramatica LL(1) para expresiones infijas con atributos y en forma simple de asignación
Procesamiento Descendente
Ejercicio . Gramatica LL(1) para expresiones infijas con atributos y en forma simple de asignación
(8*2)+4 Aplico #1: REEMPLACE ({RESPUESTA} <E>), Aplico #2: REEMPLACE (<E_L> <T>),
RETIENE RETIENE (i*i)+i¬

Aplico #5: REEMPLACE (<T_L> <P>),


RETIENE, (I*I)+I¬ Aplico #9: REEMPLACE ()<E>),
AVANCE, I*I)+I¬
Procesamiento Descendente
Ejercicio . Gramatica LL(1) para expresiones infijas con atributos y en forma simple de asignación
Aplico #2: REEMPLACE (<E_L> <T>), Aplico #5: REEMPLACE (<T_L> <P>), Aplico #8: POP, AVANCE, *I)+I
RETIENE, I*I)+I¬ RETIENE, I*I)+I¬
Procesamiento Descendente
Ejercicio . Gramatica LL(1) para expresiones infijas con atributos y en forma simple de asignación
Aplico #6: REEMPLACE (<T_L> {MULT} <P>), Aplico #8, POP, AVANCE, ) + I
AVANCE, I)+I
Procesamiento Descendente
Ejercicio . Gramatica LL(1) para expresiones infijas con atributos y en forma simple de asignación

Se ejecuta el símbolo de acción {MULT} Aplico #7 Aplico #4


POP,RETIENE )+I POP,RETIENE )+I POP,RETIENE )+I
Procesamiento Descendente
Ejercicio . Gramatica LL(1) para expresiones infijas con atributos y en forma simple de asignación

Se aplico Aplico #7 Aplico #3


POP,AVANCE +I¬ POP,RETIENE +I¬ POP,RETIENE I¬
Procesamiento Descendente
Ejercicio . Gramatica LL(1) para expresiones infijas con atributos y en forma simple de asignación

Aplico #5 Aplico #7
Aplico #8
POP,RETIENE I¬ POP,RETIENE ¬
POP,AVANCE ¬
Procesamiento Descendente
Ejercicio . Gramatica LL(1) para expresiones infijas con atributos y en forma simple de asignación

Ejecuto símbolo de acción {SUMA} Aplico #4 ¬


POP,RETIENE ¬ POP,RETIENE ¬ Acepta la secuencia
Gracias por su atención
Muchos éxitos

También podría gustarte