new occam-pi compiler framework (experimental)
C Assembly C++ PHP Shell SourcePawn Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
addons
backend
extn
extras
frontend
include
lang
lexer
misc
parser
prolog
target
tests
xml
.gitignore
AUTHORS
CHANGELOG
COPYING
INSTALL
Makefile.am
README
README.md
TODO
changelog-to-rss
config.rpath
configure.ac
make_win32_release.sh
nocc.c
nocc.specs.xml.in
version.c

README.md

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.