Updated docs
This commit is contained in:
+20
-3
@@ -101,18 +101,35 @@ while (true) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
*Note: The `for` loop is underway, and will allow for iteration over an arrays, tables, and maybe functions.*
|
Alternatively, when iterating over an array or table, you can use the `for` keyword like this. While inside a for-loop, the iterable is inaccessible to prevent run-time modification (it's an ad-hoc bugfix, and will likely be improved later).
|
||||||
|
|
||||||
```
|
```
|
||||||
//arrays do currently work with for-loops
|
//Iterate on an array with a for-loop
|
||||||
var array = ["foo", "bar", "buzz", "fizz"];
|
var array = ["foo", "bar", "buzz", "fizz"];
|
||||||
|
|
||||||
for (var i in array) {
|
for (var i in array) {
|
||||||
if (i == "buzz") break; //supports break or continue
|
if (i == "buzz") break; //supports break and continue
|
||||||
print i;
|
print i;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
//Also works when printing the values in a table
|
||||||
|
//However, the order of the values is undefined
|
||||||
|
var table = [
|
||||||
|
"Alpha": 1,
|
||||||
|
"Bravo": 2,
|
||||||
|
"Charlie": 3,
|
||||||
|
"Delta": 4,
|
||||||
|
"Echo": 5,
|
||||||
|
];
|
||||||
|
|
||||||
|
for (var i in table) {
|
||||||
|
print i; //this will print a number
|
||||||
|
print table; //this will print null
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Arrays and Tables
|
## Arrays and Tables
|
||||||
|
|
||||||
Arrays are defined with a pair of brackets, and can contain a list of comma-separated values.
|
Arrays are defined with a pair of brackets, and can contain a list of comma-separated values.
|
||||||
|
|||||||
@@ -763,6 +763,7 @@ static unsigned int writeInstructionForThen(Toy_Bytecode** mb, Toy_AstForThen as
|
|||||||
|
|
||||||
emitString(mb, ast.condBranch->iterable.left->varDeclare.name);
|
emitString(mb, ast.condBranch->iterable.left->varDeclare.name);
|
||||||
|
|
||||||
|
//TODO: use a different approach
|
||||||
//BUGFIX: shadow the iterable's name
|
//BUGFIX: shadow the iterable's name
|
||||||
EMIT_BYTE(mb, code, TOY_OPCODE_READ);
|
EMIT_BYTE(mb, code, TOY_OPCODE_READ);
|
||||||
EMIT_BYTE(mb, code, TOY_VALUE_NULL);
|
EMIT_BYTE(mb, code, TOY_VALUE_NULL);
|
||||||
|
|||||||
+1
-1
@@ -482,7 +482,6 @@ static void processEliminate(Toy_VM* vm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void processIterate(Toy_VM* vm) {
|
static void processIterate(Toy_VM* vm) {
|
||||||
//URGENT: finish this
|
|
||||||
//ITERATE on [-2] based on type, with [-1] as counter
|
//ITERATE on [-2] based on type, with [-1] as counter
|
||||||
//then delegate to processJump
|
//then delegate to processJump
|
||||||
|
|
||||||
@@ -545,6 +544,7 @@ static void processIterate(Toy_VM* vm) {
|
|||||||
processJump(vm);
|
processJump(vm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//TODO: support closures as a parameter
|
||||||
else {
|
else {
|
||||||
fprintf(stderr, TOY_CC_ERROR "ERROR: Unknown iterable type '%s' found in for loop, exiting\n" TOY_CC_RESET, Toy_getValueTypeAsCString(Toy_unwrapValue(compound).type));
|
fprintf(stderr, TOY_CC_ERROR "ERROR: Unknown iterable type '%s' found in for loop, exiting\n" TOY_CC_RESET, Toy_getValueTypeAsCString(Toy_unwrapValue(compound).type));
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
|||||||
Reference in New Issue
Block a user