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.

Slides:



Advertisements
Presentaciones similares
ESTRUCTURAS DE PROGRAMACIÓN
Advertisements

CRITERIO OBJETIVO EN LA COMPARACION DE CAPITALES FINANCIEROS
Traductor DDS en CUP Expresiones lógicas.
Animación del Traductor DDS con CUP
Animación del segundo ejercicio de la práctica 12 opcional (herramienta ANTLR)
Filminas Segunda semana
Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes Generación de código intermedio II
Tema I. LAS FRACCIONES 3º de la ESO Sara Muñoz.1ºBACH Ciencias.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS.
DERIVADA DE UNA FUNCION REAL
PHP-MYSQL OPERADORES EN PHP
Técnico en programación de Software
Traducción dirigida por la Sintaxis
CAPITULO 2 La Representación del Conocimiento
Analizadores semánticos: DDS y EDT
VISUAL BASIC CONSOLA Todas las ordenes o instrucciones se digitan dentro de sub Main() y End Sub ÁREA DE TRABAJO: Las aplicaciones de consola son aquellas.
Conceptos Básicos de Java
Programación.
ANIMACIÓN Traductor DDT con CUP. En esta animación se puede ver el árbol generado del traductor ascendente mediante transparencias realizadas en PowerPoint.
T RADUCTORES DDS CON CUP Práctica Optativa 12. CASO DE PRUEBA DDS CON CUP A continuación realizaremos una representación del árbol generado para la siguiente.
Traductores DDS con CUP Ejemplo. Cadena de entrada : false or ( 1 >= 0 ) ;
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
MICROSOFT EXCEL TUTORIAL
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Analizador sintáctico Prácticas EDI - © Juan Ramón Pérez1.
APLICACIONES DE PILAS Estructuras de Datos.
Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
Operadores de comparación en PHP Programación en Internet II.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Programación de Computadores
3ER SEMESTRE PROGRAMACIÓN INGENIERIA AGROINDSTRIAL I Unidad Nº Técnicas de Programación 2.- Programación Estructurada 3.- Programación Orientada.
Procesadores del Lenguaje
Traductores EDT con ANTLR. Introducción Los siguientes pasos facilitarán el seguimiento de la animación:  Primero se mostrará la expresión aritmética.
FUNCIONES LOGICAS SI(PL;V_V;V_F)
Teoría de lenguajes y compiladores
INGENIERIA EN SISTEMAS COMPUTACIONALES
ANALISIS SINTACTICO Parte I
Estructura de Datos y Algoritmos
1.1 Concepto y terminología
ORDEN DE LAS FRACCIONES:
CRIPTOARITMÉTICA ¿Qué se esconde detrás de las palabras?
ESTRUCTURA DE DATOS ESD-243
Programación Básica con NQC Patricio A. Castillo Pizarro 25/08/2007.
Introducción al Análisis Sintáctico
Tema 3: Operadores Antonio J. Sierra. Índice Aritméticos A nivel de bit Relacionales Lógicos Asignación.
(false and (74 >= 34)) xor 45 < 78 ; El análisis semántico en CUP se hace de forma ascendente, por ello se parte del árbol completo para su explicación.
Mejorar la gestión del vacio 1Prácticas EDI - © Juan Ramón Pérez.
(1+5*5)+(3*2); El análisis semántico en ANTLR se hace de forma descendente, por ello se va desarrollando el árbol completo desde el inicio para su explicación.
El Concepto de Tipo Los tipos permiten indicar la característica de los valores (datos) manipulados en un programa. Toda variable tiene asociado un tipo.
ETAPAS PARA SOLUCIONAR UN PROBLEMA
Introducción a la programación
EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 1 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero En esta diapositiva se muestra el árbol.
Estructura de Datos M.C. José Andrés Vázquez Flores FCC/BUAP
UCLA – DAC M. Sc. Jorge E. Hernández H.
Traductores DDS con CUP. Introducción Los siguientes pasos facilitarán el seguimiento de la animación:  Primero se mostrará la expresión lógica que se.
Términos algoritmo diseñar algoritmo implementar algoritmo
INTRODUCCION A LA PROGRAMACION
MANUAL DE EXCEL.
El proceso de compilación
Colisiones.. Introducción Algo que vemos mucho en bastantes videojuegos, y que por el momento no se ha visto “bien”, son las colisiones, pero, para empezar;
Estructuras de Decisión
int cantidad, horas, cuota; float precio, peso; cantidad = 5; // Le asigno un número a la variable Cantidad; horas = // Le asigno 30 a la variable.
Se considera la expresión (a-b)*(c+(d/e)) su árbol es:
Suma y resta de monomios
RECTAS Primera Parte.
Lenguaje de Programación II PLAN DE EVALUACIÓN CONTENIDO MODALIDAD DE EVAL. PONDERACIÓN INTRODUCCIÓN BÁSICA AL LENGUAJE DE PROGRAMACIÓN.
Décimo Curso de Programación Básica con NQC “Segunda Clase” Cristián Arenas Ulloa Agosto 29 de 2009.
1 Clase 6: control (1ª parte) iic1102 – introducción a la programación.
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
Transcripción de la presentación:

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 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 ;

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.

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.

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.

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

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

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

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

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

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