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 - 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/
|
||||||
|
Loading…
Reference in New Issue
Block a user