Ver Mensaje Individual
  #9  
Antiguo 28-02-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Cita:
Empezado por donpedro Ver Mensaje
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..
Tal vez te suena demasiado bruto mi comentario pero si es como dices que están en blanco entonces el problema no es nuestro sino de que tu como estudiante y tu profesor/a se pongan a sentar y hablar al respecto.
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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita