animaciÓn traductor ddt con cup. en esta animación se puede ver el árbol generado del traductor...

33
ANIMACIÓN Traductor DDT con CUP

Upload: anbessa-lamora

Post on 02-Apr-2015

114 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

ANIMACIÓN

Traductor DDT con CUP

Page 2: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint. Previamente realizado a mano.

En cada paso (derivación/reducción), se ha especificado la producción aplicada en el caso de la construcción del árbol.

Posteriormente se ha construido la evolución que sigue el traductor CUP para evaluar el resultado de la expresión.

El caso de prueba a analizar es: (false and (74 >= 34)) xor 45 < 78 ;

Este es el que aparece en el enunciado de la práctica, y el resultado es el siguiente:

Page 3: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

A

Partiendo desde el axioma construiremos el árbol correspondiente:

Page 4: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

A := L

Page 5: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

L := L xor J

Page 6: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

J := C

Page 7: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

C := numero opmenor numero

Page 8: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

L := J

Page 9: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

J := apertura_parentesis L cierre_parentesis

Page 10: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

L := L and J

Page 11: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

J := apertura_parentesis L cierre_parentesis

Page 12: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

L := J

Page 13: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

J := C

Page 14: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

C := numero opmayori numero

Page 15: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

L := J

Page 16: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

J := vfalse

Page 17: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

J:=vfalse {:Simbolo s=new Simbolo(); s.valor=false;RESULT = s;

:}

Ahora que hemos construido el árbol sintáctico, se procede a evaluarlo de manera ascendente:

Page 18: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

L::=J:eval {:Simbolo s=new Simbolo(); s.valor=eval.valor; RESULT = s;

:}

Page 19: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint
Page 20: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

C::=numero:n1 opmayori numero:n2 {:int v1=Integer.parseInt(n1); int v2=Integer.parseInt(n2); Simbolo s=new Simbolo(); s.valor=(v1 >= v2); RESULT = s;

:}

Page 21: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

J::=C:eval {:Simbolo s=new Simbolo(); s.valor=eval.valor; RESULT = s;

:}

Page 22: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

L::=J:eval {:Simbolo s=new Simbolo(); s.valor=eval.valor; RESULT = s;

:}

Page 23: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

J::=apertura_parentesis L:eval cierre_parentesis {:Simbolo s=new Simbolo(); s.valor=(eval.valor); RESULT = s;

:}

Page 24: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint
Page 25: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

L::=L:ev1 opand J:ev2 {:Simbolo s=new Simbolo(); s.valor=(ev1.valor && ev2.valor); RESULT = s;

:}

Page 26: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

J::=apertura_parentesis L:eval cierre_parentesis {:Simbolo s=new Simbolo(); s.valor=(eval.valor); RESULT = s;

:}

Page 27: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

L::=J:eval {:Simbolo s=new Simbolo(); s.valor=eval.valor;RESULT = s;

:}

Page 28: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint
Page 29: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

C::=numero:n1 opmenor numero:n2 {:int v1=Integer.parseInt(n1); int v2=Integer.parseInt(n2); Simbolo s=new Simbolo(); s.valor=(v1 < v2); RESULT = s;

:}

Page 30: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

J::=C:eval {:Simbolo s=new Simbolo(); s.valor=eval.valor; RESULT = s;

:}

Page 31: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

L::=L:ev1 opxor J:ev2 {:Simbolo s=new Simbolo(); s.valor=(ev1.valor ^ ev2.valor); RESULT = s;

:}

Page 32: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint
Page 33: ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint

A::=L:eval semicolon {: System.out.println("\n\nExpresion logica correcta. Valor final: "+ eval.valor +"\n\n"); :};

El resultado que imprime por pantalla es:

APERTURA_PAR [(]FALSE [false] OPAND [and] APERTURA_PAR [(]NUMERO [74] OPMAYORI [>=] NUMERO [34]CIERRE_PAR [)]CIERRE_PAR [)] OPXOR [xor] NUMERO [45] OPMENOR [<] NUMERO [78] SEMICOLON [;] NUMERO [345]

Expresion logica correcta. Valor final: true