cmc
is a compiler for the C Minus programming language, a small subset of the C
programming language
which is described in "Compiler Construction: Principles and Practice" by Kenneth C. Louden.
In my spare time, I have an interest in compilers and interpreters for toy languages. I've developed a TinyBASIC interpreter, a Micro Manual LISP interpreter, and an assembler and virtual machine for the Little Man Computer. However, I've never developed a full compiler, so this is the project to do it.
I was first introduced to the C Minus programming language in a university compilers course. It was a one semester undergraduate course, so we weren't able to develop a full compiler, only a scanner, parser, and semantic checker. Since then, I've always wanted to do a full C Minus compiler.
I really want to gain more experience with the go programming language, so it was chosen as the implementation language for no particular reason other than me wanting to experiment.
The project is still in its infancy. I've got a working scanner, but there is still a lot of work left.
Compiling this software just requires a go toolchain. There are no external dependencies.
LICENSE
- the license which applies to all files within this repositoryLANG.md
- language specification for the C Minus programming languageHACKING.md
- an English language map of the code base