A very small C interpreter (Note: Originally a fork of https://github.com/RTSYork/picoc)
Go to file
zik.saleeba d2da61b81d Added a quicksort test case
git-svn-id: http://picoc.googlecode.com/svn/trunk@311 21eae674-98b7-11dd-bd71-f92a316d2d60
2009-05-29 03:24:36 +00:00
softfloat Added software floating point library. Not integrated yet. 2009-05-28 03:22:16 +00:00
tests Added a quicksort test case 2009-05-29 03:24:36 +00:00
clibrary.c Fixed bogus references to native math library 2009-05-29 00:21:58 +00:00
expression.c Fixed a problem with type coercion on parameter passing. 2009-05-27 23:54:22 +00:00
heap.c By popular demand I'm adding support for native pointers. It's a work in progress - not working yet. 2009-05-06 00:25:09 +00:00
lex.c Fixed a bug which was causing decimal constants less than zero to be interpreted as octal 2009-05-29 00:40:45 +00:00
library_ffox.c Added the beginnings of flying fox platform support. 2009-05-04 12:02:16 +00:00
library_surveyor.c added support for gps waypoint navigation and wheel encoders in library_surveyor.c 2009-05-25 21:17:29 +00:00
library_unix.c Removed library_unix.c code used for tests and examples 2009-04-20 00:56:17 +00:00
Makefile Added tests for new math library 2009-05-29 01:01:07 +00:00
math_library.c Fixed missing references to fdlibm functions. 2009-05-29 00:32:40 +00:00
parse.c Fix for a bug where variables which were initialised on declaration weren't writable. 2009-05-14 00:21:29 +00:00
picoc.c Floating point evaluation implicit casting fixes. 2009-05-27 03:02:30 +00:00
picoc.h Added type coercion to floating point from numeric types in parameters. 2009-05-27 05:03:48 +00:00
platform.c Created a stream output system. 2009-04-27 04:56:58 +00:00
platform.h Added tests for new math library 2009-05-29 01:01:07 +00:00
platform_ffox.c Added the beginnings of flying fox platform support. 2009-05-04 12:02:16 +00:00
platform_surveyor.c Created a stream output system. 2009-04-27 04:56:58 +00:00
platform_unix.c Removed this "deliberate" mistake. 2009-05-05 22:19:13 +00:00
README Removed old file 2009-02-25 22:00:05 +00:00
softfloat_library.c Limited decimal printing to sane precision. 2009-05-29 00:12:12 +00:00
table.c Interactive mode error handling fixed for surveyor. 2009-04-04 03:11:12 +00:00
TODO Created a stream output system. 2009-04-27 04:56:58 +00:00
type.c Fix for a bug where variables which were initialised on declaration weren't writable. 2009-05-14 00:21:29 +00:00
variable.c Fix for a bug where variables which were initialised on declaration weren't writable. 2009-05-14 00:21:29 +00:00

picoc
-----

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

The core C source code is less than 3000 lines of code. 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.



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_support.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 new 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_support.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


Copyright (c) 2009, Zik Saleeba
All rights reserved.

Redistribution and use in source and binary forms, with or without 
modification, are permitted provided that the following conditions are 
met:

    * Redistributions of source code must retain the above copyright 
      notice, this list of conditions and the following disclaimer.
      
    * Redistributions in binary form must reproduce the above copyright 
      notice, this list of conditions and the following disclaimer in 
      the documentation and/or other materials provided with the 
      distribution.
      
    * Neither the name of the Zik Saleeba nor the names of its 
      contributors may be used to endorse or promote products derived 
      from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.