380 likes | 511 Views
Práctica Optativa 11. Procesadores de los Lenguajes 2010/2011 Traductor DDS con CUP. Traductor DDS con CUP. Se va a mostrar el árbol sintáctico y el paso de los atributos para el traductor DDS con CUP que se nos presenta en la práctica. La cadena de entrada usada es la proporcionada también:
E N D
Práctica Optativa 11 Procesadores de los Lenguajes 2010/2011 Traductor DDS con CUP
Traductor DDS con CUP • Se va a mostrar el árbol sintáctico y el paso de los atributos para el traductor DDS con CUP que se nos presenta en la práctica. • La cadena de entrada usada es la proporcionada también: (false and (74 >= 34)) xor 45 < 78 ; 345 > 678 nand (false xnor 12 == 34) ;
Traductor DDS con CUP La cadena a reconocer es la siguiente: (false and (74 >= 34)) xor 45 < 78 ; 345 > 678 nand (false xnor 12 == 34) ; Se empieza a generar el árbol sintáctico como se ha hecho hasta el momento y se obtiene el árbol que se puede observar en la siguiente diapositiva. Los nodos poseen un atributo donde almacenan el valor necesario y se trata del medio necesario para transmitir información a otros nodos. Las diapositivas no se van a centrar en como construir el árbol sintáctico si no en como se traspasan los atributos mientras se crea dicho árbol.
Traductor DDS con CUP Árbol sintáctico:
Traductor DDS con CUP Al leer el token false, el terminal guarda en su atributo el valor false y lo transmite a su nodo padre, J.
Traductor DDS con CUP En este paso, el atributo de J es transmitido a su nodo padre L.
Traductor DDS con CUP En este punto, L transmite su atributo a su nodo padre L. El nodo padre necesita el valor del atributo de su nodo hijo J, por lo que tiene que esperar a que se obtenga ese valor.
Traductor DDS con CUP El terminal NUMERO, reconoce el número 34 y lo transmite a su nodo padre. Este tiene que esperar a tener la información de sus otros hijos.
Traductor DDS con CUP El terminal NUMERO, reconoce el número 74 y lo transmite a su nodo padre. El nodo C, al tener toda la información necesaria, guardará en su atributo la comparación correspondiente.
Traductor DDS con CUP En este caso el nodo C, realiza la operación: 34>=74 guardando en su atributo el valor correspondiente (false) y transmitiendolo a su nodo padre J.
Traductor DDS con CUP Se puede observar como el nodo J simplemente se encarga de guardar enviar a su nodo padre L, el valor que recibe de su nodo hijo C.
Traductor DDS con CUP Como los paréntesis no suponen ninguna operación, simplemente el nodo L transmite el valor de su atributo a su nodo padre J.
Traductor DDS con CUP El nodo J, transmite el valor a su nodo padre L. Éste, al tener los valores necesarios al fin, puede realizar la operación oportuna como se verá en la siguiente diapositiva.
Traductor DDS con CUP Podemos observar como L guarda el valor correspondiente a la operación: (false and false) obteniéndose el valor false y enviándoselo a su nodo padre L.
Traductor DDS con CUP L al recibir, el valor de su nodo hijo L, lo transmite a su nodo padre L como ha ocurrido en casos anteriores.
Traductor DDS con CUP Como hemos visto en casos anteriores, el nodo hijo L le transmite el valor de su atributo a su nodo padre aunque este debe esperar a tener el valor de su otro hijo para poder hallar el valor de su atributo.
Traductor DDS con CUP En terminal NUMERO, reconoce el número 45 y lo se lo pasa a un nivel superior del árbol.
Traductor DDS con CUP El terminal NUMERO reconoce el número 78 y lo transmite al no terminal C que ya puede realizar la operación oportuna y almacenarla como atributo.
Traductor DDS con CUP Se realiza la operación: 45<78 dando como resultado true, almacenándolo en su atributo y transmitiéndolo a su nodo padre J.
Traductor DDS con CUP El no terminal J, al recibir el valor de C, transmite al nodo padre L. Éste ya tiene los dos valores necesarios para operar por lo que en el siguiente paso podrá hallar el valor que deberá almacenar su atributo.
Traductor DDS con CUP El no terminal L ya puede obtener el valor de su atributo realizando la operación: false xor true, dando como resultado true. Este valor se transmite al nodo padre que coincide con el axioma donde se debe imprimir el valor resultante.
Traductor DDS con CUP Al encontrarnos en el axioma, el valor que recibe no debe ser transmitido a ningún lugar si no mostrado por pantalla. Como se ha obtenido el valor true, se muestra por pantalla y se sigue recorriendo el árbol.
Traductor DDS con CUP Como ya se ha visto el funcionamiento para el primer no terminal A, posteriormente se va a representar el funcionamiento sin necesidad de explicar cada paso.
Traductor DDS con CUP Al final, al llegar al segundo axioma se muestra por pantalla el segundo valor requerido.