From e81d5e108b33b9e043f7a82dd6cf9fdac0b4e8d1 Mon Sep 17 00:00:00 2001 From: greg Date: Mon, 10 Apr 2017 00:56:55 -0700 Subject: [PATCH] Improved README --- README | 39 --------------------------------------- README.md | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 39 deletions(-) delete mode 100644 README create mode 100644 README.md diff --git a/README b/README deleted file mode 100644 index d06e91f..0000000 --- a/README +++ /dev/null @@ -1,39 +0,0 @@ - -No-runtime-value-error-language - -A language wth a largely-python-like where there are no value errors. Can call null like a function - - - -Grammar: - -#comments are hashes -# newlines are equivalent to semicolons for breaking up statements - -let a = 1.3; let b = "string literal" -let c = 2 - -if a < 3 then any(); number(); of(); exprs(); else whatever(); end - -while condition; do(); whatever(); let a = 3; a; end - -#function definition -fn my_function(arg1, arg2); statements(); end - - -Keywords: -if, then, else, while, let, fn, end, null - - -Refernece works: - - Evaluation: - Understanding Computation - - Parsing: - - http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/ - - - LLVM: - http://blog.ulysse.io/2016/07/03/llvm-getting-started.html diff --git a/README.md b/README.md new file mode 100644 index 0000000..34be9af --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +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 typeclass `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](http://www.craftinginterpreters.com/) + +#### LLVM +http://blog.ulysse.io/2016/07/03/llvm-getting-started.html