Skip to content
Expression-oriented toy programming language written in Rust
Branch: develop
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitignore
.travis.yml
Cargo.lock
Cargo.toml
LICENSE-APACHE
LICENSE-MIT
README.md
build.rs Add: Add initial source code with peg-based parser Aug 6, 2018

README.md

expressi

Build Status codecov

Expression-oriented toy programming language written in Rust

let add = a -> b -> a + b;
let succ = add(1);
let v = succ(succ(succ(1)));

let f = if v == 4 {
  a -> succ(a)
} else {
  a -> a
};
let x = f(10)

In this example, x is evaluated to 11.

TODO

  • Refine errors
    • Property organize error variants
    • Get rid of unwrap completely
    • Point where the cause is
  • Add EvalConstant transformer which calculates compile-time value
  • Implement operators as functions
  • User-defined types
    • Tuple
    • Enum
    • Struct
  • Multi-line input in REPL

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

You can’t perform that action at this time.