SubC is a fast and simple public domain compiler for a clean subset
of the C programming language. It can compile itself and passes
gcc -Wall -pedantic
. Its internals are described in detail in the
book
Practical Compiler Construction
Note that SubC is a teaching vehicle rather than a production compiler. Check the README files to find out what it can and cannot do. If you are planning to do something more serious with SubC, you may want to get the development version rather than the book version.
The Windows runtime support code has been written by Jean-Marc Lienher. The Darwin back-end and startup module have been contributed by Romain LWPB. The Linux/x86-64 and NetBSD/386 runtime support as well as proper signal handling for NetBSD were provided by Minux. Thank you!
The book version runs on FreeBSD/386 exclusively.
The development version supports the following platforms:
FreeBSD | 386 | armv6 | x86-64 |
---|---|---|---|
Linux | 386 | x86-64 | |
NetBSD | 386 | x86-64 | |
OpenBSD | 386 | ||
Windows/MinGW | 386 | ||
Darwin | x86-64 | ||
DOS | 8086 |
See above.
__argc
hack
#error
, #line
, and #pragma
commands
struct
and union
static
storage class
extern
identifiers may be declared locally
enum
may be local
auto
and register
keywords are recognized (as no-ops)
&array
is valid syntax