Implemented the attribute operator, using a period

This commit is contained in:
2026-04-24 11:31:54 +10:00
parent d2ac1eeb8e
commit 9a75226491
7 changed files with 94 additions and 1 deletions
+17
View File
@@ -431,6 +431,19 @@ static void processInvoke(Toy_VM* vm) {
}
}
static void processAttribute(Toy_VM* vm) {
//get the compound & attribute
Toy_Value attribute = Toy_popStack(&vm->stack);
Toy_Value value = Toy_popStack(&vm->stack);
//URGENT: type-based attributes
Toy_pushStack(&vm->stack, TOY_VALUE_FROM_NULL()); //tmp
//cleanup
Toy_freeValue(value);
Toy_freeValue(attribute);
}
static void processDuplicate(Toy_VM* vm) {
Toy_Value value = Toy_copyValue(&vm->memoryBucket, Toy_peekStack(&vm->stack));
Toy_pushStack(&vm->stack, value);
@@ -958,6 +971,10 @@ static unsigned int process(Toy_VM* vm) {
processInvoke(vm);
break;
case TOY_OPCODE_ATTRIBUTE:
processAttribute(vm);
break;
case TOY_OPCODE_DUPLICATE:
processDuplicate(vm);
break;