18 stable releases
| 1.5.3 | Jun 29, 2024 |
|---|---|
| 1.5.2 | Jun 28, 2024 |
| 1.4.0 | Mar 26, 2024 |
| 1.3.2 | Nov 4, 2023 |
| 0.1.1 | Aug 9, 2023 |
#309 in Embedded development
1,178 downloads per month
245KB
5K
SLoC
Phoenix
Programming Language
Based on the book Crafting Interpreters and this repo
Features
- Dynamic typing
- Automatic memory management
- Garbage collection
- First-class functions
- Closures
- Lexical scoping
- Tail recursion
- Pattern matching
- Algebraic data types
- Inheritance
- API for native functions written in Rust
Usage
- To start the program run:
cargo run -- --help
- To install phoenix run:
cargo install --path .
Then you can run phoenix with:
phoenix --help
Examples
Binary Search
fun binary_search(list, item) {
var low = 0;
var high = list.len() - 1;
while low <= high {
var mid = (low + high) / 2;
var guess = list[mid];
printf("low: {}, high: {}, mid: {}, guess: {}", low, high, mid, guess);
if guess == item {
return mid;
} else if guess > item {
high = mid - 1;
} else {
low = mid + 1;
}
}
return nil;
}
var elements = [1, 3, 5, 7, 9];
var search = 7;
printf("element {} is at index: {}", search, binary_search([1, 3, 5, 7, 9], 7));
TODO
- Add more examples
- Add more tests
- Add more documentation
- Add more error handling
- Fix lists (not working: access of lists in classes eg:
c.l[0] = 1;) - Fix REPL
- Fix modules (not working: classes)
- Implement
[+-*/]=,i++andi-- - Better "api" for native functions
- Add LLVM support
Dependencies
~6–15MB
~173K SLoC