Download ppt - Práctica 11

Transcript
Page 1: Práctica 11

Práctica 11Práctica 11Traductor DSS con CUP

Page 2: Práctica 11

INTRODUCCIÓNINTRODUCCIÓNLa práctica nos pide realizar una

definición dirigida por sintaxis a partir de una gramática que reconoce expresiones lógicas y con ayuda de CUP.

Cabe resaltar que CUP solo nos permite manejar atributos sintetizados en las acciones semáticas.

Page 3: Práctica 11

FUNCIONAMIENTOFUNCIONAMIENTOPara calcular el resultado de la

expresión booleana se ira calculando por los niveles del árbol sintáctico hasta llegar a la raíz.

Page 4: Práctica 11

FUNCIONAMIENTOFUNCIONAMIENTOA continuación, explicaré que

acciones semánticas ejecuto en cada regla de la gramática.

Después utilizaré varios ejemplos para consolidar mi explicación.

Page 5: Práctica 11

FUNCIONAMIENTOFUNCIONAMIENTOJ::=(L) | not (L) | true | false | C

En la primera, se transmite el valor de L a J sin realizar ninguna operación sobre el valor.

En la segunda, se transmite también el valor de L a J aplicando el operador not sobre el valor (El valor true se transmitirá en false y viceversa).

En la tercera, se crea un objeto Boolean con el valor true, para transmitirlo a J.

En la cuarta, al igual que en la tercera, se crea el objeto Boolean con el valor false, para transmitirlo a J.

En la quinta, se transmite el valor contenido en C a J.

Page 6: Práctica 11

FUNCIONAMIENTOFUNCIONAMIENTO C ::= numero == numero | numero != numero |

numero < numero | numero > numero | numero <= numero | numero >= numero

A partir del lexema reconocido en el análisis léxico, los transformamos en números enteros (ya que no reconoce números decimales) y realizamos la comparación determinada y traspasamos el resultado a C.

Page 7: Práctica 11

FUNCIONAMIENTOFUNCIONAMIENTOL:: L and J | L or J | L nand J | L nor J |L xor J | L xnor J | JSupuestamente, L y J contienen los

resultados de los nodos que tienen debajo. Así que cogemos los valores resultantes en L y J, aplicamos la operación sobre los valores, y transmitimos el valor resultante a L. En el caso de la L::=J se transmite el valor de J a L sin realizar ninguna operación sobre el valor.

Page 8: Práctica 11

FUNCIONAMIENTOFUNCIONAMIENTOA ::= L ; A | L ;En esta apartado al terminar de

reconocer L aplicamos una acción semántica para imprimir el valor calculado anteriormente.

Page 9: Práctica 11

EJEMPLOSEJEMPLOS Reconocemos el valor False.

False

Page 10: Práctica 11

EJEMPLOSEJEMPLOS Transmitimos el valor reconocido a J

False

Page 11: Práctica 11

EJEMPLOSEJEMPLOS Reconocemos el valor true.

True

Page 12: Práctica 11

EJEMPLOSEJEMPLOS Transmitimos el valor reconocido a J

True

Page 13: Práctica 11

EJEMPLOSEJEMPLOS Transmitimos el valor de J a L

True

False

Page 14: Práctica 11

EJEMPLOSEJEMPLOS Transmitimos el valor de J a L y realizamos la

operación.

TrueFalse

Page 15: Práctica 11

EJEMPLOSEJEMPLOS Transmitimos el valor resultante a L

False

Page 16: Práctica 11

EJEMPLOSEJEMPLOS Realizamos la operación y trasmitimos el valor a C

True

45 78

Page 17: Práctica 11

EJEMPLOSEJEMPLOS Transmitimos el valor de C a J

False

True

Page 18: Práctica 11

EJEMPLOSEJEMPLOS Realizamos la operación y la transmitimos a L

False

True

Page 19: Práctica 11

EJEMPLOSEJEMPLOS Realizamos la operación y la transmitimos a L

True

Page 20: Práctica 11

EJEMPLOSEJEMPLOS Imprimimos el valor resultante

True

TRUE