Updated readme some
This commit is contained in:
parent
e39356c0e5
commit
bc80c8f9ad
30
README.md
30
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/
|
||||
|
Loading…
Reference in New Issue
Block a user