- Rust like syntax
- Static typing
- Made for OO
- Borrow checker
- Linux
- lcc (LLVM)
- gcc
Clone the repos
build with make
$./roo input_file
input_file file being the file to compile.
Then run
$./run.sh
to compile the llvm file into an executable and launch it. The output will be ./a.out
Convert the code into token.
Throw an error if the lexer don't recognize the input.
Generate an AST from the tokens.
The tree is generated with the token's priority found in OpPrec[]
.
Thrown an error if the input does't respect the grammar.
Utils for generating AST nodes.
Functions trees from statements such as functions or loops.
Utils requesting token such as colon().
Functions managing types compatibilities.
Generate llvm ir code from the AST.
Utils for generating llvm code.
[Entry]
Open and close files and calls other files?
Expose global variables.
Expose public functions.
Public Enums
Utils for declaring variables or functions.
Functions managing the symbols tables.
Compiler tutorial : https://github.com/DoctorWkt/acwj
LLVM IR doc : http://llvm.org/docs/LangRef.html
LLVM IR unofficial guide : https://mapping-high-level-constructs-to-llvm-ir.readthedocs.io/en/latest/README.html