2009-02-25 5 views
110

Ich frage mich, ob es so etwas wie einen Interpreter für C gibt. Das heißt, in einem Linux-Terminal kann ich "Python" eingeben und dann in diesen Interpreter einprogrammieren. (Ich bin mir nicht sicher, Dolmetscher das richtige Wort). Das ist wirklich hilfreich, um verschiedene Dinge zu testen und ich bin neugierig, ob etwas ähnliches für C existiert. Obwohl ich es bezweifle. Die einzige Sache, die ich mir vorstellen könnte, wäre die C-Shell ...Gibt es einen Interpreter für C?

+5

Das richtige Wort für das, was Sie wollen, ist "Shell" oder "Eingabeaufforderung" oder "REPL" (Read-Eval-Print-Loop, in Bezug auf die 4 Lisp-Befehle, die verbunden werden müssen, um einen Lisp-Interpreter in Lisp zu erstellen, aber ein Interpreter würde funktionieren. –

+1

Nebenbei, der Begriff, den Sie suchen, ist REPL (Read Evaluate Print Loop). – Travis

+0

Duplikat von [Gibt es eine REPL für C-Programmierung?] (Http://Stackoverflow.com/q/10766900/309483) –

Antwort

72

There are many - Wenn Sie den Umfang Ihrer Frage eingrenzen, können wir Ihnen vielleicht einige speziell auf Ihre Bedürfnisse zugeschnittene vorschlagen.

Eine bemerkenswerte Interpreter ist "Ch: A C/C++ Interpreter for Script Computing" detailed in Dr. Dobbs:

Ch ist ein kompletter C-Interpreter, dass alle Funktionen Sprache unterstützt und Standardbibliotheken der ISO C90 Norm, sondern erstreckt sich C mit viele High-Level-Features wie String Typ und Computer-Arrays wie erstklassige Objekte.

Ch standard is freeware aber nicht Open Source. Nur Ch Professional hat die Plotfunktionen und andere Funktionen, die man sich wünschen kann.

Ich habe mich noch nie vorher damit befasst, aber einen c-Interpreter zur Hand zu haben klingt sehr nützlich und etwas, das ich wahrscheinlich zu meinem Toolset hinzufügen werde. Danke für die Frage!


Edit:

habe gerade herausgefunden, dass eine meiner Lieblings-Compiler, TCC, wird C-Skripte ausführen:

Es ist auch C-Script-Dateien verarbeitet (nur die Shebang-Zeile hinzufügen "#!/usr/local/bin/tcc -run" an die erste Zeile Ihrer C-Quellcodedatei unter Linux, damit sie direkt ausgeführt wird.

TCC kann den C-Quellcode von Standardeingabe lesen, wenn '-' in Ort von 'Infile' verwendet wird. Beispiel:

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

Ich wünschte, dass eine Version von CH unter einer OSI genehmigten Lizenz verfügbar war, also könnte sie verteilt werden. Sie können mit ihrem Interpreter sehr nützliche Dienstprogramme erstellen, die leider zu problematisch sind, um sie zu bündeln. –

+0

Das wäre nett. Freeware ist besser als nichts, aber bis jemand es tut ... –

+0

Seltsamerweise wird 'tcc' standardmäßig mit dem Status' 10' beendet. Es sieht so aus, als müssten Sie explizit eine 'return 0' hinzufügen, die' echo 'ergibt main() {puts ("hallo"); return 0;} '| tcc -run -' –

4

cinterp ist einer für den Anfang.

+7

Beziehen Sie sich auf https://github.com/danielkeller/cinterp oder auf http://free-compilers.sharnoff.org/TOOL/C-12.html? Eine Verbindung würde diese Antwort verbessern ... – f3lix

1

Es ist getan worden, obwohl die überwiegende Mehrheit der C Arbeit zusammengestellt. Ein Beispiel ist CH

7

Werfen Sie einen Blick auf die Ch Interpreter.

Ch ist eine integrierbare C/C++ Interpreter für plattformübergreifende scripting, Shell Programmierung, 2D/3D-Plotten, numerische computing und eingebettete scripting.

9

Das ROOT-Projekt bietet einen sehr funktionalen C- und C++ - Interpreter namens Cint. Ich bin ziemlich begeistert davon. Es ist allerdings etwas gewöhnungsbedürftig.

TCC ist eine sehr gute Wahl als gut, aber ich bin für seine REPL bürgen

+1

Ist das ROOT-Team nicht in der Lage, Cint auslaufen zu lassen? –

+0

@Zboson „CERN zu einem neuen Dolmetscher wechseln hat, klammern. CINT von CERN unterstützt wird nicht mehr“ – endolith

6

ich nicht in der Lage wissen wir CINT verwenden in der Klasse. Es schien ziemlich gut, dass du es vielleicht ausprobieren willst!

18

picoc - Ein sehr klein C Interpreter

PicoC ist ein sehr kleines C-Interpreter für Skripting. Es war ursprünglich geschrieben als Skriptsprache für ein Bord Flugsystem eines UAV. Es ist auch sehr geeignet für andere Robotik, Embedded und Nicht-Embedded Anwendungen.

3

ccons erscheint Ihre Einschränkungen zu erfüllen:

Das Ziel des ccons Projektes ist eine interaktive Konsole für die Programmiersprache C, ähnlich wie „Python“ und „rb“ für Python zu erstellen und Ruby jeweils. Das Projekt baut auf Clang und Llvm auf.