Czy jest tłumacz dla języka C? [Zamknięte]

111

Zastanawiałem się, czy istnieje coś takiego jak interpreter języka C. To znaczy, że w terminalu Linuksa mogę wpisać „python”, a następnie kodować w tym interpreter. (Nie jestem pewien, czy interpretuję właściwe słowo). Jest to bardzo pomocne przy testowaniu różnych rzeczy i jestem ciekawy, czy coś podobnego istnieje w przypadku C. Chociaż wątpię w to. Jedyną rzeczą, o której mogę pomyśleć, byłaby powłoka C ...

devin
źródło
5
Prawidłowe słowo określające to, co chcesz, to „powłoka”, „zachęta” lub „REPL” (Read-Eval-Print-Loop, w odniesieniu do 4 poleceń Lisp, które muszą być połączone, aby utworzyć interpreter Lisp w Lisp), ale tłumacz będzie działał.
Chris Lutz,
1
Nawiasem mówiąc, termin, którego szukasz, to REPL (Read Evaluate Print Loop).
tsimon
Preferowanym słowem jest w rzeczywistości „interaktywne” środowisko dla C. Środowisko interaktywne otwiera powłokę lub podpowiedź specyficzną dla języka. REPL też jest dobre.
jcchuks
Pełną
froggsy

Odpowiedzi:

71

Jest ich wiele - jeśli zawęzisz zakres swojego pytania, być może będziemy w stanie zasugerować kilka specyficznych dla Twoich potrzeb.

Godnym uwagi interpretatorem jest „ Ch: AC / C ++ Interpreter for Script Computing ” szczegółowo opisane w Dr. Dobbs:

Ch to kompletny interpreter języka C, który obsługuje wszystkie funkcje językowe i standardowe biblioteki normy ISO C90, ale rozszerza język C o wiele funkcji wysokiego poziomu, takich jak typ ciągów i tablice obliczeniowe, jako obiekty pierwszej klasy.

Standard Ch jest darmowy, ale nie open source. Tylko Ch professional ma możliwości kreślenia i inne funkcje, których możesz chcieć.

Nigdy wcześniej na to nie patrzyłem, ale posiadanie tłumacza AC pod ręką wydaje się bardzo przydatne i prawdopodobnie dodam coś do mojego zestawu narzędzi. Dzięki za pytanie!


Edytować:

Właśnie się dowiedziałem, że jeden z moich ulubionych kompilatorów, TCC , będzie wykonywał skrypty C:

Obsługuje również pliki skryptów C (po prostu dodaj linię shebang "#! / Usr / local / bin / tcc -run" do pierwszej linii pliku kodu źródłowego C w systemie Linux, aby był wykonywany bezpośrednio.

TCC może czytać kod źródłowy C ze standardowego wejścia, gdy „-” jest używane zamiast „infile”. Przykład:

echo 'main(){puts("hello");}' | tcc -run -
Adam Davis
źródło
2
Chciałbym, aby wersja CH była dostępna na licencji zatwierdzonej przez OSI, aby można ją było rozpowszechniać. Możesz zaprojektować naprawdę fajne programy narzędziowe za pomocą ich interpretera, niestety są one zbyt problematyczne, aby je połączyć.
Tim Post
To byłoby miłe. Darmowe oprogramowanie jest lepsze niż nic, ale dopóki ktoś tego nie zrobi ...
Adam Davis,
Co dziwne, domyślnie tccwychodzi ze statusem 10. Wygląda na to, że musisz wyraźnie dodać return 0darowiznęecho 'main(){puts("hello"); return 0;}' | tcc -run -
Gregory Nisbet
18

picoc - bardzo mały interpreter języka C.

PicoC to bardzo mały interpreter języka C do obsługi skryptów. Został pierwotnie napisany jako język skryptowy dla pokładowego systemu lotu UAV. Jest również bardzo odpowiedni dla innych zrobotyzowanych, wbudowanych i niewymienionych aplikacji.

aleroot
źródło
9

projekt ROOT dostarcza bardzo funkcjonalnego interpretera C i C ++ o nazwie Cint . Bardzo mi się to podoba. Trzeba jednak trochę przyzwyczaić się do interpretacji.

TCC to również bardzo dobry wybór, ale nie jestem w stanie ręczyć za jego REPL

SingleNegationElimination
źródło
1
Czy zespół ROOT nie wycofuje Cint?
Bozon Z
@Zboson "CERN przełączył się na nowego interpretera, trzymaj się. CINT nie jest już obsługiwany przez CERN"
endolith
ROOT zastąpił cintę przyleganiem. Dlatego przyleganie może być traktowane jako zaktualizowana rekomendacja. (chociaż - zobacz inne odpowiedzi - cling to C ++, a nie C, jeśli to istotne, chociaż iirc cint również zrobił trochę C ++)
pseyfert
7

Spójrz na tłumacza języka Ch .

Ch to wbudowany interpreter C / C ++ do tworzenia skryptów międzyplatformowych, programowania powłoki, drukowania 2D / 3D, obliczeń numerycznych i wbudowanych skryptów.

CMS
źródło
6

Wiem, że używamy CINT na zajęciach. Wydawało się całkiem niezłe, że możesz spróbować!

Javed Ahamed
źródło
3

ccons wydaje się spełniać Twoje ograniczenia:

Celem projektu ccons jest stworzenie interaktywnej konsoli dla języka programowania C, podobnej do „python” i „irb” odpowiednio dla Pythona i Ruby. Projekt opiera się na clang i llvm.

icktoofay
źródło
1

Zrobiono to, mimo że zdecydowana większość pracy w C jest skompilowana. Jednym z przykładów jest CH

Rob Lachlan
źródło
0

CERN ma zestaw narzędzi o nazwie ROOT, który jest przeznaczony głównie do celów naukowych lub analizy danych itp., Ale ma oparty na Clang interpreter C / C ++ o nazwie Cling.

Przed przystosowaniem używali interpretera języka C o nazwie CINTCling . CINT jest lekki i nadal wydaje się dostępny do pobrania.

Myślę, że możesz zdobyć inne, uważnie przeszukując artykuły z listy Wikipedii.

user9600383
źródło