mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-15 14:54:07 +10:00
1dde9d8f29304cde61e02ff864b608aa94c750f7
The actual issue was that the type check wasn't catching the issue, so it reached the scope before it was caught. Fixed it, anyway.
Toy
This is the Toy programming language interpreter, written in C.
Special thanks to http://craftinginterpreters.com/ for their fantastic book that set me on this path.
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
Building
For Windows(mingw32 & cygwin), Linux and MacOS, simply run make in the root directory.
For Windows(MSVC), Visual Studio project files are included.
Note: MacOS and Windows(MSVC) are not officially supported, but we'll do our best!
Tools
Run make install-tools to install a number of tools, including:
- VSCode syntax highlighting
Syntax
import standard; //for a bunch of utility functions
print "Hello world"; //"print" is a keyword
var msg = "foobar"; //declare a variable like this
assert true, "This message won't be seen"; //assert is another keyword
//-------------------------
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
License
This source code is covered by the zlib license (see LICENSE.md).
Patrons via Patreon
- Seth A. Robinson
Description
The Toy Programming Language.
compilerembedded-scripting-languageinterpreterlanguageprogramming-languagescripting-languagetoytoy-programming-languagetoylang
Readme
Zlib
2.6 MiB
Languages
C
97.7%
Makefile
2.2%
