litto provides some building blocks for building scripting languages
that can be embedded in a Rust application or library.
The name comes from
ditto (A Pokémon name).
litto does not define a scripting language in a concrete way.
For example, syntax, types, stdlib can all be customized.
Interpreter for the abstraction.
Interpreter is abstract, this
crate does provide some building blocks to make it easier to implement
Interpreter. For example:
env::KvEnv: A nested environment that can be used to resolve variables from string name to value.
value::Value: An abstract value that is tracked by a cyclic garbage collector, and supports function calls.
expr::Sexp: S-expression, commonly seen in Lisp-like languages.
Example implementations about environment.
Example implementations about expression.
Example implementations about value.
Macro for creating S-expression.
A lightweight interpreter interface.