SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: luciajose en Miércoles 20 de Octubre de 2004, 17:05
-
Hola a todos, pues la cosa es que necesito hacer un compilador muy basico y necesitaria un poco de orientacion para saber por donde tengo que empezar (qué documentacion me puede ayudar, algun otro proyecto de este tipo etc...).
Gracias.
-
primero haz todo el reconocimiento de pilas, de caracteres y como va a ser, todo,
para despues, bueno eso esta dificil, pues no se como convertir lenguaje texto a maquina
-
Ese es el problema, que no se por donde empezar para hacer todo lo que me comentas respecto al reconocimiento de pilas y demás porque vengo de hacer aplicaciones completamente diferentes.
Por lo que he leido me serviria tambien hacer un interprete que fuese ejecutando el codigo a la vez que va leyendo pero no sé por donde empezar.
Gracias.
-
que es lo que mas bnecesitas un compilador o un editor - compilador?
-
Necesito un compilador ó un interprete (lo que mas facil sea de hacer) porque lo que me van a pasar es codigo en un lenguaje de alto nivel con sentencias if, variables etc.. (algo parecido al viejo Pascal) y analizando ese codigo tengo que sacar datos. El problema es el que comento mas arrriba, que vengo de hacer un tipo muy diferente de aplicaciones y no sé por donde empezar para hacer esto. Por eso estaria muy agradecida si me podeis ayudar. Gracias.
-
Yo estoy aprendiendo ahora mismo a hacer compiladores, y es una asignatura que dura todo un año, así que no es algo trivial. Para empezar deberías informarte de lo que es un autómata, y de lo que son las gramáticas, por lo menos las gramáticas regulares y las de contexto libre.
Luego deberías leer documentación acerca de compiladores, y cuando tengas más o menos idea de lo que es un compilador, qué hace y cómo lo hace puedes mirar en esta página:
http://dinosaur.compilertools.net/ (http://dinosaur.compilertools.net/)
Ahí puedes encontrar documentación acerca del LEX y el yacc, que son dos herramientas para desarrollar compiladores en C (en C para lo que quieras, como Pascal). El LEX se ocupa del analizador léxico y el yacc del sintáctico, que como ya verás son las dos partes principales de un compilador, aunque no las únicas.
Espero que te sirva, ¡suerte!
-
Además de lo dicho también sería interesante conocer el tipo de analizador que tienes que desarrollar, es decir, ascendente(LR-0,LR-1,LALR... ) ó descendente(LL1...).
-
Solo añadir, que no te asustes, comprender qué es un autómata y cómo funciona no es complicado, las gramáticas regulares son faciles de entender, y las herramientas lex y yacc son faciles de usar. El único problema que encontré fué al intentar usarlas ... creo que por algun problema de configuración que no recuerdo. Ánimo que es mas facil de lo que parece!!
---------------------------------------------
Setimo Sentido (http://www.setimo.gooeyhost.com)
-
Mira yo llevo la materia de compiladores y mi proyecto tambien es hacer uno de estos, ahi te va yo , ya se lo que es un automata y las gramaticas, entonces, hice un programa en lex (bajo linux) , el lex es generador de analizadores lexicos, y uno de estos es la parte inicial de un compilador, te mando este codigo que analiza y saca los tokes de un archivo en lenguaje pascal. ok
para compilarlo tienes que estar en linux y desde una terminal poner los sig comandos:
# flex nombre_del_codigo.l
# gcc -o nombre lex.yy.c -lfl
# ./nombre nombre_del_archivo_en pascal
conste que tienes que saber algo de las gramaticas o del lex para entender el codigo. sale!! espero que te sirva de algo
que el poder te acompañe :lightsabre: :comp: :hola:
-
Pues la verdad es que no encuentro mucha información en Internet que me sirva de guia para empezar a investigar. ¿Sabeis de algun buen libro en español ó de alguna pagina que tenga buena documentación?
Para lo que comentais de los automatas, di una asignatura hace tres años donde (a nivel teorico y sobre papel) se trataban los automatas deterministas e indeterministas ¿os referis a los automatas desde ese punto de vista?
Muchas gracias a todos, me estais animando y ayudando.
-
Si, los autómatas son eso. Probablemente en esa asignatura también estudiaras las gramáticas y las expresiones regulares porque están bastante unidos.
-
Pues entonces voy a dar un repaso a esos temas porque siempre se van olvidando cosas si no se está de ello. Una vez que eche un vistazo a todo el tema de automatas y demás ¿alguien sabe cual sería el siguiente paso que tendría que dar?
Como siempre, muchas gracias a todos.
-
que es lo que mas bnecesitas un compilador o un editor - compilador?
:hola: Estoy interesado en encontrar la manera de trabajar con graficos en c++ pero desde los ordenadores que he tratado hacerlo no me ha sido posible en un inicio pense que era graphic.h o graphic ya que tengo algunos programas ajedres batalla naval bueno y el boton.... y se pierde la esencia. Estoy ansioso de ver trabajar c++ bueno indirectamente con graficos en los foros ya solucionaste parte de estas inquietudes pero especificamente no se que hacer para operar este modo tengo instalado c++ pero que mas debo hacer que programa debo instalar no se.....
Please dont send me to study in the net because the powerknown is in your brain thanks......................................
:ph34r: el villa
-
Una vez que eche un vistazo a todo el tema de automatas y demás ¿alguien sabe cual sería el siguiente paso que tendría que dar?
Uniendome a la conversacion, y ya que una de mis practicas va a ser un compilador, creo que puedo echar una mano.
Creo que deberias seguir los siguintes pasos:
- Echa un vistazo a la teoria de automatas, buen libro el "Introduccion a la teoria de automatas, lenguajes y computacion" de Hopcroft. Familiarizate con los lenguajes regulares, libres de contexto y demas. Otro libro interesante es "lenguajes, gramaticas y automatas" de Isasi.
- Luego profundiza en las gramáticas y todo lo relacionado con los traductores: Analisis lexico, analisis sintactico (Analisis descendente y ascendente), analisis semantico.
- Luego te metes en materia de compiladores (gramaticas atribuidas, comprobacion de tipos, tabla de simbolos, declaraciones, cuadruplas, optimacion... hay un rato), buen libro el mitico "Compiladores. Principios tecnicas y herramientas" de Aho, el guru en esto.
Para lanzarte y programar un compilador creo que las herramientas principales ya se han nombrado: Lex (flex en linux), yacc (creo que es bison el mas moderno) y conocimientos de C. Si tu gramatica es atribuida (como creo que te saldra) y tienes mas de un atributo sintetizado y heredados, deberias usar herramientas mas potentes, como por ejemplo rie (con la que lucho actualmente yo ;) , y que tampoco es tan potente).
No te asustes, como bien se ha dicho, es un tema al que se le puede dedicar un año entero, he incluso un carrera. Pero ya te digo, poco a poco veras que lo consigues.
Si necesitas algo ya sabes.
Nos vemos :hola:
-
Muchas gracias CiRRus, asi que tambien estás profundizando en el mundo de los compiladores. Pues yo estoy intentando recopilar toda la informacion posible que me vais aconsejando y voy a echar un vistazo para ver si puedo conseguir éstos libros que me comentas, porque hasta ahora encuentro poca información y la que encuentro pues no me va guiando de forma ordenada en los pasos que tengo que dar, porque como se suele decir "Hay tela para cortar".
Por otro lado estoy echando tambien un ojo a C++ de .NET y podría ser una buena opcion como lenguaje para programar el compilador.
Venga, gracias a todos y seguimos en contacto.
-
Ejemplos de compiladores (http://bari.ufps.edu.co/materias/150702/)