Go to file
2017-09-19 22:11:01 -07:00
src Structs implemented 2017-09-19 22:11:01 -07:00
.gitignore Ignore Cargo.lock 2017-09-19 22:10:56 -07:00
Cargo.toml Change name of project to Schala 2017-09-19 22:11:00 -07:00
closure.schala Convert parsing while, if, fn exprs to use { } 2017-09-19 22:10:59 -07:00
compile.schala Move schala-specific stuff into its own module 2017-09-19 22:11:00 -07:00
conditional.schala Fix this source file 2017-09-19 22:11:01 -07:00
Grammar Fixed arg list parsing 2017-09-19 22:10:53 -07:00
lambda.schala Inline parsing of lambdas like half-works 2017-09-19 22:10:59 -07:00
main.schala Convert parsing while, if, fn exprs to use { } 2017-09-19 22:10:59 -07:00
README.md Rust, not Haskell 2017-09-19 22:11:01 -07:00
recurse.schala Convert parsing while, if, fn exprs to use { } 2017-09-19 22:10:59 -07:00
test.schala Convert parsing while, if, fn exprs to use { } 2017-09-19 22:10:59 -07:00
unicode.schala Unicode should work 2017-09-19 22:10:59 -07:00
while.schala Use buffered reader for stdout 2017-09-19 22:10:59 -07:00

Schala

The experimental programming language meta-interpreter

Schala is a Rust-language framework written to make it easy to create and experiment with toy programming languages. It provides a common REPL, and a trait ProgrammingLanguage with methods for tokenizing text, parsing tokens, evaluating an abstract syntax tree, and other tasks that are common to all programming languages.

Schala started out life as an experiment in writing a Javascript-like programming language that would never encounter any kind of runtime value error, but rather always return null under any kind of error condition. I had seen one too many Javascript Uncaught TypeError: Cannot read property ___ of undefined messages, and I was a bit frustrated. Plus I had always wanted to write a programming langauge from scratch, and Rust is a fun language to program in.

Over time I became interested in playing around with other sorts of programming languages as well, and wanted to make the process as general as possible. I changed the name of the project to Schala, after the Princess of Zeal from Chrono Trigger, because I like classic JRPGs and because it sounds sort of like Scala, and I am continuing to work on the project as my time permits.

Reference works

Here's a partial list of resources I've made use of in the process of learning how to write a programming language.

Evaluation

Understanding Computation, Tom Stuart, O'Reilly 2013

Parsing

http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/

Crafting Interpreters

LLVM

http://blog.ulysse.io/2016/07/03/llvm-getting-started.html