1 unstable release
Uses new Rust 2024
new 0.1.1 | May 12, 2025 |
---|---|
0.1.0 |
|
0.1.0-alpha.1 |
|
#109 in Programming languages
144 downloads per month
355KB
9K
SLoC
evalit
A toy interpreter.
example
use evalit::{Interpreter, Evaluator};
fn main() {
let mut env = Environment::new();
let script = r#"
fn fib(n) {
if n <= 0 {
return 0;
}
if n <= 2 {
return 1;
}
return fib(n-1) + fib(n-2);
}
let sum = 0;
for i in 0..=10 {
sum += fib(i);
}
return sum;
"#;
let retval = Interpreter::eval_script(script, env).unwrap();
println!("ret: {:?}", ret);
// should output:
// ret: Some(143)
}
syntax
primitive type
null
boolean
true
, false
integer
$-2^{63}$ ~ $2^{63}$
float
float number, f64.
string
string quote by "
control flow
loop
loop
to repeat.
loop {}
while
while
to repeat.
while condition {}
for
for
to iterate.
for i in 0..=10 {}
if
if
to choose branch.
if condition {} else {}
break
break
to exist loop.
continue
continue
to finish one iterate.
return
return
to return value.
fn
user defined function
fn fib(n) {
if n <= 0 {
return 0;
}
if n <= 2 {
return 1;
}
return fib(n-1) + fib(n-2);
}
Dependencies
~4–11MB
~115K SLoC