Skip to content

Latest commit

 

History

History
34 lines (21 loc) · 1.52 KB

README.md

File metadata and controls

34 lines (21 loc) · 1.52 KB

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.