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 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
|
||||
tree, and other tasks that are common to all programming languages, as well as sharing state
|
||||
between multiple programming languages.
|
||||
tree, and other tasks that are common to all programming languages, as well as
|
||||
sharing state between multiple programming languages.
|
||||
|
||||
Schala is implemented as a Rust library `schala-repl`, which provides a
|
||||
function `start_repl`, meant to be used as entry point into a common REPL or
|
||||
non-interactive environment. Clients are expected to invoke `start_repl` with a
|
||||
vector of programming languages. Individual programming language
|
||||
implementations are Rust types that implement the
|
||||
`ProgrammingLanguageInterface` trait and store whatever persistent state is
|
||||
relevant to that language.
|
||||
Schala is implemented as a Rust library `schala-repl`, which provides a `Repl`
|
||||
data structure that takes in a value implementing the
|
||||
`ProgrammingLanguageInterface` trait. Individual programming language
|
||||
implementations are Rust types that implement `ProgrammingLanguageInterface`
|
||||
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
|
||||
language (currently only schala-lang) to evaluate it in the REPL.
|
||||
|
||||
## Running
|
||||
|
||||
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
|
||||
|
||||
@ -61,35 +63,28 @@ of learning how to write a programming language.
|
||||
|
||||
### 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
|
||||
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
|
||||
|
||||
https://eli.thegreenplace.net/2018/unification/
|
||||
https://eli.thegreenplace.net/2018/type-inference/
|
||||
http://smallcultfollowing.com/babysteps/blog/2017/03/25/unification-in-chalk-part-1/
|
||||
http://reasonableapproximation.net/2019/05/05/hindley-milner.html
|
||||
* 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
|
||||
* https://eli.thegreenplace.net/2018/unification/
|
||||
* https://eli.thegreenplace.net/2018/type-inference/
|
||||
* http://smallcultfollowing.com/babysteps/blog/2017/03/25/unification-in-chalk-part-1/
|
||||
* http://reasonableapproximation.net/2019/05/05/hindley-milner.html
|
||||
https://rickyhan.com/jekyll/update/2018/05/26/hindley-milner-tutorial-rust.html
|
||||
|
||||
### 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
|
||||
http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/
|
||||
https://soc.github.io/languages/unified-condition-syntax
|
||||
|
||||
[Crafting Interpreters](http://www.craftinginterpreters.com/)
|
||||
* http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/
|
||||
* https://soc.github.io/languages/unified-condition-syntax
|
||||
* [Crafting Interpreters](http://www.craftinginterpreters.com/)
|
||||
|
||||
### LLVM
|
||||
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/
|
||||
* http://blog.ulysse.io/2016/07/03/llvm-getting-started.html
|
||||
|
Loading…
Reference in New Issue
Block a user