15 lines
462 B
C
15 lines
462 B
C
|
|
case OP_SLICE: {
|
||
|
|
Value end = pop_value(vm);
|
||
|
|
Value start = pop_value(vm);
|
||
|
|
Value arr = pop_value(vm);
|
||
|
|
if (arr.type != VAL_ARRAY || start.type != VAL_INT || end.type != VAL_INT) {
|
||
|
|
fprintf(stderr, "Runtime type error: SLICE expects (array, int, int)\n");
|
||
|
|
exit(1);
|
||
|
|
}
|
||
|
|
Value out = array_slice(&arr, (int)start.i, (int)end.i);
|
||
|
|
free_value(arr);
|
||
|
|
free_value(start);
|
||
|
|
free_value(end);
|
||
|
|
push_value(vm, out);
|
||
|
|
break;
|
||
|
|
}
|