t raductores dds con cup práctica optativa 12. caso de prueba dds con cup a continuación...

Post on 02-Apr-2015

107 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

TRADUCTORES DDS CON CUPPráctica Optativa 12

CASO DE PRUEBA DDS CON CUP

A continuación realizaremos una representación del árbol generado para la siguiente expresión lógica:

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

A

Comenzamos por el axioma:

A := L

L := L xor J

J := C

C := numero opmenor numero

L := J

J := apertura_parentesis L cierre_parentesis

L := L and J

J := apertura_parentesis L cierre_parentesis

L := J

J := C

C := numero opmayori numero

L := J

J := vfalse

J:=vfalse {:

Simbolo s=new Simbolo();

s.valor=false;RESULT = s;

:}

Evaluación de la expresión lógica mediante análisis ascendente del árbol sintáctico:

L::=J:j {: Simbolo s=new Simbolo();

s.valor=j.valor;

RESULT = s; :}

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

J::=C:c {:Simbolo s=new Simbolo();

s.valor=c.valor;

RESULT = s; :}

L::=J:j {: Simbolo s=new Simbolo();

s.valor=j.valor;

RESULT = s;:}

J::=apertura_parentesis L:l cierre_parentesis {:Simbolo s=new Simbolo();

s.valor=l.valor;

RESULT = s; :}

L::=L:l opand J:j {:Simbolo s=new Simbolo();

s.valor=(l.valor && j.valor);

RESULT = s;:}

J::=apertura_parentesis L:l cierre_parentesis {:Simbolo s=new Simbolo();

s.valor=l.valor;

RESULT = s;:}

L::=J:j {:Simbolo s=new Simbolo();

s.valor=j.valor;

RESULT = s;:}

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

J::=C:c {: Simbolo s=new Simbolo();

s.valor=c.valor;

RESULT = s;:}

L::=L:l opxor J:j{:Simbolo s=new Simbolo();

s.valor=(l.valor != j.valor);

RESULT = s;:}

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

Resultado producido por la expresió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]

Expresión lógica correcta. Valor final: true

top related