Update README
This commit is contained in:
parent
5eb743a8b5
commit
f625b80d0c
65
README.md
65
README.md
@ -1,22 +1,24 @@
|
|||||||
# Schala - a programming language meta-interpreter
|
# Schala - a programming language meta-interpreter
|
||||||
|
|
||||||
Schala is a Rust framework written to make it easy to create and experiment
|
Schala is a Rust framework written to make it easy to create and experiment
|
||||||
with multipl toy programming languages. It provides a cross-language REPL and
|
with multiple toy programming languages. It provides a cross-language REPL and
|
||||||
provisions for tokenizing text, parsing tokens, evaluating an abstract syntax
|
provisions for tokenizing text, parsing tokens, evaluating an abstract syntax
|
||||||
tree, and other tasks that are common to all programming languages, as well as sharing state
|
tree, and other tasks that are common to all programming languages, as well as
|
||||||
between multiple programming languages.
|
sharing state between multiple programming languages.
|
||||||
|
|
||||||
Schala is implemented as a Rust library `schala-repl`, which provides a
|
Schala is implemented as a Rust library `schala-repl`, which provides a `Repl`
|
||||||
function `start_repl`, meant to be used as entry point into a common REPL or
|
data structure that takes in a value implementing the
|
||||||
non-interactive environment. Clients are expected to invoke `start_repl` with a
|
`ProgrammingLanguageInterface` trait. Individual programming language
|
||||||
vector of programming languages. Individual programming language
|
implementations are Rust types that implement `ProgrammingLanguageInterface`
|
||||||
implementations are Rust types that implement the
|
and store whatever persistent state is relevant to that language.
|
||||||
`ProgrammingLanguageInterface` trait and store whatever persistent state is
|
|
||||||
relevant to that language.
|
|
||||||
|
|
||||||
Run schala with: `cargo run`. This will drop you into a REPL environment. Type
|
|
||||||
`:help` for more information, or type in text in any supported programming
|
## Running
|
||||||
language (currently only schala-lang) to evaluate it in the REPL.
|
|
||||||
|
Run schala with the normal `cargo run`. This will drop you into a REPL
|
||||||
|
environment. Type `:help` for more information, or type in text in any
|
||||||
|
supported programming language (currently only `schala-lang`) to evaluate it in
|
||||||
|
the REPL.
|
||||||
|
|
||||||
## History
|
## History
|
||||||
|
|
||||||
@ -61,35 +63,28 @@ of learning how to write a programming language.
|
|||||||
|
|
||||||
### General
|
### General
|
||||||
|
|
||||||
http://thume.ca/2019/04/18/writing-a-compiler-in-rust/
|
* http://thume.ca/2019/04/18/writing-a-compiler-in-rust/
|
||||||
|
|
||||||
### Type-checking
|
### Type-checking
|
||||||
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
|
* https://rust-lang-nursery.github.io/rustc-guide/type-inference.html
|
||||||
|
* https://eli.thegreenplace.net/2018/unification/
|
||||||
https://eli.thegreenplace.net/2018/unification/
|
* https://eli.thegreenplace.net/2018/type-inference/
|
||||||
https://eli.thegreenplace.net/2018/type-inference/
|
* http://smallcultfollowing.com/babysteps/blog/2017/03/25/unification-in-chalk-part-1/
|
||||||
http://smallcultfollowing.com/babysteps/blog/2017/03/25/unification-in-chalk-part-1/
|
* http://reasonableapproximation.net/2019/05/05/hindley-milner.html
|
||||||
http://reasonableapproximation.net/2019/05/05/hindley-milner.html
|
|
||||||
https://rickyhan.com/jekyll/update/2018/05/26/hindley-milner-tutorial-rust.html
|
https://rickyhan.com/jekyll/update/2018/05/26/hindley-milner-tutorial-rust.html
|
||||||
|
|
||||||
### Evaluation
|
### Evaluation
|
||||||
*Understanding Computation*, Tom Stuart, O'Reilly 2013
|
|
||||||
|
|
||||||
*Basics of Compiler Design*, Torben Mogensen
|
* _Understanding Computation_, Tom Stuart, O'Reilly 2013
|
||||||
|
* _Basics of Compiler Design_, Torben Mogensen
|
||||||
|
|
||||||
### Parsing
|
### Parsing
|
||||||
http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/
|
* http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/
|
||||||
https://soc.github.io/languages/unified-condition-syntax
|
* https://soc.github.io/languages/unified-condition-syntax
|
||||||
|
* [Crafting Interpreters](http://www.craftinginterpreters.com/)
|
||||||
[Crafting Interpreters](http://www.craftinginterpreters.com/)
|
|
||||||
|
|
||||||
### LLVM
|
### LLVM
|
||||||
http://blog.ulysse.io/2016/07/03/llvm-getting-started.html
|
* 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