EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 1 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero 5 5 1 En esta diapositiva se muestra el árbol.

Slides:



Advertisements
Presentaciones similares
Algoritmo: Es una serie de procesos a seguir para la solución de un problema. Diagrama de Flujo: Es la representación de un algoritmo en forma jerárquica.
Advertisements

Lenguaje C++.
Traductor DDS en CUP Expresiones lógicas.
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.
Animación del segundo ejercicio de la práctica 12 opcional (herramienta ANTLR)
Estrella 0 - Fundamentos de la Programación
¿Compilador ? Es un traductor que convierte un texto escrito en un lenguaje fuente y lo traduce a un programa objeto en código máquina.
Tema 4b Operadores.
Repaso para la construcción del intérprete 2012
Compuertas lógicas Puertas lógicas.
Traducción dirigida por la Sintaxis
Temas Operaciones básicas Operaciones Operadores Aritméticos
Analizadores semánticos: DDS y EDT
Ingeniero Anyelo Quintero
ÁRBOLES DE EXPRESION.
Programación.
Subrutinas.
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Arboles Binarios de expresiones
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Semana 5 Subprogramas..
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 3- 1.
Sistemas de Numeración
T RADUCTORES EDT CON ANTLR. CASO DE PRUEBA EDT CON ANTLR A continuación realizaremos una representación del árbol generado para la siguiente operación.
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.
FUNDAMENTOS DE PROGRAMACIÓN
Tema 2: Los tipos de datos
Manejo de Vectores y Matirces
Procesamiento digital Parte 3 - Filtros
Autora: Francisca Montañez Muñoz. Hojas de cálculo, II 1 09 Fórmulas en Excel Una fórmula es una ecuación que calcula un nuevo valor a partir de otros.
Tipo de Datos Básicos.
ESTRUCTURA DE DATOS ESD-243
7 4 Enteros a. barriga.
Operaciones combinadas
FORMA INTERNA DE REPRESENTAR
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
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.
RESTA DE FRACCIONES DEL PRIMER TIPO.
Elementos básicos del lenguaje
(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.
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Divisibilidad 1. Múltiplos y divisores de un número
Presten mucha atención.
Apuntes de Matemáticas 3º ESO
SUMA DE FRACCIONES SEGUNDO TIPO.
EXCEL 2007 hoja de cálculo HOJAS: DESDE HASTA FILAS: VAN DESDE LA HASTA 1´048,576. COLUMNAS: VAN DESDE LA AA AA HASTA LA XFD XFD.
INTRODUCCIÓN AL LENGUAJE C++
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Fracciones y decimales
INTRODUCCION A LA PROGRAMACION
Fracciones simples.
PRINCIPIOS DE PROGRAMACIÓN
Carlos, cesar y carolayn
Qué significa resolver un problema?
Devuelve el valor lógico FALSO. Sintaxis: FALSO( ) Observación: También puede escribir la palabra FALSO directamente en la hoja de cálculo o en la fórmula.
Traductores EDT con ANTLR Animación de funcionamiento A  E ; A E  T E1 E1  + T E1 | - T E1| λ T  F T1 T1  * F T1 | / F T1| λ F  ( E ) | num | λ.
ACTIVIDADES FECHA: JULIO 6 AL 10 TEMA: FORMULAS Y FUNCIONES BÁSICAS EN LA HOJA DE CALCULO EXCEL PROPÓSITO: IDENTIFICAR LAS FORMULAS Y FUNCIONES BÁSICAS.
Algoritmos en Pseudocódigo
Programación de Sistemas
Clase 1 Gabriela Araya Baez.. Char: Variable que almacena caracteres. Int: Variable que almacena enteros. Float: Variable que almacena decimales. Doble:
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación ENSAMBLADOR MC BEATRIZ BELTRÁN MARTÍNEZ.
Lenguaje de Programación II PLAN DE EVALUACIÓN CONTENIDO MODALIDAD DE EVAL. PONDERACIÓN INTRODUCCIÓN BÁSICA AL LENGUAJE DE PROGRAMACIÓN.
 Inicio/Final Se utiliza para indicar el inicio y el final de un diagrama; del Inicio sólo puede salir una línea de flujo y al Final sólo debe llegar.
Tema 4: La divisibilidad
ALGORITMOS Asignatura: Informática. Algoritmos Conjunto de instrucciones ordenadas de forma lógica y precisa, con un inicio y fin que permite resolver.
Introducción a programación web Martin Esses. En las presentaciones anteriores, vimos como enviar datos a un controlador usando POST y como generar formularios.
ANDRADE PALENCIA MARIA CARDONA GUISAO MARYUDIS CUESTA MENA DORIS NELCY PALACIOS PALACIOS.
Transcripción de la presentació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 generado por la cadena de entrada. A continuación se explica detalladamente cada paso seguido por el Esquema De Traducción con ANTLR.

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 2 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero A “f” se asigna el valor reconocido por “numero” como una cadena(en este caso “1”). f returns [String ret=""]: … | num=NUMERO {$ret=$num.text;} ;

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 3 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero El valor de tipo cadena que llega de “f” se convierte a tipo entero y se pasa como atributo heredado a “t1”. t returns [int resul=0;]: num1=f num=t1 [Integer.parseInt($num1.ret)] {$resul=$num.resul;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 4 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero El valor que recibe “t1” como atributo heredado es devuelto como atributo sintetizado, ya que en este caso es una producción lambda y no se realizan otras acciones semánticas. t1 [int n1] returns [int resul=0;] : …| {$resul=$n1;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 5 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero El valor calculado como atributo sintetizado es propagado también por la producción “t”. t returns [int resul=0;]: num1=f num=t1 [Integer.parseInt($num1.ret)] {$resul=$num.resul;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 6 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero Ese valor recibido de “t” (se recuerda que es un entero igual a 1) es pasado como atributo heredado a “e1”, para realizar las operaciones necesarias. e returns [int resul=0]: num1=t num=e1 [$num1.resul] {$resul=$num.resul;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 7 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero En este punto “e1” cuenta con el valor (1) que recibe en forma de atributo heredado de “e”, pero antes de operar se necesita el otro operando, de forma que se calcula.

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 8 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero A “f” se asigna el valor reconocido por “numero” como una cadena(en este caso “5”). f returns [String ret=""]: … | num=NUMERO {$ret=$num.text;} ;

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 9 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero El valor de tipo cadena que llega de “f” se convierte a tipo entero y se pasa como atributo heredado a “t1”. t returns [int resul=0;]: num1=f num=t1 [Integer.parseInt($num1.ret)] {$resul=$num.resul;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 10 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero El valor que recibe “t1” como atributo heredado es devuelto como atributo sintetizado, ya que en este caso es una producción lambda y no se realizan otras acciones semánticas. t1 [int n1] returns [int resul=0;] : …| {$resul=$n1;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 11 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero El valor calculado como atributo sintetizado es propagado también por la producción “t” hacia “e1”. t returns [int resul=0;]: num1=f num=t1 [Integer.parseInt($num1.ret)] {$resul=$num.resul;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 12 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero En este punto la producción “e1” tiene el primer valor entero (1), el operador suma, el segundo valor (5) y pasa a “e1” como atributo heredado el resultado de la operación (1+5=6). e1 [int n1] returns [int resul=0] : OPSUMA num2=t num=e1[$n1+$num2.resul] {$resul=$num.resul;}

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 13 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “e1” es una producción lambda, por lo tanto lo único que hace es devolver como atributo sintetizado el atributo heredado que recibió. e1 [int n1] returns [int resul=0] : … | {$resul=$n1;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 14 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “e1” sigue propagando el valor sintetizado (6). e1 [int n1] returns [int resul=0] : OPSUMA num2=t num=e1[$n1+$num2.resul] {$resul=$num.resul;}

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 15 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “e” propaga el valor del atributo sintetizado hacia “f”. e returns [int resul=0]: num1=t num=e1 [$num1.resul] {$resul=$num.resul;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 16 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “f” propaga el valor del atributo sintetizado hacia “t”, pero como vimos antes, “f” propaga un valor de tipo cadena y recibe un entero, de manera que debe convertirlo. f returns [String ret=""]: | '(' exp=e ')' {$ret=Integer.toString($exp.resul);}

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 17 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “t” convierte a entero el valor del atributo sintetizado que recibe de “f” y lo pasa como atributo heredado a “t1”(6). t returns [int resul=0;]: num1=f num=t1 [Integer.parseInt($num1.ret)] {$resul=$num.resul;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 18 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero A “f” se asigna el valor reconocido por “numero” como una cadena(en este caso “5”) y la propaga hacia “t1”. f returns [String ret=""]: … | num=NUMERO {$ret=$num.text;} ;

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 19 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “t1” se encuentra con el valor heredado de “t”(6) y el valor reconocido por “f”(“5” de tipo cadena), realiza la operación de multiplicación convirtiendo antes el “5” a tipo entero, y el resultado lo pasa como atributo heredado a “t1”. t1 [int n1] returns [int resul=0;] : OPMULT num2=f num=t1[$n1*Integer.parseInt($num2.ret)] {$resul=$num.resul;} |…;

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 20 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “t1” en este caso es una producción lambda, y la acción semántica lo único que realiza es el paso del valor del atributo heredado como atributo sintetizado hacia “t1”. t1 [int n1] returns [int resul=0;] : … | {$resul=$n1;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 21 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “t1” propaga el valor recibido(30) hacia “t” con la siguiente acción semántica. t1 [int n1] returns [int resul=0;] : OPMULT num2=f num=t1[$n1*Integer.parseInt($num2.ret)] {$resul=$num.resul;}

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 22 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “t” propaga el valor recibido(30) hacia “e” con la siguiente acción semántica. t returns [int resul=0;]: num1=f num=t1 [Integer.parseInt($num1.ret)] {$resul=$num.resul;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 23 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “e” recibe el valor generado (30) como atributo sintetizado, y lo pasa a “e1” como valor heredado por si hubiese que realizar operaciones. e returns [int resul=0]: num1=t num=e1 [$num1.resul] {$resul=$num.resul;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 24 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “e1” al ser una producción lambda devuelve en forma de atributo sintetizado el valor del atributo heredado recibido. e1 [int n1] returns [int resul=0] : … | {$resul=$n1;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 25 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “e” propaga el valor recibido de “e1” que es 30 hacia “a”. e returns [int resul=0]: num1=t num=e1 [$num1.resul] {$resul=$num.resul;};

EDT con ANTLR a e; e1t )e ( f Entrada: (1+5)*5; 26 a t1 f OPMULT numerote1 ft1 numero e1t OPSUMA ft1 numero “a” muestra por la salida estándar el resultado de la operación (1+5)*5. Que recibió de “e”. a : num=e SEMICOLON {System.out.println("\n\nReconocida expresion aritmetica. Valor final: " + num); } a | ;