Lox is a little programming language created by Bob Nystrom in his book Crafting Interpreters. This is my attempt at recreating it in C#. I've published a web based version of the interpreter here.
The interprer is still a work in progress as I've not finished the book yet.
Name | Operators | Associates |
---|---|---|
Unary | ! - | Right |
Multiplication | / * % | Left |
Addition | - + | Left |
Comparison | > >= < <= | Left |
Equality | == != | Left |
Lox is a dynamically typed language, variables can have values of four types: nil
, number
(64-bit floating point numbers), boolean
and string
.
var x = 5.8;
var y;
y = 10;
var z = x * y;
var i = true;
print(i);
print(z);
var x = 250;
if (x % 2 == 0)
{
print("Even");
}
else
{
print("Odd");
}
var x = 0;
while(x < 10)
{
if (x > 5)
break;
print(x);
x = x + 1;
}
for (var i = 0; i < 10; i = i + 1)
{
print("i is: " + i);
}
Functions can return something:
fun coolify(thing)
{
return "cool " + thing;
}
print(coolify("app"));
Or return nothing:
fun doSomething() {
print("Doing something...");
}
doSomething();
There are only two functions in the standard library:
pPrints the value to stdout:
print("Hello World!");
print(42);
print(true);
Returns the number of seconds since 0001-01-01:
print(clock());