T RADUCTORES DDS CON CUP Práctica Optativa 12. CASO DE PRUEBA DDS CON CUP A continuación...
Transcript of T RADUCTORES DDS CON CUP Práctica Optativa 12. CASO DE PRUEBA DDS CON CUP A continuación...
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