-
Notifications
You must be signed in to change notification settings - Fork 1
scientific-coder/Computer-Languages
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
# Boost::Spirit + LLVM = WIN ! ## This project contains examples on how to build interpreters and compilers with the Spirit parser library and the LLVM backend. This is a work in progress, with for now, only the first examples as self-contained c++ programs (hence the dupplication). After launching the programs, you have to feed the "code" on standard input (Ctrl-d to end input when interactive). * lang-1 only contains artihmetic expressions. So if you type : " 1+2*(3+1)-1/2 " <and Ctrl-d> it will output: " parsing succeded ! ; ModuleID = 'lang_1' define i32 @main() { entry: %addtmp = add i32 3, 1 %multmp = mul i32 2, %addtmp %addtmp1 = add i32 1, %multmp %divtmp = sdiv i32 1, 2 %subtmp = sub i32 %addtmp1, %divtmp ret i32 %subtmp } " and then exec the code to print the result: " result: 9 " lang-2 adds variables (var a; var b=...;) and statements must end with a ';' the program must end with a return statement (return ... ;) lang-3 adds if{} [else{}] and while(){} control structures and ternary operators. To be continued ... # TODO: * and then make an llvm-backed calc7 * handle scopes with symbols_stack * handle function definitions
About
Compilers, Interpreters, with Spirit parser and LLVM code generator, for educational purposes
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published