PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (2) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 UNIVERSIDAD DE SEVILLA E. T. S. INGENIERÍA INFORMÁTICA.

Slides:



Advertisements
Presentaciones similares
Traductor DDS en CUP Expresiones lógicas.
Advertisements

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.
Filminas Segunda semana
Análisis Lexicográfico
Teoría de Autómatas y Compiladores
HERRAMIENTAS DE WORD IDANEA MÉRIDA.
EN EXCEL SE PUEDE REALIZAR FILTROS EN CUYO FIN ES UNA FORMA RAPIDA Y FACIL DE BUSCAR UN SUBCONJUNTO EN SUB TOTALES SON CON UNA FUNCION DE RESUMEN COMO.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
Programación 1 Introducción
Traducción dirigida por la Sintaxis
2º curso Ingeniería Técnica en Informática de Sistemas UNED
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.
M.C. Meliza Contreras González
Análisis sintáctico LR: SLR (LR simple)
Lenguajes Formales de Consulta
Teoría de lenguajes y compiladores
Informática Ingeniería en Electrónica y Automática Industrial
Computación Aplicada Facultad de Ingeniería Universidad Autónoma de Querétaro Ma. Teresa García Ramírez 1.
Universidad Nacional de Jujuy Facultad de Ingeniería
Procesadores de Lenguajes
Clase #3 C++ Presentado por: Oscar Danilo Montoya Giraldo 00MjM0LWE1MWQtMjc2OGM5YTQ1YTBk/edit?pli=1.
Análisis Léxico Área Software de Base.
introducción al lenguaje
Programación de Sistemas FEI – 2008
Mg. Christian Retamal P.1 PROGRAMACIÓN LADO CLIENTE Christian Retamal Peña Magíster © en Ingeniería Industrial y Sistemas.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Al finalizar el curso el alumno será capaz de: Diseñar algoritmos utilizando estructuras estáticas de datos y programación modular.
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Prof. Víctor Aquino Urrutia
Algoritmos en Pseudocódigo
CONSTANTES DENTRO DE UN CÁLCULO O EN LOS PASOS PARA SOLUCIONAR UN PROBLEMA, EXISTIRÁN VALORES QUE NUNCA VAN A CAMBIAR Y SE LOS CONOCE COMO CONSTANTES.
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.
PARCIAL 2. LENGUAJE DE PROGRAMACIÓN UN LENGUAJE SE PUEDE DEFINIR COMO UN CONJUNTO DE PALABRAS Y FORMAS DE EXPRESIÓN POR MEDIO DE LAS CUALES SE COMUNICAN.
Programación de Sistemas 5L1B M.C. Juan Carlos Olivares Rojas L-J Salón K6 Laboratorio: L Lc2.
Unidad 2 Lenguajes, Expresiones Regulares, Autómatas
Cálculo simbólico con GeoGebra David Benítez Mojica Universidad de Caldas Innatituto Geogebra del Tolima.
2. UNA INTRODUCCION AL MINITAB M.A. NARCISO TORRES FLORES.
EXCEL 2010 CONCEPTOS BÁSICOS. SOFTWARE HOJAS DE CÁLCULO Calc una poderosa hoja de cálculo con todas las herramientas necesarias para calcular, analizar.
MODELOS LINEALES ALGEBRA DE MATRICES Uso de MatLab.
FORMULARIOS DE ACCESS Realizado Por: Alexander Mendoza Jessica Moya.
Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Lenguajes de programación Un lenguaje de programación es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
LENGUAJES GRÁMATICAS Y AUTÓMATAS
Cristina. Derivada del término en latín variabilis, variable es una palabra que representa a aquello que varía o que está.
Comando de MS-DOS. Tipos de Comandos en MS-DOS Los COMANDOS INTERNOS se ejecutan inmediatamente porque se cargan en la memoria del sistema cada vez que.
Una base de datos, a fin de ordenar la información de manera lógica, posee un orden que debe ser cumplido para acceder a la información de manera coherente.
FI-GQ-GCMU V Bienvenidos al curso de matemática ciclo V.
Gráficas de Control por Atributos Profesor Walter López.
Procesamiento del Lenguaje Natural Inaki Pedroche Aramburu Ismael Baez Cortes Angel Alberto Molina Oscar Daniel Torres Juarez
Curso de programación Visual Chart 6 (1ªEd.) OPERAR CON RETROCESOS DE FIBONACCI (2)
Tratamientos secuenciales I Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 8 Versión
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Iterables virtuales Concepto, Metodología de desarrollo y Ejemplos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
ANÁLISIS DE VARIANZA DE UN FACTOR ANOVA I Dr. en Ed. Carlos Saúl Juárez Lugo Centro Universitario UAEM Ecatepec 2015.
·El lenguaje algebraico ·Expresiones algebraicas.Valor numérico ·Monomios ·Polinomios ·Potencias de polinomios.
Diapositivas PLSQL ORACLE – Semana 2 Especialización en Desarrollo de soluciones Informáticas Universidad del Cauca Miguel Ángel Niño Zambrano.
Melissa Victoria Mendiola Peralta.  Los algoritmos son las series de pasos por los cuales se resuelven los problemas.
CODIFICACÍÓN US-ASCII ASCII es un código de caracteres basado en el alfabeto latino, tal como se usa en inglés moderno y en otras lenguas occidentales.
Diagrama de Bode Carlos Aramis Báez Gámez
UADER_FCG-Informática 2013 Coronel Paola.  Es en esta pestaña donde se le puede dar el formato básico a los números y letras. Se divide en 7 grupos:
ING. JOEL DOMINGO MEJIA GUZMAN MATEMÁTICAS II BLOQUE X. EMPLEA LOS CONCEPTOS FUNDAMENTALES DE PROBABILIDAD.
LA EVALUACIÓN DE COMPETENCIAS
PROYECTO PYTHON INTEGRANTES DEL EQUIPO: NAVA CASTILLO CYNTHIA PAOLA VÁZQUEZ ORTEGA FELYBIER.
Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
COLEGIO GENERAL SANTANDER IED Sede A Jornada Tarde “EDUCAR EN LA VIDA Y PARA LA VIDA “ Lucy Consuelo Eraso O Docente Tecnología e Informática Lucy Consuelo.
I.E.S. Sierra Palomera. Escribir un correo nuevo Correos enviados Bandeja de entrada Etiquetas Destacados.
Transcripción de la presentación:

PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (2) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 UNIVERSIDAD DE SEVILLA E. T. S. INGENIERÍA INFORMÁTICA LENGUAJES Y SISTEMAS INFORMÁTICOS

Atribución ent NUM ent NUM (abc) Escriba una gramática para reconocer 1 cadena de la forma a i b j c k imprimiendo: “Regular” (si i≠j≠k) “Independiente del contexto” (si i=j≠k o i=k≠j o j=k≠i) “Dependiente del contexto” (si i=j=k) (Maximo) Atribuya la gramática del ejemplo para calcular el máximo de todos los números que aparecen en la entrada Salto = \r|\n|\r\n Blanco = [ \t\f] Num = ("+"|"-")?[0-9]+ % {Blanco}+ {;} {Salto}+ {;} {Num} {return new Symbol(sym.NUM);}. {;} terminal NUM; non terminal ent; ent ::= ent NUM | NUM ; terminal Integer NUM; non terminal Integer ent; ent ::= ent:e NUM:n {: RESULT = new Integer(e.intValue()+n.intValue()); :} | NUM:n {: RESULT = n; :} ; Salto = \r|\n|\r\n Blanco = [ \t\f] Num = ("+"|"-")?[0-9]+ % {Blanco}+ {;} {Salto}+ {;} {Num} {return new Symbol(sym.NUM,new Integer(yytext()));}. {;} ENTRADA: (Desorden) Atribuya la gramática del ejemplo para que en el caso de encontrar dos números consecutivos x e y desordenados, los muestre en pantalla con el formato “(x,y)” La atribución permite adjuntar información adicional a los símbolos de la gramática. Esta información puede emplearse para llevar a cabo operaciones o cálculos sobre el árbol sintáctico (dándole una interpretación semántica).

