Is there an interpreter for C? [closed]
Asked Answered
T

13

111

I was wondering if there is something like an interpreter for C. That is, in a Linux terminal I can type in "python" and then code in that interpreter. (I'm not sure interpreter the right word). This is really helpful for testing different things out and I'm curious if something similar exists for C. Though I doubt it. The only thing I can think of that would do it would be the C shell...

Taliesin answered 25/2, 2009 at 4:27 Comment(5)
The correct word for what you want is "shell" or "prompt" or "REPL" (Read-Eval-Print-Loop, in reference to the 4 Lisp commands that must be joined to make a Lisp interpreter in Lisp), but an interpreter would work.Eponymous
As an aside, the term you are looking for is REPL (Read Evaluate Print Loop).Dinorahdinosaur
duplicate of Is there a REPL for C programming?Bennybenoit
The preferred word is actually "interactive" environment for C. An interactive environment opens up a shell or prompt specific to the language. REPL is also good.Eldin
A comprehensive list of interpreters and compilers for C/C++ can be found here: thefreecountry.com/compilers/cpp.shtmlVaisya
G
71

There are many - if you narrow down the scope of your question we might be able to suggest some specific to your needs.

A notable interpreter is "Ch: A C/C++ Interpreter for Script Computing" detailed in Dr. Dobbs:

Ch is a complete C interpreter that supports all language features and standard libraries of the ISO C90 Standard, but extends C with many high-level features such as string type and computational arrays as first-class objects.

Ch standard is freeware but not open source. Only Ch professional has the plotting capabilities and other features one might want.

I've never looked at this before, but having a c interpreter on hand sounds very useful, and something I will likely add to my toolset. Thanks for the question!


Edit:

Just found out that one of my favorite compilers, TCC, will execute C scripts:

It also handles C script files (just add the shebang line "#!/usr/local/bin/tcc -run" to the first line of your C source code file on Linux to have it executed directly.

TCC can read C source code from standard input when '-' is used in place of 'infile'. Example:

echo 'main(){puts("hello");}' | tcc -run -
Georginegeorglana answered 25/2, 2009 at 4:31 Comment(3)
I wish a version of CH was available under an OSI approved license, so it could be distributed. You can design really nice utilities using their interpreter, unfortunately they're just too problematic to bundle.Styria
That would be nice. Freeware is better than nothing, but until someone does it...Georginegeorglana
Weirdly, tcc exits with status 10 by default. It looks like you have to explicitly add a return 0 giving echo 'main(){puts("hello"); return 0;}' | tcc -run -Slingshot
D
18

picoc - A very small C interpreter

PicoC is a very small C interpreter for scripting. It was originally written as the script language for a UAV's on-board flight system. It's also very suitable for other robotic, embedded and non-embedded applications.

Dunkin answered 6/4, 2012 at 14:53 Comment(0)
T
9

the ROOT project provides a very functional C and C++ interpreter called Cint. I'm quite fond of it. It takes a little getting used to interpretively, though.

TCC is a very good choice as well, but i'm not able to vouch for its REPL

Thorianite answered 25/2, 2009 at 5:31 Comment(3)
Isn't the ROOT team phasing out Cint?Marnimarnia
@Zboson "CERN has switch to a new interpreter, cling. CINT is not supported by CERN anymore"Carruth
ROOT replaced cint by cling. So cling can be taken as updated recommendation. (though - see other answers - cling is C++, not C, if that's relevant, though iirc cint also did some C++)Arapaima
A
8

Probably. There are several for c++. See Have you used any of the C++ interpreters (not compilers)? for examples. Certainly cint will eat nearly any c code with good results, and tcc is so fast that you can use it like a interpreter.

Armenian answered 25/2, 2009 at 4:29 Comment(0)
P
7

Give a look to the Ch Interpreter.

Ch is an embeddable C/C++ interpreter for cross-platform scripting, shell programming, 2D/3D plotting, numerical computing, and embedded scripting.

Pelican answered 25/2, 2009 at 4:32 Comment(0)
R
6

I know we use CINT in class. It seemed pretty good you might want to give it a try!

Rolle answered 14/3, 2009 at 18:6 Comment(0)
A
5

Check Out iGCC

Aurora answered 12/10, 2011 at 12:9 Comment(0)
G
4

cinterp is one for a start.

Graecoroman answered 25/2, 2009 at 4:27 Comment(1)
Are you referring to github.com/danielkeller/cinterp or to free-compilers.sharnoff.org/TOOL/C-12.html ? A link would improve this answer ...Ditty
A
2

ccons appears to satisfy your constraints:

The goal of the ccons project is to create an interactive console for the C programming language, similar to "python" and "irb" for Python and Ruby respectively. The project builds on top of clang and llvm.

Alidis answered 7/9, 2013 at 6:48 Comment(0)
B
2

You can use CompCert. Here are some examples: http://compcert.inria.fr/man/manual004.html

Bennybenoit answered 31/1, 2014 at 14:22 Comment(0)
B
2

More recently there is Cling (based on LLVM/Clang)

http://root.cern.ch/drupal/content/cling

Blakley answered 27/7, 2014 at 6:56 Comment(1)
It is for C++, not C.Ankylose
M
1

It has been done, even though the vast majority of C work is compiled. One example is CH

Moran answered 25/2, 2009 at 4:32 Comment(0)
S
0

CERN has a toolkit called ROOT, which is meant mainly for scientific or data analysis etc.. purposes but it has a Clang - based C/C++ Interpreter called Cling.

They were using a C interpreter called CINT before they adapted Cling. CINT is lightweight & still seems to be available for download.

I think you may get some other by carefully searching through Wikipedia list articles.

Sophisticate answered 2/5, 2018 at 13:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.