1 / 20

Práctica 11

Práctica 11. Traductor DSS con CUP. INTRODUCCIÓN. La 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.

maia-dorsey
Download Presentation

Práctica 11

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Práctica 11 Traductor DSS con CUP

  2. INTRODUCCIÓN • La 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.

  3. FUNCIONAMIENTO • Para calcular el resultado de la expresión booleana se ira calculando por los niveles del árbol sintáctico hasta llegar a la raíz. raíz Hay que transmitir el valor true (resultado) hasta el nodo raiz true or true

  4. FUNCIONAMIENTO • A 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.

  5. FUNCIONAMIENTO • J::=(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.

  6. FUNCIONAMIENTO • 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.

  7. FUNCIONAMIENTO • L:: L and J | L or J | L nand J | L nor J | L xor J | L xnor J | J • Supuestamente, 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.

  8. FUNCIONAMIENTO • A ::= L ; A | L ; • En esta apartado al terminar de reconocer L aplicamos una acción semántica para imprimir el valor calculado anteriormente.

  9. EJEMPLOS • Reconocemos el valor False. (falseandtrue) xor 45 < 78 ; J False False

  10. EJEMPLOS • Transmitimos el valor reconocido a J (falseandtrue) xor 45 < 78 ; J False False

  11. EJEMPLOS • Reconocemos el valor true. (falseandtrue) xor 45 < 78 ; J True True

  12. EJEMPLOS • Transmitimos el valor reconocido a J (falseandtrue) xor 45 < 78 ; True J True

  13. EJEMPLOS • Transmitimos el valor de J a L (falseandtrue) xor 45 < 78 ; L L and J True J False

  14. EJEMPLOS • Transmitimos el valor de J a L y realizamos la operación. (falseandtrue) xor 45 < 78 ; L L and J True False J

  15. EJEMPLOS • Transmitimos el valor resultante a L (falseandtrue) xor 45 < 78 ; False L L and J J

  16. EJEMPLOS • Realizamos la operación y trasmitimos el valor a C (falseandtrue) xor45 < 78 ; True C NUM < NUM 45 78

  17. EJEMPLOS • Transmitimos el valor de C a J (falseandtrue) xor 45 < 78 ; L L xor J False C True

  18. EJEMPLOS • Realizamos la operación y la transmitimos a L (falseandtrue) xor 45 < 78 ; L L xor J True False C

  19. EJEMPLOS • Realizamos la operación y la transmitimos a L (falseandtrue) xor 45 < 78 ; True L L xor J C

  20. EJEMPLOS TRUE • Imprimimos el valor resultante (falseandtrue) xor 45 < 78 ; A L ; True

More Related