Crafting Interpreters
A simple interpreter that runs in your browser. Powered by Rust
Reference
Builtin Types
- Number - 64 bit float
- Str
- Bool
- Array
- Function
- Nil
Native Functions
In case of errors or invalid arguments, a global error variable named "errString" is set with the error message and the function returns nil. Otherwise, the global error variable is set to nil.-
clock() -> Number
Returns the current epoch in milliseconds. -
print(Str)
Prints the given string to the output. -
printf(String format, ...) -> Nil
Prints a formatted string with support for placeholders. Placeholders can be numeric indices like {0}, {1}, or variable names like {name}. -
input(String) -> Str
Reads a string from the input, displaying the optional given string as a prompt. -
import "path" as alias;
Imports another Lox file and namespaces its functions and variables under `alias` (e.g. `alias.method()`). -
typeof(Any) -> String
Returns the type of the given value. -
str(Any) -> String
Converts the given value to a string. -
int(Any) -> Number
Converts the given value (number, bool, or string) to an integer. -
float(Any) -> Number
Converts the given value (number, bool, or string) to a float. -
bool(Any) -> Bool
Converts the given value to a boolean following pythonic truthiness rules. -
stringat(String, Number) -> String
Returns the character at the given index in the string. -
len(Str/Array) -> Number
Returns the length of the given string or array. -
ceil(Number) -> Number
Returns the smallest integer greater than or equal to the given number. -
floor(Number) -> Number
Returns the largest integer less than or equal to the given number. -
abs(Number) -> Number
Returns the absolute value of the given number. -
rand() -> Number
Returns a 32-bit unsigned integer (as Number). -
sort(Array)
Sorts an array of numbers in ascending order. If the array has non-numbers, it's an error. -
indexof(Array, Any) -> Number
Returns the index of the given value in the array. If the value is not found, returns the length of the array. -
clear() -> Nil
Clears the output. On CLI, emits ANSI escape codes to clear the terminal screen. On the web, clears the output box. -
sin(Number) -> Number
Returns the sine of the given value (in radians). -
sleep(Number)
Sleep for given milliseconds. -
cos(Number) -> Number
Returns the cosine of the given value (in radians). -
sqrt(Number) -> Number
Returns the square root of the given number. -
pow(Number, Number) -> Number
Returns the first argument raised to the power of the second argument. -
pi() -> Number
Returns the mathematical constant π (3.14159…).
Try a sample:
Output
Ready
Source Code | Inspired by The Crafting Interpreters Book | Terraria icon by Icons8