Práctica 11
-
Upload
maia-dorsey -
Category
Documents
-
view
46 -
download
1
description
Transcript of Práctica 11
![Page 1: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/1.jpg)
Práctica 11Práctica 11Traductor DSS con CUP
![Page 2: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/2.jpg)
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](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/3.jpg)
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](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/4.jpg)
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](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/5.jpg)
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](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/6.jpg)
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](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/7.jpg)
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](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/8.jpg)
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](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/9.jpg)
EJEMPLOSEJEMPLOS Reconocemos el valor False.
False
![Page 10: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/10.jpg)
EJEMPLOSEJEMPLOS Transmitimos el valor reconocido a J
False
![Page 11: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/11.jpg)
EJEMPLOSEJEMPLOS Reconocemos el valor true.
True
![Page 12: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/12.jpg)
EJEMPLOSEJEMPLOS Transmitimos el valor reconocido a J
True
![Page 13: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/13.jpg)
EJEMPLOSEJEMPLOS Transmitimos el valor de J a L
True
False
![Page 14: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/14.jpg)
EJEMPLOSEJEMPLOS Transmitimos el valor de J a L y realizamos la
operación.
TrueFalse
![Page 15: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/15.jpg)
EJEMPLOSEJEMPLOS Transmitimos el valor resultante a L
False
![Page 16: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/16.jpg)
EJEMPLOSEJEMPLOS Realizamos la operación y trasmitimos el valor a C
True
45 78
![Page 17: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/17.jpg)
EJEMPLOSEJEMPLOS Transmitimos el valor de C a J
False
True
![Page 18: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/18.jpg)
EJEMPLOSEJEMPLOS Realizamos la operación y la transmitimos a L
False
True
![Page 19: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/19.jpg)
EJEMPLOSEJEMPLOS Realizamos la operación y la transmitimos a L
True
![Page 20: Práctica 11](https://reader030.fdocumento.com/reader030/viewer/2022032414/5681333e550346895d9a34ce/html5/thumbnails/20.jpg)
EJEMPLOSEJEMPLOS Imprimimos el valor resultante
True
TRUE