FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
delphius
hola delphius, realmente les voy a ser sincero, estoy cursando el penultimo cuatrimestre de la carrera ing. en sistemas y/o computacion donde me estan dando compiladores y programacion de sistemas, realmente la maestra de compiladores no se da a entender o no sabe lo que esta dando, porque me supongo que para dar compiladores debe ser una persona que sepa programar para poder impartir esa materia y es algo que ella no sabe. ella nos ha dado lo que mencionaste y nos ha hablado del arbol sintactico pero nos ha dejado vacio totalmente. ella quiere que le hagamos un analizador lexico, sintactico y semantico. ahora el profesor de programacion de sistema nos enseño un analizador lexico que le hicieron unos estudiantes no en base a un lenguaje sino que el te identifica lo que tu escribes y te lo almacena en una tabla de simbolos por ejemplo:
si en un memo o richedit yo escribo: hola como estas a+b*c el programa lo que hace es que almacena cada palabra e identifica los simbolos los almacena y le coloca descripcion osea el coloca dentro de un stringgrid: lo que se muestra en la imagen es lo que debe hacer el analizador. pero yo lo quiero hacer con mis propias palabras reservadas, utilizando la siguiente estructura: inicio declaro a,b,r:entero a=1 b=2 r=a+b fin; y que cuando le de analizar me muestre si el codigo tiene un error y si no tiene error que me guarde cada palabra y cada simbolo en una tabla con su descripcion.....no se si me explique,,,,,,,, nunca he usado lex yacc si me puedes recomendar algun tutorial o algo donde pueda crear un analizador me seria de gran ayuda........muchas gracias delphius.. |
#2
|
||||
|
||||
Cita:
No puedes pretender, con todo respeto, que te orientemos en algo que tu profesor/a debe cumplir. Al no tener nociones de los objetivos y del alcance real del trabajo con más razón. Aquí se te puede ir asistiendo, pero teniendo algo más palpable, más concreto y en donde se nos sea posible orientar. Pero en cuento lo que se evidencia aquí es algo por una falta de conceptos formales (ya sea la culpa del profesor o del estudiante) sin una vista clara, y bien enmarcada en un aspecto muy puntual y ni que decir.... formal; porque es un trabajo a presentar en una cátedra que no es fácil de entender ni a la primera ni segunda pasada. Debes tener más que presente cuales son las consignas y objetivos reales que persigue tu profesor/a. Si dices que no se les ha comentado siquiera de Lex y Yacc entonces a mi ver no hay argumentos que sustenten la puesta en práctica de los conceptos dejándolos a ustedes en un mar de cosas muy abstractas y donde cada quien se las ingenie como venga. Y no creo que ese sea el resultado que quiere tu profesora. Mi consejo: ¡HABLA CON TU PROFESOR/A! Luego ven a aquí a por las dudas puntuales, bien concretas. Por el bien de tu trabajo, de tu regularidad, y de tu carrera... ¡HABLA! Ya estás finalizando, con más razón debes soltar el miedo a no decir: "Profe, no entiendo. ¿Puede explicarse de nuevo?" Ha... mi otro consejo: agarra el "libro del Dragón", Introducción y diseño de compiladores (o algo así era el nombre... no recuerdo bien) de Aho y otros. Yo mucho no te puedo ayudar, reconozco que al tema de compiladores lo tengo muy descuidado; ya practicamente no recuerdo nada de la teoría. No tengo a mano mis apuntes, ni el libro. Cuando yo cursé dicha cátedra empleamos una versión de Lex y Yacc que en vez de generar archivos en formato C, era para Pascal. En términos generales en Lex se cargaban las expresiones, luego éste generaba un archivo que se pasaba a Yacc y por último uno ya con esto podía probar expresiones como las que comentas y te indicaba si se ha detectado un identificador, etc. Quizá tu profesor/a tenga otra forma de llevar a la práctica lo enseñado, no lo se con total seguridad; pero es de esperarse que lo que se busca es que ustedes apliquen lo aprendido, elaborando de alguna forma, las expresiones reguales, el árbol sintáctico, etc. Diseñar un compilador no es poca cosa, (como acotación: el trabajo práctico que hice con Lex y Yacc era para dos semanas) y con todo total respeto te digo, que la forma en como tu lo pretendes hacer, me suena muy fuera de lugar... En teoría los compiladores no tienen un array con las palabras reservadas; no se ve en ese simple ejemplo que has dado algún uso de una gramática expresada ya sea como expresión regular o un autómata. Si en cambio se utilizan pilas, colas y otras estructuras de datos para auxiliarse y dar forma a sus operaciones.... Pero repito: las palabras reservadas no van así. Saludos, Saludos, |
#3
|
|||
|
|||
muchas gracias
delphius, gracias por tu amplio comentario, estare haciendo uso de tu consejo, luego les hare saber como me fue...
gracias a todos.. |
#4
|
||||
|
||||
Creeme, lo mejor para ti, y el resto de los estudiantes, lo mejor sería hablar con tu profesora para que les explique apropiadamente y les comente los lineamientos del trabajo.
Las dudas con las que has venido inicialmente son pura pinturita, algo estético y sólo es a lo que hace a un aspecto visual. Pero por dentro es lo que en verdad importa. ¿De que sirve que en pantalla te resalte con color, negrita y/o mayúscula las palabras reservadas si en realidad el sistema no cumple con lo pedido en clase? Por ello yo hice mucho incapié a que bajes más las cosas a tierra y nos comentes sobre los alcances del proyecto y nos muestre algo más palpable de lo que estás haciendo. Si tu no tienes una ideas claras, y sobre todo de lo que estuviste viendo en clases, será muy difícil que te asesoremos. Si quieres saber algo sobre Lex y Yacc, aquí hay material de consulta. Al final señala como referencia justamente el libro que yo apuntaba: Compiladores: Principios, Técnicas y herramientas de Alfred Aho y otros. (o et. all... para quienes prefieren este término) Por cierto, no necesariamente el profesor de compiladores debe saber de programación; aunque es recomendable. Mi profesora de Compiladores y Sistemas Expertos (era la misma en ambas cátedras) no maneja mucho de lenguajes pero eso no le impidió dar una de las cátedras más complejas, desafiantes y de contenidos tan interesantes, que vi en los 5 años de carrera. Me sería muy extraño que tu profesora no supiera nada de Lex y Yacc; son casi una referencia obligatoria en la cátedra, así como lo es el "libro del dragón". ¡Ánimo y ponle ganas! Como dato extra... ¡yo también sufrí en esa cátedra! Se te hace una ensalada rusa la cabeza... y mejor no me pongas a recordar... ¡LL(1) fue un tormento para mi! No le encontraba vuelta ni al derecho ni al revés ¡Y lo sigue siendo! No me preguntes como es que logré pasar el final; sólo se que me quemé las cejas por durante un mes leyendo libros, mis apuntes y practicando; y practicando... y más práctica para entenderle la mano. Ha... y una ayuda de un buen grupo de estudio en los que nos apoyábamos el uno al otro. Saludos, PD: El trabajo sobre Lex y Yacc para nosotros fue grupal |
#5
|
||||
|
||||
Hace poco leí el último libro sobre compiladores de Niklaus Wirth, y no lo vi nada complicado. Eso sí, no lo encontré en español, mucho menos en castellano, así que si no te manejas bien en inglés...
De todas formas, para cosas simples tampoco hay que liarse tanto con LL(1) y misticismos similares. Basta con algo así: Código:
REPITE Palabra := ExtraePalabra (Cadena) IF Palabra = "PALABRA1" THEN EjecutaPalabra1 (Cadena) ELSE IF Palabra = "PALABRA2" THEN EjecutaPalabra2 (Cadena) ... END IF HASTA Cadena = "" Última edición por Ñuño Martínez fecha: 07-03-2012 a las 20:28:37. |
#6
|
||||
|
||||
Cita:
Cita:
Cita:
Por algo el profe les habló de expresiones regulares, etc. El estudiante debería razonar y evaluar en cómo llevar a la práctica los conceptos. Lo que si es muy extraño que no les haya comentado alguito de Lex y Yacc; casi diría que es una obligación enseñarles eso. Además, no quisiera imaginarme semejante anidamiento de IF para reconocer tan sólo 10 palabras. No estaría demás que donpedro nos traiga novedades. Saludos, |
#7
|
|||
|
|||
Hola a todos, la semana pasada la profesora hablo de lex y yacc, estoy investigando es mas facil trabajar con lex y yacc estoy a punto de hacer el analizador luego les cuento..... gracias a todos, y a ti Delphius
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Analizador de hardwares para Ubuntu | enecumene | Linux | 7 | 29-08-2008 14:59:26 |
analizador de espectro | gaston260 | API de Windows | 0 | 02-02-2008 16:37:42 |
Analizador de Codigo Fuente | Fita | Varios | 2 | 01-06-2007 11:07:23 |
analizador de dependencias entre packages | Walter Roccaro | Varios | 1 | 07-04-2006 15:20:12 |
Loop desde el Analizador de Consultas | Jvilomar | MS SQL Server | 6 | 03-10-2005 14:41:21 |
|