NOCC: A New occam-pi Compiler
This content has been moved here from the existing NOCC web-page, in an attempt to make compiler documentation a little more manageable. All NOCC related pages are accessible through the CategoryNOCC category.
Currently parses a fair range of the occam-pi language, that to varying degrees gets scoped, checked and code-generated ok. Error handling is still a bit basic, more work required on alias and parallel-usage checking. Workspace and mobilespace allocation are well on the way, and correct mobilespace initialisation sequences should be generated for static mobiles that it understands. Basic parallel sub-processes and channel communication working -- no support for non-trivial PROTOCOLs yet. Basic FUNCTIONs working too, as are library generation and usage (new style with namespaces); separate compilation should work too.
December 2012: support for various other things has appeared inside the compiler (over the last couple of years). There are now a variety of languages in-progress (occam-pi, MCSP, RCX-BASIC, AVR assembler, Guppy, escape-analysis-code, traces-language, tree-rewriting-language); the last two being sort of internal to the compiler. For most of these, support is incomplete (i.e. NOCC still isn't a drop-in replacement for occ21) and the code-gen support varies massively. occam-pi, MCSP and Guppy front-ends are heading towards an LLVM code-generation route (to be combined with the CCSP run-time system, in some as-yet-to-be-determined way); some initial proddings on this -- it's feasible -- but nothing more. The most complete part (probably) is the AVR assembler, that generates code for Atmel AVR devices, but it's only taking assembler source as input (not complex).
The code for NOCC now resides on https://github.com/concurrency/nocc, together with bug-tracking (issues). The pages on cs-projects will dwindle and eventually be archived probably. You can get the latest version of the code with something like:
bash$ git clone --depth 1 git://github.com/concurrency/nocc.git nocc
NOCC/OccamPi details on some aspects of the occam-pi compiler.
The MCSP language is documented elsewhere: http://www.cs.kent.ac.uk/projects/ofa/nocc/mcsp.html
NOCC/AVRasm details on the AVR assembler language.
NOCC/Guppy details on some aspects of the Guppy compiler.
Here it is, enjoy!
NOCC/Structure overall structure of the compiler, including details on the various parses made by the compiler.
NOCC/Languages documentation on the various sub-languages used within the compiler.
NOCC/Internals details on compiler internals.
NOCC/CommandLine command-line options.
NOCC/SpecsFile details on the compiler specification file.
NOCC/CompilerOutput details on output files generated by the compiler.