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 69d136281d
switch target to x86-64
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 switch target to x86-64 6 months ago
README.md readme update; use CC in Makefile 6 months ago
ast.cpp switch target to x86-64 6 months ago
ast.hpp global env; alloca locals 6 months ago
llvm.cpp switch target to x86-64 6 months ago
llvm.hpp global env; alloca locals 6 months ago
main.cpp take env off stack; only save locals for recursion 6 months ago
parser.cpp add license to files 6 months ago
parser.hpp add license to files 6 months ago
support.c switch target to x86-64 6 months ago
test.fp switch target to x86-64 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.