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.

Current status

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

The code for NOCC now resides on, 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:// nocc

Language documentation

Compiler documentation

Here it is, enjoy!


NOCC (last edited 2013-06-03 13:11:11 by frmb)