2009-02-25 51 views
110

Me preguntaba si hay algo así como un intérprete para C. Es decir, en una terminal Linux puedo escribir "python" y luego codificar en ese intérprete. (No estoy seguro de interpretar la palabra correcta). Esto es realmente útil para probar cosas diferentes y tengo curiosidad si algo similar existe para C. Aunque lo dudo. Lo único que puedo pensar que haría sería el shell C ...¿Hay un intérprete para C?

+5

La palabra correcta para lo que desea es "cáscara" o "rápida" o "REPL" (Read-Eval-Print-Loop, en referencia a los 4 comandos Lisp que se deben unir para crear un intérprete Lisp en Lisp), pero un intérprete funcionaría. –

+1

Como un aparte, el término que está buscando es REPL (Leer Evaluar Imprimir Loop). – Travis

+0

duplicado de [¿Hay un REPL de programación C?] (Http://stackoverflow.com/q/10766900/309483) –

Respuesta

72

There are many - si a optimizar el alcance de su pregunta que podría ser capaz de sugerir algunas específicas a sus necesidades.

Un intérprete notable es "Ch: A C/C++ Interpreter for Script Computing" detallada en el Dr. Dobbs:

Ch es un intérprete completo en C que soporta todas las características lingüísticas y bibliotecas estándar de la ISO C90 estándar, sino que se extiende con C muchas características de alto nivel , como el tipo de cadena y matrices computacionales como objetos de primera clase .

Ch standard is freeware pero no de código abierto. Solo Ch Professional tiene las capacidades de trazado y otras características que uno podría desear.

nunca he mirado en esto antes, pero tener un intérprete de c en la mano suena muy útil, y algo que es probable que añadir a mi conjunto de herramientas. Gracias por la pregunta!


Editar:

Acabamos de descubrir que uno de mis compiladores favoritos, TCC, ejecutará C guiones:

También maneja archivos de comandos C (solo añada la línea shebang "#!/usr/local/bin/tcc -run" a la primera línea del archivo de código fuente C en Linux para que se ejecute directamente.

TCC puede leer el código fuente C de entrada estándar cuando '-' se utiliza en lugar de 'infile'. Ejemplo:

echo 'main(){puts("hello");}' | tcc -run - 
+2

Deseo que una versión de CH esté disponible bajo una licencia aprobada por OSI, por lo que podría distribuirse. Puede diseñar utilidades realmente agradables utilizando su intérprete, desafortunadamente son demasiado problemáticas para agruparlas. –

+0

Eso estaría bien. Freeware es mejor que nada, pero hasta que alguien lo haga ... –

+0

Curiosamente, 'tcc' sale con el estado' 10' por defecto. Parece que tiene que agregar explícitamente un 'return 0' dando' echo 'main() {puts ("hello"); return 0;} '| tcc -run -' –

4

cinterp es uno para empezar.

+7

¿Se refiere a https://github.com/danielkeller/cinterp o para http://free-compilers.sharnoff.org/TOOL/C-12.html? Un enlace mejoraría esta respuesta ... – f3lix

1

Se ha hecho, a pesar de que la gran mayoría del trabajo se compila C. Un ejemplo es CH

7

Eche un vistazo al Ch Interpreter.

Ch es un C integrable/C++ intérprete para secuencias de comandos de plataforma cruzada, Shell programación, 2D trazado/3D, numérico computing, y secuencias de comandos incrustado.

9

El proyecto ROOT proporciona un intérprete de C y C++ muy funcional llamado Cint. Estoy muy encariñado con eso. Sin embargo, lleva un tiempo acostumbrarse un poco a la interpretación.

TCC es una muy buena opción también, pero yo no soy capaz de dar fe de su REPL

+1

¿No está el equipo ROOT eliminando gradualmente Cint? –

+0

@Zboson "CERN ha cambiado a un nuevo intérprete, se aferra. CINT ya no es compatible con CERN" – endolith

6

Sé que utilizamos CINT en clase. ¡Parecía bastante bueno, querrías intentarlo!

18

picoc - Un muy pequeño C intérprete

PicoC es un muy pequeño intérprete C para secuencias de comandos. Originalmente era escrito como el lenguaje de script para el sistema de vuelo a bordo de un UAV. También es muy adecuado para otras aplicaciones robóticas, incrustadas y no integradas .

3

ccons parece satisfacer sus limitaciones:

El objetivo del proyecto CCONS es crear una consola interactiva para el lenguaje de programación C, similar a "pitón" y "IRB" para Python y Ruby respectivamente. El proyecto se basa en clang y llvm.

Cuestiones relacionadas