Foros del Web » Programación para mayores de 30 ;) » Programación General »

Creación de compilador

Estas en el tema de Creación de compilador en el foro de Programación General en Foros del Web. Buenas amig@s de foros del web. estoy iniciando un largo viaje para la creación de un pequeño compilador y necesito de su orientación en el ...
  #1 (permalink)  
Antiguo 17/05/2011, 21:22
 
Fecha de Ingreso: mayo-2010
Mensajes: 14
Antigüedad: 14 años
Puntos: 1
Creación de compilador

Buenas amig@s de foros del web.

estoy iniciando un largo viaje para la creación de un pequeño compilador y necesito de su orientación en el tema.

soy un programador novato, se los conocimientos básicos de algunos lenguajes de programación, y quisiera solicitar de su ayuda para decidirme por algun lenguaje que me facilite la vida para la creación de un compilador y que me ayuden ha definir cada una de las etapas de compilación.

de antemano mucha gracias por sus respuestas.
  #2 (permalink)  
Antiguo 18/05/2011, 02:40
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
Respuesta: Creación de compilador

Para hacer algo como un compilador solo conozco Flex para facilitar la tarea. Flex es un analizador léxico, tendrías que aprender Flex (que tampoco es muy difícil si encuentras un buen manual). Empieza con cosas sencillas y ejemplos fáciles con Flex y después ejemplos más difíciles hasta que aprendas lo suficiente para poder hacer lo que quieres.

Para que entiendas un poco como funciona Flex (aunque hace bastante que no lo uso) te digo un poco cual es el proceso:
1. Creas el analizador léxico en lenguaje Flex (son como expresiones regulares).
2. Flex transforma esas expresiones regulares a código C.
3. Ejecutas el código C indicándole que archivo a analizar, y te dirá los errores sintácticos que encontró.


Con esto tendrías la primera etapa de la compilación hecha (comprobar que el código se puede compilar porque no tiene errores).


Reviso el resto de etapas y te digo cuales son y que herramientas puedes usar, aunque ahora mismo no me suena ninguna.
  #3 (permalink)  
Antiguo 18/05/2011, 06:24
 
Fecha de Ingreso: mayo-2010
Mensajes: 14
Antigüedad: 14 años
Puntos: 1
Respuesta: Creación de compilador

muchas gracias _Ruben_ ultima mente e estado examinando algunas herramientas como lo son: bison, pclex, flex y gcc nose si ando medio perdido aun
  #4 (permalink)  
Antiguo 18/05/2011, 06:46
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
Respuesta: Creación de compilador

Hacer un compilador desde cero no es fácil, y si no tienes muchos conocimientos mucho más difícil. En la Wikipedia se explica bastante bien como funciona un compilador (sin entrar en muchos detalles y de forma clara), además muestra en una imagen el proceso a seguir, y como puedes ver, el analizador léxico es el primer paso.

No se muy bien como se hace la traducción a código máquina, no he profundizado en este tema demasiado. Pero se me ocurre que puedes hacer que transforme el código a C (por ejemplo) y luego usar un compilador de C para traducirlo a código máquina y poder ejecutarlo.

De esta forma puedes pasar de un lenguaje de programación X (creado por ti) a código máquina (eso es lo que notaría el usuario que lo compila), pero en realidad lo que estás haciendo es pasar el código del lenguaje X a C, y después de C a código máquina.

Como no he profundizado mucho más en este tema no puedo ayudarte más, lo máximo a lo que yo he llegado en este tema de compiladores es a crear un lenguaje X muy básico y ejecutar el código con algo parecido a un intérprete (tipo de compilador) pero que no llegaba a ser un intérprete real.

Un saludo.
  #5 (permalink)  
Antiguo 22/05/2011, 01:19
 
Fecha de Ingreso: abril-2011
Ubicación: Distrito Federal
Mensajes: 112
Antigüedad: 13 años
Puntos: 17
Respuesta: Creación de compilador

Yo hice varios interpretes en la escuela.

Dadas las posibles cosas que se deben hacer en el desarrollo de un compilador yo recomendaría C o C++.

Mas que un lenguajes requieres aprender técnicas variadas como estructuras de datos que van desde arreglos hasta árboles en memoria. Es decir que necesitas una herramienta que te permita alojar, usar y liberar memoria de manera intensiva.

En cuanto a las técnicas específicas requieres manejo de autómatas, grafos, diagramas de sintaxis. Estas serían tus herramientas para planificar y diseñar tu lenguaje.

Si quieres llegar hasta el compilador necesitas amplio conocimiento de ensamblador.

Actualmente hay varios proyectos de código abierto que te pueden inspirar, te dejo una liga de un lenguaje que tiene renombre y del que puedes descargar el código para que lo estudies: http://www.lua.org/home.html

Te menciono algunos libros (de mi bilbioteca particular):

Lenguajes de programación, diseño e implementación. Prant Zelkowitz
Introducción a la teoría de autómatas,lenguajes y computación. Hopcroft, Ullman
Compiladores, principios, técnicas y herramientas. Aho, Sethi, Ullman.
Compiladores teoría e implementación. Jacinto Ruiz Catalan.

Y por ultimo te recomiendo sacar credencial de biblioteca de externo en alguna universidad donde tengan carreras de informática, ahí tienen de todo y seguro encuentras de entrada libre.

Espero mucho te sirva y mucha suerte con tus proyectos.!

Etiquetas: compilador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:31.