La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

A NIMACIONES PL-P RÁCTICA 12 CUP. A NÁLISIS CON CUP Introducción. La expresión que va a ser analizada es la siguiente: Se utilizará la misma nomenclatura.

Presentaciones similares


Presentación del tema: "A NIMACIONES PL-P RÁCTICA 12 CUP. A NÁLISIS CON CUP Introducción. La expresión que va a ser analizada es la siguiente: Se utilizará la misma nomenclatura."— Transcripción de la presentación:

1 A NIMACIONES PL-P RÁCTICA 12 CUP

2 A NÁLISIS CON CUP Introducción. La expresión que va a ser analizada es la siguiente: Se utilizará la misma nomenclatura que en clase, atributos atributos.s para los sintetizados. No se tienen atributos.h pues nos encontramos ante DDS Para trasladar el valor de los no terminales se han declarado estos como booleanos de manera que puedan ascender libremente en el árbol del analizador. Por lo tanto NT.s es un valor booleanos Dado que para entender el funcionamiento se necesita una única expresión. Se omite en el gráfico la primera producción que da lugar a la posibilidad de introducir varias cadenas: A ::= L ; A | L ;

3 L L (L J num 234 ==num 12 ) andJ (L J num 120 !=num 13 A NÁLISIS CON CUP Cuando realizamos el análisis con DDS todo lo que podemos es trabajar con atributos sintetizados, por lo tanto el esquema de ejecución queda como sigue.

4 L L (L J num 234 ==num 12 ) andJ (L J num 120 !=num 13 A NÁLISIS CON CUP Tras comenzar el análisis las producciones se van desarrollando sin realizar ninguna acción semántica hasta llegar a reconocer el token número con valor 234. El valor 234 asciende hacia arriba.

5 L L (L J num 234 ==num 12 ) andJ (L J num 120 !=num 13 A NÁLISIS CON CUP Lo mismo pasa con el token. Este token también asciende para ponerse como atributo sintetizado de num.

6 L L (L J num 234 ==num 12 ) andJ (L J num 120 !=num 13 A NÁLISIS CON CUP Una vez que en tenemos los dos operandos, salta la acción semántica de J realizando la comparación de igualdad entre ambos números. En este caso la acción semántica que se dispara es: C ::= numero:num1 opigual numero:num2 {: int op1 = Integer.parseInt(num1); int op2 = Integer.parseInt(num2); RESULT = op1 == op2; :} Como se puede ver la acción semántica devuelve un true o un false al evaluar la condición num1.lex = 234 num2.lex = 12 J = 234 == 12 = false

7 L L (L J num 234 ==num 12 ) andJ (L J num 120 !=num 13 A NÁLISIS CON CUP El valor de la evaluación sigue ascendiendo en forma de atributo sintetizado hacia arriba, hasta llegar a la L.s. En este caso se detiene pues esta L es un operando de una operación lógica. L.s = false

8 L L (L J num 234 ==num 12 ) andJ (L J num 120 !=num 13 A NÁLISIS CON CUP Con el valor en L se procede a desarrollar la rama J del árbol, esperando a tener su valor para realizar la operación (recordemos que estamos con DDS) Por lo tanto evaluamos la rama J L.s = false

9 L L (L J num 234 ==num 12 ) andJ (L J num 120 !=num 13 A NÁLISIS CON CUP Lo primero que sucede es el reconomiento de los dos tokens numéricos en este caso 120 y 13. Al igual que en las diapositivas 4 y 5. num1.lex = 120 num2.lex = 120

10 L L (L J num 234 ==num 12 ) andJ (L J num 120 !=num 13 A NÁLISIS CON CUP Una vez que tenemos los operandos de J realizamos su acción semántica, en este caso una comparación en la que el operando es un «». La evaluación de esta operación ascenderá como atributo sintetizado a través del árbol hasta llegar a J. La producción semántica que hace esto es: C ::= numero:num1 opdist numero:num2 {: int op1 = Integer.parseInt(num1); int op2 = Integer.parseInt(num2); RESULT = op1 != op2; :} num1.lex=120 num2.lex=13 J.h = num1 != num2 = true

11 L L (L J num 234 ==num 12 ) andJ (L J num 120 !=num 13 A NÁLISIS CON CUP Tenemos ahora la última expresión pendiente, la evaluación de L and J se realiza mediante la siguiente acción semántica. Su resultado se pasa como atributo sintetizado de L y termina la evaluación de la operación. L ::= L:op1 opand J:op2 {: RESULT = op1 && op2; :} Como se puede observar el resultado final de la operación es un false que se muestra por pantalla. L.s=false J.s= true L = L.s and J.s = false FALSE


Descargar ppt "A NIMACIONES PL-P RÁCTICA 12 CUP. A NÁLISIS CON CUP Introducción. La expresión que va a ser analizada es la siguiente: Se utilizará la misma nomenclatura."

Presentaciones similares


Anuncios Google