A very small C interpreter (Note: Originally a fork of https://github.com/RTSYork/picoc)
Go to file
2015-06-10 15:29:12 -05:00
cstdlib remove endian macros 2015-06-10 14:49:34 -05:00
msvc/picoc wrap unistd.h with compile switch 2015-06-07 23:24:34 -05:00
platform use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
tests use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
.gitignore don't explicitly set EnableDebugger=TRUE when calling PicocParse, state is now set via NO_DEBUGGER compile switch, add ignore items' 2015-06-07 19:37:21 -05:00
clibrary.c remove endian macros 2015-06-10 14:49:34 -05:00
debug.c use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
expression.c use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
heap.c use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
include.c use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
interpreter.h minor cleanup 2015-06-10 14:37:21 -05:00
lex.c use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
LICENSE add license file, update copyright holders 2015-06-10 15:29:12 -05:00
Makefile PRINT_SOURCE_POS macro refactors 2015-06-10 12:33:16 -05:00
parse.c use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
picoc.c use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
picoc.h use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
platform.c use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
platform.h remove endian macros 2015-06-10 14:49:34 -05:00
README add license file, update copyright holders 2015-06-10 15:29:12 -05:00
table.c use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
type.c use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00
variable.c use stdbool.h and convert TRUE/FALSE to true/false 2015-06-10 14:24:53 -05:00

picoc
-----

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

The core C source code is around 3500 lines of code. It's not intended to be
a complete implementation of ISO C but it has all the essentials. When
compiled it only takes a few k of code space and is also very sparing of
data space. This means it can work well in small embedded devices. It's also
a fun example of how to create a very small language implementation while
still keeping the code readable.

It's been tested on x86-32, x86-64, powerpc, arm, ultrasparc, HP-PA and blackfin
processors and is easy to port to new targets.


Compiling picoc
---------------

picoc can be compiled for a UNIX/Linux/POSIX host by typing "make".

The test suite can be run by typing "make test".


Porting picoc
-------------

platform.h is where you select your platform type and specify the includes
etc. for your platform.

platform_XXX.c contains support functions so the compiler can work on
your platform, such as how to write characters to the console etc..

platform_library.c contains your library of functions you want to make
available to user programs.

There's also a clibrary.c which contains user library functions like
printf() which are platform-independent.

Porting the system will involve setting up suitable includes and defines
in platform.h, writing some I/O routines in platform_XXX.c, putting
whatever user functions you want in platform_library.c and then changing
the main program in picoc.c to whatever you need to do to get programs
into the system.

platform.h is set to UNIX_HOST by default so tests can be easily run on
a UNIX system. You'll need to specify your own host setup dependent on
your target platform.


Copyright
---------

picoc is published under the "New BSD License".
http://www.opensource.org/licenses/bsd-license.php