Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-10-2003
aleidania aleidania is offline
Registrado
 
Registrado: Jul 2003
Ubicación: santo domingo, R. D.
Posts: 7
Poder: 0
aleidania Va por buen camino
Unhappy Crear un EXE a partir de un TXT o CPP

Hola a todos!...

Un grupo de compañeros de la universidad y yo, estamos creando un compilador con Delphi.

El problema que tenemos en este momento es que no encontramos cómo crear un ejecutable después de compilar el programa.

Hemos logrado convertir cada linea del programa en codigo C, y necesitamos saber como crear el ejecutable, ya sea del archivo de C o del mismo archivo creado por nuestro editor (que por cierto es txt).

Si alguien puede darme al menos una idea de cómo hacerlo, no saben cuan agradecida estaré.

Gracias...
Responder Con Cita
  #2  
Antiguo 25-10-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: May 2003
Posts: 2.621
Poder: 16
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por aleidania
[...] Hemos logrado convertir cada linea del programa en codigo C, y necesitamos saber como crear el ejecutable, ya sea del archivo de C o del mismo archivo creado por nuestro editor (que por cierto es txt).
no entiendo lo de compilación de "archivos txt". :?

En cuanto al fuente C, tendrás que hacer un traductor (en tu caso un compilador de C). Pasos básicos:

1. Crear (o utilizar una ya hecha) una gramática de lenguaje C para:

2. Crear (o utilizar una ya hecho) un analizador léxico (scanner o tokenizador) de los fuentes C. En pocas palabras: divide el fuente C en las unidades mínimas (tokens) que alimentarán a:

3. Crear (o utilizar uno ya hecho) un analizador sintáctico (parser) para la gramática C del punto 1. Con analizador sintáctico resuelves si el fuente que estás traduciendo es correcto sintácticamente respecto a las reglas de la gramática y es el paso previo a la traducción propiamente dicha.

4. Traductor/Generador de código: los compiladores son autómatas de estados. A ciertos estados válidos del analizador sintáctico le corresponderán la creación de su código traducido. Esto, que no es un paso trivial, podrías hacerlo desde varios enfoques:

4.1 Generando directamente código objeto (binario) para la plataforma que estés trabajando, en tu caso seguramente Intelx86. Dependiendo de la CPU concreta (x386, x486, Pentium, ...) será un código objeto diferente.

4.2 Generando un código intermedio (código P), no válido como código objeto para ninguna plataforma concreta, pero lo suficientemente neutro y de bajo nivel para que la traducción sea casi directa.

4.3 En los dos casos (4.1 y 4.2) lo más sencillo es terminar traduciendo a lenguaje ensamblador (diferente para cada plataforma objetivo) y, posteriormente, utilizar un compilador/ensamblador de un tercero para la generación final de código objeto.

Respecto a los puntos 1, 2 y 3: existen gramáticas de C estándar listas para usar. Ejemplo:
http://www.lysator.liu.se/c/ANSI-C-grammar-y.html
También existen herramientas que permiten la creación de analizadores léxicos y sintácticos, caso de Lex/Flex y YACC:
http://www.cs.princeton.edu/~appel/m.../flex_toc.html
http://dinosaur.compilertools.net/
http://epaperpress.com/lexandyacc/

Evidentemente, la construcción de traductores/compiladores no es una tarea trivial y que pueda describirse en su totalidad en unos foros como éstos. Lo anterior son sólo unas notas (muy simplificadas. Faltan aspectos tan importantes como la optimización) del proceso. En la red (consejo: Google) existe extensísima documentación sobre el tema y a ella te remito, sin perjuicio de poder tratar aquí temas más concretos.

Saludos.

Última edición por kinobi fecha: 25-10-2003 a las 19:45:26.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:05:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi