Top Banner
Expresiones lógicas
28

Traductor DDS en CUP

Jan 13, 2016

Download

Documents

Sissy

Traductor DDS en CUP. Expresiones lógicas. Clase Simbolo. La clase Simbolo de java permite almacenar el valor asociado a una determinada producción. Para este traductor es suficiente con definirla de la siguiente manera:. public class Simbolo { boolean valor; - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Traductor DDS en CUP

Expresiones lógicas

Page 2: Traductor DDS en CUP

Clase Simbolo

public class Simbolo{

boolean valor;public Simbolo(boolean valor){

this.valor = valor;}

}

La clase Simbolo de java permite almacenar el valor asociado a una determinada producción.

Para este traductor es suficiente con definirla de la siguiente manera:

Page 3: Traductor DDS en CUP

Gramática en CUPterminal String semicolon, apertura_parentesis, cierre_parentesis,

opand, opor, opnand, opnor, opxor, opxnor, opnot, opigual, opdist, opmenor, opmayor, opmenori, opmayori,vtrue, vfalse, numero;

non terminal Simbolo A, L, J, C;start with A;

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

:} A| L:eval semicolon {:

System.out.println("Valor final:" + eval.valor + "\n\n");:};

L ::= L:e1 opand J:e2 {:RESULT = new Simbolo(e1.valor && e2.valor);

:}| L:e1 opor J:e2 {:

RESULT = new Simbolo(e1.valor || e2.valor);:}

Page 4: Traductor DDS en CUP

Gramática en CUP| L:e1 opnand J:e2 {:

RESULT = new Simbolo(!(e1.valor && e2.valor));:}| L:e1 opnor J:e2 {:

RESULT = new Simbolo(!(e1.valor || e2.valor));:}| L:e1 opxor J:e2 {:

RESULT = new Simbolo(e1.valor ^ e2.valor);:}| L:e1 opxnor J:e2 {:

RESULT = new Simbolo(!(e1.valor ^ e2.valor));:}| J:eval {:

RESULT = new Simbolo(eval.valor);:};

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

:}

Page 5: Traductor DDS en CUP

Gramática en CUP| vtrue {:

RESULT = new Simbolo(true);:}| vfalse {:

RESULT = new Simbolo(false);:}| opnot apertura_parentesis L:eval cierre_parentesis {:

RESULT = new Simbolo(!eval.valor);:}| C:eval {:

RESULT = new Simbolo(eval.valor);:};

C ::= numero:n1 opigual numero:n2 {:RESULT = new Simbolo(Integer.parseInt(n1) ==

Integer.parseInt(n2));:}| numero:n1 opdist numero:n2 {:

RESULT = new Simbolo(Integer.parseInt(n1) != Integer.parseInt(n2));

:}

Page 6: Traductor DDS en CUP

Gramática en CUP| numero:n1 opmenor numero:n2 {:

RESULT = new Simbolo(Integer.parseInt(n1) < Integer.parseInt(n2));

:}| numero:n1 opmayor numero:n2 {:

RESULT = new Simbolo(Integer.parseInt(n1) > Integer.parseInt(n2));

:}| numero:n1 opmenori numero:n2 {:

RESULT = new Simbolo(Integer.parseInt(n1) <= Integer.parseInt(n2));

:}| numero:n1 opmayori numero:n2 {:

RESULT = new Simbolo(Integer.parseInt(n1) >= Integer.parseInt(n2));

:};

Page 7: Traductor DDS en CUP

En la animación siguiente se muestra el proceso de traducción que sigue la expresión lógica:(false and (74 >= 34));

En cada fotograma se muestra el árbol sintáctico en un determinado estado del traductor.

En rojo aparece la producción que se está analizando y en verde las acciones semánticas relacionadas.

Proceso de traducción

Page 8: Traductor DDS en CUP

Proceso de traducción

Primera producción “a”, reconoce la(s) expresión(es) que terminan en “;”.

Cadena involucrada en la producción (false and (74 >= 34));

