Updated readme some

This commit is contained in:
greg 2018-11-09 01:51:25 -08:00
parent e39356c0e5
commit bc80c8f9ad

View File

@ -1,21 +1,21 @@
# Schala - a programming language meta-interpreter # Schala - a programming language meta-interpreter
Schala is a Rust framework written to make it easy to Schala is a Rust framework written to make it easy to create and experiment
create and experiment with toy programming languages. It provides with toy programming languages. It provides a cross-language REPL and
a common REPL, and a trait `ProgrammingLanguage` with provisions provisions for tokenizing text, parsing tokens, evaluating an abstract syntax
for tokenizing text, parsing tokens, evaluating an abstract syntax tree, tree, and other tasks that are common to all programming languages.
and other tasks that are common to all programming languages.
Schala is implemented as a Rust library `schala_lib`, which provides a Schala is implemented as a Rust library `schala-repl`, which provides a
`schala_main` function. This function serves as the main loop of the REPL, if run function `repl_main` meant to be used as the equivalent of main() for library
interactively, or otherwise reads and interprets programming language source users. This function parses command-line arguments and either runs an interactive
files. It expects as input a vector of `PLIGenerator`, which is a type representing REPL or interprets a program non-interactively.
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.
## 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 Schala started out life as an experiment in writing a Javascript-like
programming language that would never encounter any kind of runtime value 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://skillsmatter.com/skillscasts/10868-inside-the-rust-compiler
https://www.youtube.com/watch?v=il3gD7XMdmA https://www.youtube.com/watch?v=il3gD7XMdmA
http://dev.stephendiehl.com/fun/006_hindley_milner.html http://dev.stephendiehl.com/fun/006_hindley_milner.html
https://rust-lang-nursery.github.io/rustc-guide/type-inference.html
### Evaluation ### Evaluation
*Understanding Computation*, Tom Stuart, O'Reilly 2013 *Understanding Computation*, Tom Stuart, O'Reilly 2013
@ -77,4 +78,5 @@ http://blog.ulysse.io/2016/07/03/llvm-getting-started.html
###Rust resources ###Rust resources
https://thefullsnack.com/en/rust-for-the-web.html https://thefullsnack.com/en/rust-for-the-web.html
https://rocket.rs/guide/getting-started/ https://rocket.rs/guide/getting-started/