PDA

Ver la versión completa : Como hacer un compilador desde 0??



Hendrix.
25-10-2006, 19:57
Bueno, esta es mi pregunta, Malenko me dijo ke kon Bison y Flex podria hacer un compilador, pero por lo ke e leido solo me hacen analizadores, lo ke e leido lo e sakado de aki:

http://ccia.ei.uvigo.es/docencia/PL/practicas/documentacion.html

Mi otra opcion para compilar mi lengauje es traducirlo a C y luego, kon algun compilador ke funcione en ms-dos de C ke me lo okmpile a .exe.... (Alguien sabe de algun compilador de C/C++ para ms-dos??)

Esto ultimo no seria un compilador propio, ya ke usa otro compilador. La otra opcion seria traducirlo a ASM y de hay compilarlo a exe....esa seria una buena opcion ya ke el ejekutable pesaria poko, pero mis konocimientos de ASM no llegan tan lejos ni de mucho.

Malenko, si tienes materia de komo kompilar un lengauje a .exe te lo agradeceria ke me lo pasaras.

Salu2 y gracais.

Giskard
26-10-2006, 07:27
Para hacer un compilador te servirá mucho aprender teoría de lenguajes formales y autómatas. Por ahí empieza.
Lo que debe hacer primero (si bien recuerdo) es un análisis gramátical (reconocer los tokens, quitar espacios en blanco, comentarios, etc) y luego un análisis sintáctico (que esten en el orden apropiado los tokens).
Luego sigue convertir el código fuente a código objeto.
Para el análisis léxico existe una herramienta llamada LEX, transforma el código fuente de tu compilador a código en C, investiga sobre éste programa para que vayas conociendo mejor el mundo de los compiladores.

Y por último, transformar el código objeto a un ejecutable, esto sólo consiste en traducir el código objeto a lenguaje ensamblador dependiendo del tipo de procesador que se esté usando. Y listo :)

Compiladores de C para MS-DOS:
Borland (cualquiera es bueno).
Dev C++ (freeware)
Microsoft Visual C++.
Estos son los que he usado y me han funcionado muy bien y aunque son para C++ puedes hacer perfectamente programas de C

Y para linux tienes el GnuCC.

Suerte

Hendrix.
26-10-2006, 07:40
Muchas gracias....al flex ya lo conocia, me lei un manual, y komo vi ke solo traducia a C pes pregunte aki....

El MS C++ se puede compilar desde la Shell??? sabes el archivo kon ke compilar???

Muchas Gracias.

Giskard
28-10-2006, 06:30
Si te refieres al Visual c++, compilarlo desde la shell...
Pues no sé si se pueda, siempre he compilado desde las ventanitas del programa.
Pero para hacerlo desde la consola de ms-dos (supongo que eso es lo que quieres), puedes usar el gnu gcc para windows.

Aqui te va un enlace del GCC a ver si te sirve:
http://web.iti.upv.es/~evidal/students/prg/MinGW_dir/index.html

Un saludo

Hendrix.
28-10-2006, 12:46
A eso me referia....Muchas gracias!!!

De todos modos debuggeare el VC++ para ver los archivos ke usa para kompilar y ke es exactamente lo ke le transmite....

Muchas gracias!!

jlcapel
01-11-2006, 20:31
Hendrix,

En www.xharbour.org hay un compilador completo GPL que puedes bajar para estudiártelo. xharbour es un lenguaje de la familia xbase, de plataforma cruzada, con máquina virtual embebida, OOP, codeblocks y sintaxis moderna. Espero te sirva de ayuda.

Hendrix.
02-11-2006, 15:22
Muchas gracias por la aportación.... ;) ;)

Salu2

Phant0m
03-11-2006, 01:18
Buenas a todos, soy un nuevo integrante del foro pero aún así voy a intentar ayudarte con lo que pides. Actualmente estoy cursando una asignatura de "procesadores del lenguaje". En esta asignatura la practica es hacer un compilador desde cero. Para ello se van a usar las herramientas comentadas antes por más gente JFlex, Bison, ...

Los pasos si no me equivoco son los sigiuentes:
1. Análisis Léxico: Comprobando que te lleguen los carácteres que tu admites y devolviendo TOKENS. Son cosas del tipo de IDENTIFICADOR, CONSTANTE, DEFVAR, ... (escribo en mayúsculas porque los tokens se escriben así por "convenio").

2. Análisis sintáctico: En este análisis compruebas las estructuras (ifs, construcciones de funciones,...) comprobando la gramatica del lenguaje y devuelves un AST (Abstract Sintact Tree) en el que se puede ver la estructura del programa

3. Análisis semántico: En el que se comprueban cosas de "significado" por ejemplo que una variable haya sido inicializada, conversiones de tipos, ... (esto lo tengo más verde así que tampoco puedo ser de gran ayuda)

4. Generación de código (ya sea ensamblador, ByteCodes de java, IL de .net, ...)

5. (opcional) optimizaciones de código.

Espero que te haya ayudado algo. Te recomiendo buscar en google "Procesadores de lenguaje" en las páginas de asignaturas así tienes mucha información.

Saludos

Hendrix.
03-11-2006, 15:20
Ok, pero a la generación de codigo komo lo ago???kon ke los paso a .exe??konl os kompiladores de los determinados legnauje ke expusiste???

Salu2 y gracias

racamelas12
03-07-2009, 02:26
Hola,

Tengo algunos programas que les pueden ayudar o apoyar en la realizacion de los suyos los cuales son:

Analizador Léxico hecho en Visual Basic 6
Compilador hecho en Visual Basic 6
Compilador del Lenguaje Pascal en Visual Basic 6
Un simulador de consola (MS-DOS) Hecho en Visual Basic 6

Si deseas adquirir alguno de estos códigos solamente mandame un correo a editado
SALUDOS!!!

Rafael Cano Meza

j8k6f4v9j
03-07-2009, 02:39
racamelas12,

Bienvenido al foro.

(te agradecería le echases un ojo a las normas de éste)

Salu2

racamelas12
16-12-2010, 23:50
Hola,

Tengo algunos programas que les pueden ayudar o apoyar en la realizacion de los suyos los cuales son:

* Analizador Léxico hecho en Visual Basic 6
* Compilador hecho en Visual Basic 6

Si deseas adquirir alguno de estos códigos solamente nomails
SALUDOS!!!

clarinetista
17-12-2010, 15:28
Lee las normas....

Ingrid
29-09-2013, 22:28
holaa alguien podria ayudarme con el compilador?

harva
31-10-2013, 23:03
hola buena tarde me puedes colaborar con el compilador hecho en visual basic