a

Page 9: Traductor DDS en CUP

Proceso de traducción

a

l

;

Siguiente producción “l”, analiza y procesa la expresión completa

Cadena involucrada en la producción (false and (74 >= 34));

Page 10: Traductor DDS en CUP

Proceso de traducción

a

l

;

j

Siguiente producción “j”, analiza y procesa elementos terminales, expresiones dentro de paréntesis y comparaciones de números.

Cadena involucrada en la producción (false and (74 >= 34));

Page 11: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

Siguiente producción “l”, analiza y procesa la expresión completa

Cadena involucrada en la producción (false and (74 >= 34));

Page 12: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

Siguiente producción “l”, analiza y procesa la expresión completa

Cadena involucrada en la producción (false and (74 >= 34));

and

j

l

Page 13: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l j

Siguiente producción “j”, analiza y procesa elementos terminales, expresiones dentro de paréntesis y comparaciones de números.

Cadena involucrada en la producción (false and (74 >= 34));

Page 14: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

Elemento terminal “false”, se devuelve un nuevo símbolo con el valor lógico del elemento terminal.

Cadena involucrada en la producción (false and (74 >= 34));

false

Page 15: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

false

“j” devuelve el correspondiente símbolo con el valor de la expresión calculada.

Cadena involucrada en la producción (false and (74 >= 34));

Page 16: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

Siguiente producción “j”, analiza y procesa elementos terminales, expresiones dentro de paréntesis y comparaciones de números.

Cadena involucrada en la producción (false and (74 >= 34));

Page 17: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

Siguiente producción “l”, analiza y procesa la expresión completa

Cadena involucrada en la producción (false and (74 >= 34));

Page 18: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

j

Siguiente producción “j”, analiza y procesa elementos terminales, expresiones dentro de paréntesis y comparaciones de números.

Cadena involucrada en la producción (false and (74 >= 34));

Page 19: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

j

Siguiente producción “c”, analiza y procesa comparaciones de números.

Cadena involucrada en la producción (false and (74 >= 34));

c

Page 20: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

j c >=

34

74

Elementos terminales “74 >= 34”, se devuelve un nuevo símbolo con el valor lógico del resultado de la operación lógica.

Cadena involucrada en la producción (false and (74 >= 34));

true

Page 21: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

j c >=

34

74

true

“c” devuelve el correspondiente símbolo con el valor de la expresión calculada.

Cadena involucrada en la producción (false and (74 >= 34));

Page 22: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

j c >=

34

74

true

“j” devuelve el correspondiente símbolo con el valor de la expresión calculada.

Cadena involucrada en la producción (false and (74 >= 34));

Page 23: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

j c >=

34

74

true

“l” devuelve el correspondiente símbolo con el valor de la expresión calculada.

Cadena involucrada en la producción (false and (74 >= 34));

Page 24: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

j c >=

34

74

false(false and true)

“j” devuelve el correspondiente símbolo con el valor de la expresión calculada (false and true).

Cadena involucrada en la producción (false and (74 >= 34));

Page 25: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

j c >=

34

74

false

“l” devuelve el correspondiente símbolo con el valor de la expresión calculada (false and true).

Cadena involucrada en la producción (false and (74 >= 34));

Page 26: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

j c >=

34

74

false

“j” devuelve el correspondiente símbolo con el valor de la expresión calculada (false and true).

Cadena involucrada en la producción (false and (74 >= 34));

Page 27: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

j c >=

34

74

false

“l” devuelve el correspondiente símbolo con el valor de la expresión calculada (false and true).

Cadena involucrada en la producción (false and (74 >= 34));

Page 28: Traductor DDS en CUP

Proceso de traducción

a

l

;

j l

)

(

and

j

l jfalse

l

)

(

j c >=

34

74

Resultado=false

Finalmente “a” recibe el valor de la expresión lógica calculada en la producción “l” y se muestra por pantalla.

Cadena involucrada en la producción (false and (74 >= 34));