diff --git a/README.md b/README.md index 4b29645..7029bc0 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,21 @@ - # Schala - a programming language meta-interpreter -Schala is a Rust framework written to make it easy to -create and experiment with toy programming languages. It provides -a common REPL, and a trait `ProgrammingLanguage` with provisions -for tokenizing text, parsing tokens, evaluating an abstract syntax tree, -and other tasks that are common to all programming languages. +Schala is a Rust framework written to make it easy to create and experiment +with toy programming languages. It provides a cross-language REPL and +provisions for tokenizing text, parsing tokens, evaluating an abstract syntax +tree, and other tasks that are common to all programming languages. -Schala is implemented as a Rust library `schala_lib`, which provides a -`schala_main` function. This function serves as the main loop of the REPL, if run -interactively, or otherwise reads and interprets programming language source -files. It expects as input a vector of `PLIGenerator`, which is a type representing -a closure that returns a boxed trait object that implements the `ProgrammingLanguage` trait, -and stores any persistent state relevant to that programming language. The ability -to share state between different programming languages is in the works. +Schala is implemented as a Rust library `schala-repl`, which provides a +function `repl_main` meant to be used as the equivalent of main() for library +users. This function parses command-line arguments and either runs an interactive +REPL or interprets a program non-interactively. -## About +Individual programming language implementations are Rust types that implement +the `ProgrammingLanguageInterface` trait and store whatever persistent state is +relevant to that language. The ability to share state between different +programming languages is in the works. + +## History Schala started out life as an experiment in writing a Javascript-like programming language that would never encounter any kind of runtime value @@ -60,6 +60,7 @@ of learning how to write a programming language. https://skillsmatter.com/skillscasts/10868-inside-the-rust-compiler https://www.youtube.com/watch?v=il3gD7XMdmA http://dev.stephendiehl.com/fun/006_hindley_milner.html +https://rust-lang-nursery.github.io/rustc-guide/type-inference.html ### Evaluation *Understanding Computation*, Tom Stuart, O'Reilly 2013 @@ -77,4 +78,5 @@ http://blog.ulysse.io/2016/07/03/llvm-getting-started.html ###Rust resources https://thefullsnack.com/en/rust-for-the-web.html + https://rocket.rs/guide/getting-started/