Interpretar o compilar desde txt

Iniciado por Desiresportal, 18 Diciembre 2015, 19:20 PM

0 Miembros y 1 Visitante están viendo este tema.

Desiresportal

Muy buenas:

He buscado al respecto y parece que solo existe para turboC o algo similar. Me preguntaba... ¿tambien habrá para C o C++?

Vereís, es que empiezo a estar harto de tener que compilar todo el codigo para cuando solamente hago un pequeño cambio. Cuando el codigo son tres sentencias no hay problema, se compila muy rapido. Pero cuando el codigo se hace algo largo, la espera por un cambio casi ridiculo se hace mas bien insoportable.

Es por eso que tengo la duda: ¿Se puede hacer que el programa tome el codigo de un fichero de texto plano y lo interprete al momento? Tambien me sirve que lo compile de forma temporal mientras el programa esté en marcha. La idea es modificar el codigo del archivo de texto plano y que directamente (con previo guardado de los cambios y reinicio del programa) surtan efecto los cambios realizados.

Pues eso es todo por ahora. Muchas gracias de antemano.

MAFUS

Muy buenas.

Supongo a que te refieres a que buscas algo como un intérprete de C++. Buscando un poco por internet he encontrado lo siguiente CLIN que es un intérprete de c++, en el sabor de CLAN.
Si quieres algo más tradicional te puedes decantar por make, CMake, o algún IDE que usa esta tecnología. Tal vez te guste QT creator.

ivancea96

Si divides el código en diferentes archivos, o elaboras librerías, solo se debieran recompilar los archivos modificados. Luego, solo actuaría el linker para unir los códigos objeto (salvo que usaras librerías de enlace dinámico)

Desiresportal


Cita de: MAFUS en 18 Diciembre 2015, 20:48 PM
Supongo a que te refieres a que buscas algo como un intérprete de C++. Buscando un poco por internet he encontrado lo siguiente CLIN que es un intérprete de c++, en el sabor de CLAN.
Si quieres algo más tradicional te puedes decantar por make, CMake, o algún IDE que usa esta tecnología. Tal vez te guste QT creator.

Por lo poco que he podido enterarme gracias al traductor, CLING es como una consola CMD pero que interpreta comandos de C++. Y no es lo que yo buscaba.


Cita de: ivancea96 en 18 Diciembre 2015, 23:19 PM
Si divides el código en diferentes archivos, o elaboras librerías, solo se debieran recompilar los archivos modificados. Luego, solo actuaría el linker para unir los códigos objeto (salvo que usaras librerías de enlace dinámico)

Hasta esta parte ya llego. Entiendo como funciona la inclusion de librerías (archivos que por lo general terminan en ".h").

Volveré a exponer lo que busco:

Digamos que tengo un motor de juegos ya compilado y un archivo de texto en la misma carpeta. Entonces quiero que al ejecutar el motor de juegos, este abra el archivo de texto e interprete su contenido. Preferiblemente me encantaría que el contenido fuese codigo en C++.

Lo que quiero con esto es modificar solamente el archivo de texto para terminar modificando el juego. Así no tendría que pasar por el compilado cada vez que quiera cambiar algo.

En resumen: Ejecuto el juego, el juego lee el txt, interpreta el contenido y modifica su funcionamiento en base al contenido. Tal y como hacen los navegadores con el contenido de una pagina web.

ivancea96

#4
Tienes opciones, como guardar comandos en un lenguaje interpretado, por ejemplo Python (que tiene librería para implementarlo fácilmente en C/C++), e interpretarlos desde tu programa. Si lo que quieres que haga ese código es algo concreto, tal como algún tipo de cálculo o almacenar información, es una opción muy factible.

Si solo quieres guardar datos sobre el funcionamiento del programa, como haría un archivo deconfiguración, no tengo nada que decir, simplemente guardar y leer.

Si quieres guardar comandos, preferiblemente sencillos, puedes hacer tu propio intérprete de tu propio lenguaje. Digo sencillo, porque evidentemente un lenguaje completo se sale del caso. Lo ideal sería que implementases solo lo justo y necesario. Aunque la opción de interpretar otro lenguaje, como Python, la veo más factible. Siempre puedes crear tu propia librería para añadir funciones al lenguaje que ayuden a conectar con el compilado en C++.

La opción más evidente, es que programes un lenguaje interpretado, está claro. Ya a tu juicio.

Yoel Alejandro

Crea tu propio mini-intérprete, más o menos lo que te recomendó ivance.

Ahora, si el archivo contiene íntegramente código C válido, puedes programar un pequeño script de bath (Windows) o bash (Linux) con órdenes al sistema operativo, para que invoque el compilador de C sobre el fichero que tienes, genere el ejecutable, y lo ejecute.

Saludos, Yoel
Puedes enviarme un M.P.
Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)

Desiresportal

Esperaba poder usar un comando de C++ para esta tarea. Según un libro que encontré en la biblioteca (algo antiguo, la verdad) para C# o turboC existe un comando que lo hace automaticamente.

Me parece que haré mi propio interprete. Gracias por todo. Doy el tema por cerrado.

MAFUS

Como dije buscas algo como Cling, que es un JIT, para C++ y como intérprete que es tiene su consola, como python.
Algo más cerca de lo que buscas no creo que encuentres.

Aquí hay una buena opinión de porqué C/C++ no tienen JIT.