Mi chiedevo se c'è qualcosa come un interprete per C. Cioè, in un terminale Linux posso digitare "python" e quindi scrivere il codice nell'interprete. (Non sono sicuro che interpreti la parola giusta). Questo è davvero utile per testare cose diverse e sono curioso di sapere se esiste qualcosa di simile per C. Anche se ne dubito. L'unica cosa che posso pensare che sarebbe fare sarebbe la shell C ...Esiste un interprete per C?
risposta
There are many - se si restringe l'ambito della domanda, potremmo essere in grado di suggerire alcuni specifici per le vostre esigenze.
Un interprete degno di nota è "Ch: A C/C++ Interpreter for Script Computing" dettagliati nella Dr. Dobbs:
Ch è un interprete completo C che supporta tutte le caratteristiche del linguaggio e librerie standard della norma ISO C90 standard, ma si estende C con molte funzioni di alto livello come stringhe di tipo e computazionali come oggetti di prima classe.
Ch standard is freeware ma non open source. Solo Ch professional ha le capacità di tracciamento e le altre funzionalità che si potrebbero desiderare.
Non l'ho mai guardato prima, ma avere un interprete c a portata di mano sembra molto utile, e qualcosa che probabilmente aggiungerò al mio set di strumenti. Grazie per la domanda!
Edit:
appena scoperto che uno dei miei compilatori preferiti, TCC, eseguirà script C:
Gestisce anche i file di script C (solo aggiungere la linea shebang "#!/usr/local/bin/tcc -run" alla riga del file di codice sorgente C su Linux per eseguirlo direttamente.
TCC può leggere il codice sorgente C dall'ingresso standard quando '-' è utilizzato nella posizione di 'infile'. Esempio:
echo 'main(){puts("hello");}' | tcc -run -
Vorrei che una versione di CH fosse disponibile sotto una licenza approvata OSI, in modo che potesse essere distribuita. È possibile progettare utilities veramente belle usando il loro interprete, purtroppo sono troppo problematiche da raggruppare. –
Sarebbe bello. Il freeware è meglio di niente, ma fino a quando qualcuno lo fa ... –
Stranamente, 'tcc' esce con lo stato' 10' di default. Sembra che tu debba aggiungere esplicitamente un 'return 0' dando' echo 'main() {puts ("hello"); restituisce 0;} '| tcc -run -' –
cinterp
è uno per iniziare.
Ti riferisci a https://github.com/danielkeller/cinterp oa http://free-compilers.sharnoff.org/TOOL/C-12.html? Un collegamento migliorerebbe questa risposta ... – f3lix
Probabilmente. Ce ne sono diversi per C++. Vedi Have you used any of the C++ interpreters (not compilers)? per esempi. Certamente cint mangerà quasi tutti i codici c con buoni risultati, e tcc è così veloce che puoi usarlo come un interprete.
E 'stato fatto, anche se la maggior parte del lavoro C viene compilato. Un esempio è CH
Dai uno sguardo allo Ch Interpreter.
Ch è un embeddable C/C++ interprete per lo scripting cross-platform, guscio programmazione, 2D/3D plotting, numerica computing e di scripting incorporato.
il progetto ROOT fornisce un interprete C e C++ molto funzionale denominato Cint. Sono abbastanza affezionato. Ci vuole un po 'per abituarsi all'interpretazione, però.
TCC è una scelta molto buona pure, ma io non sono in grado di garantire per la sua REPL
La squadra ROOT non sta eliminando Cint? –
@Zboson "Il CERN è passare a un nuovo interprete, si aggrappano. CINT non è supportato da CERN più" – endolith
So che usiamo CINT in classe. Sembrava abbastanza bello che tu volessi provarlo!
Orario di partenza iGCC
picoc - Una piccolissima C interprete
PicoC è un piccolo interprete C per lo scripting. Originariamente era scritto come linguaggio di script per il sistema di volo di bordo di un UAV. È anche molto adatto per altre applicazioni robotizzate, incorporate e non incorporate .
ccons sembra soddisfare i vostri vincoli:
L'obiettivo del progetto ccons è quello di creare una console interattiva per il linguaggio di programmazione C, simile a "python" e "IRB" per Python e Ruby, rispettivamente. Il progetto si basa su clang e llvm.
È possibile utilizzare CompCert. Ecco alcuni esempi: http://compcert.inria.fr/man/manual004.html
La parola corretta per ciò che si vuole è "shell" o "Chiedi conferma" o "REPL" (Read-Eval-Print-Loop, in riferimento ai 4 comandi Lisp che devono essere uniti per fare un interprete Lisp in Lisp), ma un interprete funzionerebbe. –
Per inciso, il termine che stai cercando è REPL (Leggi Evaluate Print Loop). – Travis
duplicato di [Esiste un REPL per la programmazione C?] (Http://stackoverflow.com/q/10766900/309483) –