Forsp LLVM-based compiler
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Clyne b16e418091
remove unnecessary setinsertpoint
6 months ago
examples global env; alloca locals 6 months ago
.gitignore break code into separate files 6 months ago
LICENSE add license to files 6 months ago
Makefile readme update; use CC in Makefile 6 months ago
README.md readme update; use CC in Makefile 6 months ago
ast.cpp remove unnecessary setinsertpoint 6 months ago
ast.hpp global env; alloca locals 6 months ago
llvm.cpp global env; alloca locals 6 months ago
llvm.hpp global env; alloca locals 6 months ago
main.cpp global env; alloca locals 6 months ago
parser.cpp add license to files 6 months ago
parser.hpp add license to files 6 months ago
support.c global env; alloca locals 6 months ago
test.fp global env; alloca locals 6 months ago
var.cpp global env; alloca locals 6 months ago
var.hpp global env; alloca locals 6 months ago

README.md

forspll

forspll is an implementation of Forsp as an LLVM-based compiler. Forsp is a tiny yet very versatile programming language that mixes features of Forth and Lisp. Through LLVM, Forsp can be compiled into efficient machine code for a wide array of platforms.

forspll features:

  • Lisp-style S-expression syntax
  • Forth-style data stack for parameters/values
  • Linking with C functions (see support.c)
  • Recursion: $self gets pointer to current function

Missing features:

  • Captured variables: Functions/lambdas are not dynamic and do not capture the state of previously declared variables
  • Quote operator: quote/'
  • Built-in dynamic allocations (implement them via platform-specific support.c)

Building

Requires Clang and LLVM development files.

Run make to build the compiler.

Run make prog to compile test.fp and support.c.