Skip to content
A C# interpreter for the Lox programming language
C# HTML CSS
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitattributes
.gitignore
README.md

README.md

LoxSharp

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.

What's implemented

The interprer is still a work in progress as I've not finished the book yet.

Operators

Name Operators Associates
Unary ! - Right
Multiplication / * % Left
Addition - + Left
Comparison > >= < <= Left
Equality == != Left

Variables

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);

If conditional

var x = 250;
if (x % 2 == 0)
{
    print("Even");
}
else
{
    print("Odd");
}

Loops

While loop

var x = 0;
while(x < 10)
{
    if (x > 5)
        break;
        
    print(x);
    x = x + 1;
}

For loop

for (var i = 0; i < 10; i = i + 1)
{
    print("i is: " + i);
}

Functions

Functions can return something:

fun coolify(thing)
{
    return "cool " + thing;
}

print(coolify("app"));

Or return nothing:

fun doSomething() {
    print("Doing something...");
}

doSomething();

Standard Library

There are only two functions in the standard library:

Print

pPrints the value to stdout:

print("Hello World!");
print(42);
print(true);

Clock

Returns the number of seconds since 0001-01-01:

print(clock());
You can’t perform that action at this time.