Animación CUP DDS con CUP Cadena de entrada: (false and (74 >= 34)) xor 45 < 78 ;

Post on 16-Dec-2015

218 views 4 download

transcript

Animación CUPDDS con CUP

• Cadena de entrada: (false and (74 >= 34)) xor 45 < 78 ;

(false and (74 >= 34)) xor 45 < 78 ;

A

(false and (74 >= 34)) xor 45 < 78 ;

A

L

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

L and J

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

L and J

J ( L )

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

L and J

J ( L )

false J

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

L and J

J ( L )

false J

C

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

L and J

J ( L )

false J

C

n1 >= n2

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

L and J

J ( L )

false J

C

n1 >= n2

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

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

L and J

false ( L )

J

C

n1 >= n2L::=J:eval {:

Simbolo s=new Simbolo(); s.valor=eval.valor; RESULT = s;

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

false and J

( L )

J

C

n1 >= n2L::=J:eval {:

Simbolo s=new Simbolo(); s.valor=eval.valor; RESULT = s;

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

false and J

( L )

J

C

n1 >= n2

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

false and J

( L )

J

C true

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; :}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

false and J

( L )

J

true

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

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

false and J

( L )

true

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

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

false and J

( true )

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

false and J

( true )

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

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

false and J

true

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

false and true

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

false and true

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

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( L ) n1 < n2

false

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( false ) n1 < n2

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

( false ) n1 < n2

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

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

J C

false n1 < n2

(false and (74 >= 34)) xor 45 < 78 ;

A

L

L xor J

false C

n1 < n2

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

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

false xor J

C

n1 < n2

(false and (74 >= 34)) xor 45 < 78 ;

A

L

false xor J

C

n1 < n2

(false and (74 >= 34)) xor 45 < 78 ;

A

L

false xor J

C

45 < 78

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;

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

false xor J

C

true

(false and (74 >= 34)) xor 45 < 78 ;

A

L

false xor J

true

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

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

false xor true

(false and (74 >= 34)) xor 45 < 78 ;

A

L

false xor true

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

:}

(false and (74 >= 34)) xor 45 < 78 ;

A

L

true

(false and (74 >= 34)) xor 45 < 78 ;

A

true

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

(false and (74 >= 34)) xor 45 < 78 ;

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