Improved README
This commit is contained in:
parent
5d15d60ab6
commit
e81d5e108b
39
README
39
README
@ -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
|
|
40
README.md
Normal file
40
README.md
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user