From 4282268f3d93e13ebcff167fc4743675bba12da3 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sun, 12 Jan 2025 11:16:46 +1100 Subject: [PATCH] Tweaked tabs-vs-spaces --- _includes/head-custom.html | 5 ++++ c-api/drive_system_h.md | 18 ++++++------- c-api/toy_interpreter_h.md | 8 +++--- deep-dive/building-toy.md | 6 ++--- deep-dive/developing-toy.md | 38 ++++++++++++++-------------- deep-dive/embedding-toy.md | 26 +++++++++---------- game-engine/game-engine.md | 20 +++++++-------- getting-started/quick-start-guide.md | 14 +++++----- getting-started/standard-library.md | 8 +++--- getting-started/types.md | 16 ++++++------ 10 files changed, 82 insertions(+), 77 deletions(-) diff --git a/_includes/head-custom.html b/_includes/head-custom.html index 8f30cdf..5d24790 100644 --- a/_includes/head-custom.html +++ b/_includes/head-custom.html @@ -25,3 +25,8 @@ gtag('config', 'G-57STKDE8LE'); + + + \ No newline at end of file diff --git a/c-api/drive_system_h.md b/c-api/drive_system_h.md index 70cf511..6542fff 100644 --- a/c-api/drive_system_h.md +++ b/c-api/drive_system_h.md @@ -10,19 +10,19 @@ To use the drive system, first you must designate specific folders which can be #include "drive_system.h" int main(int argc, char* argv[]) { - //the drive system uses a LiteralDictionary, which must be initialized with this - Toy_initDriveSystem(); + //the drive system uses a LiteralDictionary, which must be initialized with this + Toy_initDriveSystem(); - Toy_setDrivePath("scripts", "assets/scripts"); - Toy_setDrivePath("sprites", "assets/sprites"); - Toy_setDrivePath("fonts", "assets/fonts"); + Toy_setDrivePath("scripts", "assets/scripts"); + Toy_setDrivePath("sprites", "assets/sprites"); + Toy_setDrivePath("fonts", "assets/fonts"); - //TODO: do you stuff here + //TODO: do you stuff here - //clean up the drive dictionary when you're done - Toy_freeDriveSystem(); + //clean up the drive dictionary when you're done + Toy_freeDriveSystem(); - return 0; + return 0; } ``` diff --git a/c-api/toy_interpreter_h.md b/c-api/toy_interpreter_h.md index f48ab85..feb27bd 100644 --- a/c-api/toy_interpreter_h.md +++ b/c-api/toy_interpreter_h.md @@ -91,7 +91,7 @@ Sometimes, native functions will receive `Toy_Literal` identifiers instead of th ```c Toy_Literal foobarIdn = foobar; if (TOY_IS_IDENTIFIER(foobar) && Toy_parseIdentifierToValue(interpreter, &foobar)) { - freeLiteral(foobarIdn); //remember to free the identifier + freeLiteral(foobarIdn); //remember to free the identifier } ``` @@ -101,7 +101,7 @@ This function sets the function called by the `print` keyword. By default, the f ```c static void printWrapper(const char* output) { - printf("%s\n", output); + printf("%s\n", output); } ``` @@ -113,7 +113,7 @@ This function sets the function called by the `assert` keyword on failure. By de ```c static void assertWrapper(const char* output) { - fprintf(stderr, "Assertion failure: %s\n", output); + fprintf(stderr, "Assertion failure: %s\n", output); } ``` @@ -123,6 +123,6 @@ This function sets the function called when an error occurs within the interpret ```c static void errorWrapper(const char* output) { - fprintf(stderr, "%s", output); //no newline + fprintf(stderr, "%s", output); //no newline } ``` diff --git a/deep-dive/building-toy.md b/deep-dive/building-toy.md index 9abea75..b1d96d2 100644 --- a/deep-dive/building-toy.md +++ b/deep-dive/building-toy.md @@ -15,17 +15,17 @@ Next, you'll want to run make the from within Toy's `source`, assuming the outpu ```make toy: $(OUTDIR) - $(MAKE) -C Toy/source + $(MAKE) -C Toy/source $(OUTDIR): - mkdir $(OUTDIR) + mkdir $(OUTDIR) ``` Finally, link against the outputted library, with the source directory as the location of the header files. ```make all: $(OBJ) toy - $(CC) $(CFLAGS) -o $(OUT) $(OBJ) -L$(TOY_OUTDIR) -ltoy + $(CC) $(CFLAGS) -o $(OUT) $(OBJ) -L$(TOY_OUTDIR) -ltoy ``` These snippets of makefile are only an example - the repository has a more fully featured set of makefiles which can also produce a usable REPL program. diff --git a/deep-dive/developing-toy.md b/deep-dive/developing-toy.md index 73b68c3..57f57c5 100644 --- a/deep-dive/developing-toy.md +++ b/deep-dive/developing-toy.md @@ -237,34 +237,34 @@ Opcodes within the bytecode are 1 byte in length, and specify a single action to The interpreter is stack-based; most, if not all, the actions are preformed on literals within a specially designated array called `stack`. For example: ```c - case TOY_OP_PRINT: - if (!execPrint(interpreter)) { - return; - } - break; + case TOY_OP_PRINT: + if (!execPrint(interpreter)) { + return; + } + break; ``` When the opcode `TOY_OP_PRINT` is encountered, the top literal within the stack is popped off, and printed (more info on literals below). ```c static bool execPrint(Toy_Interpreter* interpreter) { - //get the top literal - Toy_Literal lit = Toy_popLiteralArray(&interpreter->stack); + //get the top literal + Toy_Literal lit = Toy_popLiteralArray(&interpreter->stack); - //if the top literal is an identifier, get it's value - Toy_Literal idn = lit; - if (TOY_IS_IDENTIFIER(lit) && Toy_parseIdentifierToValue(interpreter, &lit)) { - Toy_freeLiteral(idn); - } + //if the top literal is an identifier, get it's value + Toy_Literal idn = lit; + if (TOY_IS_IDENTIFIER(lit) && Toy_parseIdentifierToValue(interpreter, &lit)) { + Toy_freeLiteral(idn); + } - //print as a string to the current print method - Toy_printLiteralCustom(lit, interpreter->printOutput); + //print as a string to the current print method + Toy_printLiteralCustom(lit, interpreter->printOutput); - //free the literal - Toy_freeLiteral(lit); + //free the literal + Toy_freeLiteral(lit); - //continue the loop - return true; + //continue the loop + return true; } ``` @@ -275,7 +275,7 @@ As in most programming languages, variables can be represented by names specifie ```c Toy_Literal idn = literal; //cache the literal, just in case it's an identifier if (TOY_IS_IDENTIFIER(literal) && Toy_parseIdentifierToValue(interpreter, &literal)) { //if it is an identifier, parse it... - Toy_freeLiteral(idn); //always remember to free the original identifier, otherwise you'll have a memory leak! + Toy_freeLiteral(idn); //always remember to free the original identifier, otherwise you'll have a memory leak! } ``` diff --git a/deep-dive/embedding-toy.md b/deep-dive/embedding-toy.md index 96d1605..5a7abba 100644 --- a/deep-dive/embedding-toy.md +++ b/deep-dive/embedding-toy.md @@ -62,23 +62,23 @@ Hooks can simply inject native functions into the current scope, or they can do ```c //a utility structure for storing the native C functions typedef struct Natives { - char* name; - Toy_NativeFn fn; + char* name; + Toy_NativeFn fn; } Natives; int Toy_hookStandard(Toy_Interpreter* interpreter, Toy_Literal identifier, Toy_Literal alias) { - //the list of available native C functions that can be called from Toy - Natives natives[] = { - {"clock", nativeClock}, - {NULL, NULL} - }; + //the list of available native C functions that can be called from Toy + Natives natives[] = { + {"clock", nativeClock}, + {NULL, NULL} + }; - //inject each native C functions into the current scope - for (int i = 0; natives[i].name; i++) { - Toy_injectNativeFn(interpreter, natives[i].name, natives[i].fn); - } + //inject each native C functions into the current scope + for (int i = 0; natives[i].name; i++) { + Toy_injectNativeFn(interpreter, natives[i].name, natives[i].fn); + } - return 0; + return 0; } ``` @@ -88,7 +88,7 @@ In some situations, you may find it convenient to call a function written in Toy ```c TOY_API bool Toy_callLiteralFn(Toy_Interpreter* interpreter, Toy_Literal func, Toy_LiteralArray* arguments, Toy_LiteralArray* returns); -TOY_API bool Toy_callFn (Toy_Interpreter* interpreter, char* name, Toy_LiteralArray* arguments, Toy_LiteralArray* returns); +TOY_API bool Toy_callFn (Toy_Interpreter* interpreter, char* name, Toy_LiteralArray* arguments, Toy_LiteralArray* returns); ``` The first argument must be an interpreter. The third argument is a pointer to a `Toy_LiteralArray` containing a list of arguments to pass to the function, and the fourth is a pointer to a `Toy_LiteralArray` where the return values can be stored (an array is used here for a potential future feature). The contents of the argument array are consumed and left in an indeterminate state (but is safe to free), while the returns array always has one value - if the function did not return a value, then it contains a `null` literal. diff --git a/game-engine/game-engine.md b/game-engine/game-engine.md index 963a375..f291f18 100644 --- a/game-engine/game-engine.md +++ b/game-engine/game-engine.md @@ -21,19 +21,19 @@ The engine proper is invoked with just three lifecycle functions`: #include "box_engine.h" int main(int argc, char* argv[]) { - //initialize the drive system - Toy_initDriveSystem(); - Toy_setDrivePath("scripts", "assets/scripts"); + //initialize the drive system + Toy_initDriveSystem(); + Toy_setDrivePath("scripts", "assets/scripts"); - //invoke the engine - Box_initEngine("scripts:/init.toy"); //passing in the specified init file - Box_execEngine(); - Box_freeEngine(); + //invoke the engine + Box_initEngine("scripts:/init.toy"); //passing in the specified init file + Box_execEngine(); + Box_freeEngine(); - //clean up the drive system when you're done - Toy_freeDriveSystem(); + //clean up the drive system when you're done + Toy_freeDriveSystem(); - return 0; + return 0; } ``` diff --git a/getting-started/quick-start-guide.md b/getting-started/quick-start-guide.md index 9de73ab..2b8fab9 100644 --- a/getting-started/quick-start-guide.md +++ b/getting-started/quick-start-guide.md @@ -46,19 +46,19 @@ You can control the program flow with either `if`, `while` or `for`. The only fa ``` if (check()) { - //do this + //do this } else { - //otherwise do this + //otherwise do this } var i = 0; while (i < 10) { - print i++; + print i++; } for (var i = 0; i < 10; i++) { - print i; + print i; } ``` @@ -70,7 +70,7 @@ Functions are defined with the `fn` keyword, and can take any number of argument ``` fn combine(a, b, c) { - return [a, b, c]; + return [a, b, c]; } print combine(1, 2, 3); @@ -80,7 +80,7 @@ Variable number of parameters, called rest parameters, can be passed in as an ar ``` fn combine(...rest) { - return rest; + return rest; } print combine(1, 2, 3); @@ -92,7 +92,7 @@ Functions can be called using the universal function call syntax, which is just ``` fn printMe(self) { - print self; + print self; } array.printMe(); diff --git a/getting-started/standard-library.md b/getting-started/standard-library.md index b4e64c6..fe40d26 100644 --- a/getting-started/standard-library.md +++ b/getting-started/standard-library.md @@ -104,7 +104,7 @@ This function takes either an array or a dictionary as the `self` argument and a import standard; fn p(i, x) { - print x; + print x; } var a = [1, 3, 5]; @@ -136,7 +136,7 @@ This function takes either an array or a dictionary as the `self` argument, and import standard; fn increment(k, v) { - return v + 1; + return v + 1; } var a = [1, 2, 3]; @@ -152,7 +152,7 @@ This function takes either an array or a dictionary as the `self` argument, a de import standard; fn f(acc, k, v) { - return acc + v; + return acc + v; } var a = [1, 2, 3, 4]; @@ -172,7 +172,7 @@ This function takes an array as the `self` argument, and a comparison function a import standard; fn less(a, b) { - return a < b; + return a < b; } var a = [4, 1, 3, 2]; diff --git a/getting-started/types.md b/getting-started/types.md index a97f00c..45145a3 100644 --- a/getting-started/types.md +++ b/getting-started/types.md @@ -46,8 +46,8 @@ var entry: type = astype [string: [string]]; //define a phonebook which follows the above signature var phonebook: entry = [ - "Lucy": ["1234", "Cabbage Ln"], - "Bob": ["5678", "Candy Rd"] + "Lucy": ["1234", "Cabbage Ln"], + "Bob": ["5678", "Candy Rd"] ]; ``` @@ -82,12 +82,12 @@ Types are first-class citizens. What this means is that they can be used just li ``` fn decide(question) { - if (question) { - return int; - } - else { - return float; - } + if (question) { + return int; + } + else { + return float; + } } var t = decide(true);