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