mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-15 23:04:08 +10:00
2.3 KiB
2.3 KiB
Preamble
The Toy programming language is a procedural bytecode-intermediate interpreted language. It isn't intended to operate on its own, but rather as part of another program, the "host". This process is intended to allow a decent amount of easy customisation by the host's end user, by exposing logic in script files. Alternatively, binary files in a custom format can be used as well.
The host will provide all of the extensions needed on a case-by-case basis. Script files have the .toy file extension, while binary files have the .tb file extension.
fn makeCounter() { //declare a function like this
var total: int = 0; //declare a variable with a type like this
fn counter(): int { //declare a return type like this
return ++total;
}
return counter; //closures are explicitly supported
}
var tally = makeCounter();
print tally(); //1
print tally(); //2
print tally(); //3
Nifty Features
- Simple C-like syntax
- Bytecode intermediate compilation
- Optional, but robust type system (including
opaquefor arbitrary data) - Functions and types are first-class citizens
- Import external libraries
- Fancy slice notation for strings, arrays and dictionaries
- Can re-direct output, error and assertion failure messages
- Open source under the zlib license
Getting Started
Deep Dive
Full C API
- [toy_ast_node.h]
- toy_common.h
- [toy_compiler.h]
- [toy_interpreter.h]
- [toy_lexer.h]
- [toy_literal_array.h]
- [toy_literal_dictionary.h]
- [toy_literal.h]
- [toy_memory.h]
- [toy_parser.h]
- [toy_refstring.h]
- [toy_scope.h]
