Skip to content

concurrency/nocc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f0ac6ea · Jul 24, 2016
Jul 23, 2016
Jul 21, 2016
Jul 8, 2016
Jun 10, 2013
Jul 24, 2016
Jul 21, 2016
Jul 12, 2016
Jul 12, 2016
Jul 21, 2016
Jul 12, 2016
Dec 28, 2006
Jul 12, 2016
Apr 28, 2016
Jul 8, 2016
May 16, 2015
Nov 30, 2007
May 6, 2013
Jun 1, 2005
Jun 1, 2005
Jul 8, 2016
Jan 4, 2006
Jul 8, 2016
Nov 22, 2013
Nov 17, 2007
Jul 20, 2014
Jul 8, 2016
Jan 3, 2014
Jul 13, 2016
May 13, 2015
Jul 11, 2016

Repository files navigation

NOCC: Concurrent Compiler Framework

NOCC is an experimental compiler framework for CSP-based concurrent languages, as well as others, generating code for a variety of targets (real and abstract). NOCC itself aims to provide a generic compiler framework, of sorts, with particular source languages and output targets added on as needed. Languages are generally compiled for a single (fixed) target, though there is scope for flexibility.

NOTE: the compiler is undergoing some structural work to change it from 32-bit to 64-bit. The code as it was on 08/07/2016 is in the "32bit" branch. So for a while, it'll probably not work right.

Well Supported

Currently implemented to a fairly reasonable extent:

  • AVR assembler (for 8-bit Atmel AVRs), generating flash and eeprom images.

Under Construction

Somewhat under construction, but functional in some ways:

  • Guppy parallel programming language, targeting the CCSP run-time scheduler via CIF.
  • occam-pi parallel programming language, targeting ETC / KRoC.
  • MCSP expression language, targeting ETC / KRoC.

Just Playing

And some extra things that I've poked around with, but haven't gotten very far on:

  • escape analysis language, and interactive processing / exploration of these.
  • haskell front-end (hopp) parser, to digest parse-trees generated by another compiler.
  • RCX BASIC, a simple programming language for the LEGO Mindstorms RCX (intended to code-gen to RCX bytecode).
  • tree-rewriting language, an abstract way of specifying parse-tree transformations within nocc.