Simple arithmetic language interpreter with JIT compilation, using LLVM.
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.
.gitignore
Makefile
README.md
calc.c
dbg.h
interpreter.c
interpreter.h
jit.c
jit.h
lexer.c
lexer.h
list.c
list.h
llvm.c
llvm.h
parser.c
parser.h
stack.h

README.md

calc

Calc is a proof of concept to implement a simple arithmetic language interpreter with JIT compilation, using either LLVM or a more low-level JIT based on GNU Lightning.

A fun weekend project, if you ask me!

Install

You need LLVM and GNU Lightning installed. On Mac OSX:

$ brew install llvm

Unfortunately the version of Lightning in Homebrew is broken. Download and install lightning from its mirror git repository.

Now:

$ git clone git://github.com/txus/calc.git calc
$ cd calc
$ make

You get the calc executable.

Usage

Using the AST-walking interpreter:

$ ./calc "3 * (4 + 5)"

Using the LLVM JIT compiler:

$ ./calc --llvm "3 * (4 + 5)"

Using the lower-level, GNU-lightning based JIT compiler:

$ ./calc --jit "3 * (4 + 5)"

Syntax

It's just integers, these operators: + - * /, and parentheses for precedence.

Who's this

This was made by Josep M. Bach (Txus) under the MIT license. I'm @txustice on twitter (where you should probably follow me!).