igcc
igcc copied to clipboard
Interactive GCC (igcc) is a read-eval-print loop (REPL) for C/C++ programmers. Cloned from http://www.artificialworlds.net/wiki/IGCC/IGCC
Interactive GCC
Interactive GCC (igcc) is a read-eval-print loop (REPL) for C/C++ programmers.
It can be used like this:
$ ./igcc g++> int a = 5; g++> a += 2; g++> cout << a << endl; 7 g++> --a; g++> cout << a << endl; 6 g++>
It is possible to include header files you need like this:
$ ./igcc
g++> #include
It is possible to include your own functions using '.f':
g++> .f Functions paste mode is ON: Enter ".f" again to return to return to normal editing.
g++> int lastIndexOf(char *str, char c) { g++> int ind = -1; g++> for (int i=strlen(b)-1;i>=0;i--) { g++> if (b[i] == c) { g++> ind = i; g++> break; g++> } g++> } g++> return ind; g++> } g++> .f Functions paste mode is OFF
You can use '.p' to enter "Paste" mode to enter multi line snippets :
g++> .p Paste mode is ON: Enter ".p" again to return to return to normal editing.
g++> char c = ''; g++> char *a = (char *)malloc(80); g++> char b[] = "a_another_word_there_last"; g++> strcpy(a, b[lastIndexOf('')); g++> puts(a); g++> .p Paste mode is OFF
[Compile error - type .e to see it.]
Compile errors can be tolerated until the code works:
$ ./igcc g++> #include
Extra include directories can be supplied:
$ ./igcc -Itest/cpp -Itest/cpp2 g++> #include "hello.h" g++> hello(); Hello, g++> #include "world.h" g++> world(); world! g++>
Libs can be linked:
$ ./igcc -lm g++> #include "math.h" g++> cout << pow( 3, 3 ) << endl; // Actually a bad example since libm.a is already linked in C++ 27 g++>
Your own libs can be linked too:
$ ./igcc -Itest/cpp -Ltest/cpp -lmylib g++> #include "mylib.h" g++> defined_in_cpp(); defined_in_cpp saying hello. g++>
The cstdio, iostream and string headers are automatically included, and the std namespace is automatically in scope.
Downloading and using
Download the IGCC tarball from the Sourceforge download area:
https://sourceforge.net/projects/igcc/files/
Untar it like so:
tar -xjf igcc-0.1.tar.bz2
And then start the program like this:
cd igcc-0.1 ./igcc
Then type the C++ code you want to execute. It will be compiled with GCC and the results (if any) will be displayed.
Type .h to see some (minimal) help.
Developing
IGCC is a small python wrapper around GCC.
Check out the code here:
git clone git://igcc.git.sourceforge.net/gitroot/igcc/igcc
Or browse the source here:
http://igcc.git.sourceforge.net/git/gitweb.cgi?p=igcc/igcc;a=tree
Links
IGCC home page: http://www.artificialworlds.net/wiki/IGCC/IGCC
IGCC Sourceforge page: http://sourceforge.net/projects/igcc/
Andy Balaam's home page: http://www.artificialworlds.net
Andy Balaam's blog: http://www.artificialworlds.net/blog
Contact
Andy Balaam may be contacted on axis3x3 at users dot sourceforge dot net
Copyright
IGCC is Copyright (C) 2009 Andy Balaam
IGCC is Free Software released under the terms of the GNU General Public License version 2 or later.
IGCC comes with NO WARRANTY.
See the file COPYING for more information.