Práctica 11

Preview:

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

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

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.

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.

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.

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.

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.

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.

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

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

EJEMPLOSEJEMPLOS Reconocemos el valor False.

False

EJEMPLOSEJEMPLOS Transmitimos el valor reconocido a J

False

EJEMPLOSEJEMPLOS Reconocemos el valor true.

True

EJEMPLOSEJEMPLOS Transmitimos el valor reconocido a J

True

EJEMPLOSEJEMPLOS Transmitimos el valor de J a L

True

False

EJEMPLOSEJEMPLOS Transmitimos el valor de J a L y realizamos la

operación.

TrueFalse

EJEMPLOSEJEMPLOS Transmitimos el valor resultante a L

False

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

True

45 78

EJEMPLOSEJEMPLOS Transmitimos el valor de C a J

False

True

EJEMPLOSEJEMPLOS Realizamos la operación y la transmitimos a L

False

True

EJEMPLOSEJEMPLOS Realizamos la operación y la transmitimos a L

True

EJEMPLOSEJEMPLOS Imprimimos el valor resultante

True

TRUE

Recommended