Fix up readme

This commit is contained in:
greg 2019-03-20 01:09:38 -07:00
parent 153e7977d3
commit b82eebdeec

View File

@ -1,19 +1,22 @@
# 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 toy programming languages. It provides a cross-language REPL and with multipl 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. 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 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 function `start_repl`, meant to be used as entry point into a common REPL or
users. This function parses command-line arguments and either runs an interactive non-interactive environment. Clients are expected to invoke `start_repl` with a
REPL or interprets a program non-interactively. 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.
Individual programming language implementations are Rust types that implement Run schala with: `cargo run`. This will drop you into a REPL environment. Type
the `ProgrammingLanguageInterface` trait and store whatever persistent state is `:help` for more information, or type in text in any supported programming
relevant to that language. The ability to share state between different language (currently only schala-lang) to evaluate it in the REPL.
programming languages is in the works.
## History ## History
@ -33,18 +36,18 @@ creating a language name confusingly close to Scala. The naming scheme for
languages implemented with the Schala meta-interpreter is Chrono Trigger languages implemented with the Schala meta-interpreter is Chrono Trigger
characters. characters.
Schala is incomplete alpha software and is not ready for public release. Schala and languages implemented with it are incomplete alpha software and are
not ready for public release.
## Languages implemented using the meta-interpreter ## Languages implemented using the meta-interpreter
* The eponymous *Schala* language is an interpreted/compiled scripting langauge, * The eponymous *Schala* language is a work-in-progress general purpose
designed to be relatively simple, but with a reasonably sophisticated type programming language with static typing and algebraic data types. Its design
system. goals include having a very straightforward implemenation and being syntactically
minimal.
* *Maaru* was the original Schala (since renamed to free up the name *Schala* * *Maaru* is a very simple dynamically-typed scripting language, with the semantics
for the above language), a very simple dynamically-typed scripting language that all runtime errors return a `null` value rather than fail.
such that all possible runtime errors result in null rather than program
failure.
* *Robo* is an experiment in creating a lazy, functional, strongly-typed language * *Robo* is an experiment in creating a lazy, functional, strongly-typed language
much like Haskell much like Haskell