phoenix-lang

Crates.iophoenix-lang
lib.rsphoenix-lang
version1.5.3
sourcesrc
created_at2023-08-09 17:38:04.174497
updated_at2024-06-29 08:44:34.396896
descriptionA simple, fast programming language
homepage
repositoryhttps://github.com/TomtheCoder2/phoenix
max_upload_size
id940218
size280,141
Nautilus (TomtheCoder2)

documentation

README

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++ and i--
  • Better "api" for native functions
  • Add LLVM support
Commit count: 73

cargo fmt