Mensajes de error más elaborados Con la atribución podemos conseguir que en caso de que una cadena no encaje en la gramática se devuelva al usuario un mensaje de error más explicativo. import java_cup.runtime.Symbol; parser code {: public void syntax_error(Symbol cur_token) { System.err.print("ERROR SINTÁCTICO(" + (cur_token.left+1) + "," + (cur_token.right+1) + "): "); System.err.println("Con el token [" + cur_token.sym + "=\"" + cur_token.value + "\"]."); System.exit(-1); } :}; // Resto de las zonas de la gramática (terminales y no terminales, etc). En el Parser implementamos el método syntax_error en la gramática import java_cup.runtime.*; % %class Lexer %unicode %cup %line %column //Aquí faltaría la definición de las macros Blanco, Numero e Identificador. % {Blanco}+ {;} {Numero} {return new Symbol (sym.NUM, yyline, yycolumn, yytext());} {Identificador} {return new Symbol (sym.IDENT, yyline, yycolumn, yytext());}. {System.out.println ("Error léxico:"+yyline+","+yycolumn+" carácter "+yytext());} En el Lexer añadimos información sobre líneas y columnas

Un ejemplo de atribución ent Salto = \r|\n|\r\n Blanco = [ \t\f] Num = ("+"|"-")?[0-9]+ % {Blanco}+ {;} {Salto}+ {;} {Num} {return new Symbol(sym.NUM);}. {System.out.println ("Error léxico");} ENTRADA: terminal GUION; terminal NUM; non terminal ent, elem; ent ::= ent elem | elem ; elem ::= NUM | NUM GUION NUM ; terminal GUION; terminal Integer NUM; non terminal VectorPag ent, elem; ent ::= ent:e elem:el {: RESULT = Unir(e,n); :} | elem:el {: RESULT = el; :} ; elem ::= NUM:n {: RESULT = Pagina(n); :} | NUM:n1 GUION NUM:n2 {: RESULT = Rango(n1,n2); :} ; Salto = \r|\n|\r\n Blanco = [ \t\f] Num = ("+"|"-")?[0-9]+ % {Blanco}+ {;} {Salto}+ {;} {Num} {return new Symbol(sym.NUM,new Integer(yytext()));}. {System.out.println ("Error léxico");} elem NUM elem NUM ent elem NUM GUION (Probabilistico) Diseñe una gramática para reconocer vectores de reales con el formato ( ) y atribúyala para que indique si el vector es probabilístico (todos sus elementos suman 1 y están entre 0 y 1) mostrando “SI” o “NO” en caso contrario (Automata) Diseñe un analizador que reciba de la entrada un autómata finito descrito con el formato (Estados, Entradas, Estado inicial, Estados finales, Transiciones), p. ej: A1 = { (q0,q1,q2),(a,b),q0,(q2), ( :, :, : ) } y compruebe si se trata de un autómata finito determinista o no determinista Los atributos son de tipo Object

Otro ejemplo de atribución Salto = \r|\n|\r\n Blanco = [ \t\f] Num = ("+"|"-")?[0-9]+ % {Blanco}+ {;} {Salto}+ {;} {Num} {return new Symbol(sym.NUM);} "(" {return new Symbol(sym.BPAREN);} ")" {return new Symbol(sym.EPAREN);}. {System.out.println ("Error léxico");} ENTRADA: ((4) 5) terminal NUM, BPAREN, EPAREN; non terminal entrada, arbol; non terminal lista, elemento; entrada ::= arbol ; arbol ::= BPAREN lista EPAREN ; lista ::= lista elemento | ; elemento ::= NUM | arbol ; entrada arbol () els el NUM els el λ arbol () els el NUM λ (Profundidad) Atribuya la gramática para calcular la profundidad máxima de un árbol (para una entrada = “(1 (2 (3 (4) 5) 6 7 8) 9)” sería 4) (Anchura) Atribuya la gramática para calcular la anchura máxima de un árbol (para una entrada = “(1 (2 (3 (4) 5) 6 7 8) 9)” sería 5). entrada arbol () els el NUM els el λ arbol () els el NUM λ