Сделать поддержку for не так уж и просто. У меня это: for a in iterable { }; как в питоне, только a является по сути каждым элементом iterable, то есть значение iterable изменится, в отличие от питона. Чтобы реализовать фор, надо потрудиться с адресами, у, ужас. Добавить новые значения в структуру с локальными переменными, мол приравнивание надо делать по указателю. Получится, если %a := address iterable[index], то когда a := n, надо %a-> := %n, как-то так. Думаю синтаксис *%a := %n лучшу, похоже на сишный. А адреса будут расчитываться в каждой отдельной инструкции. То есть, если есть a->->-> (то куда ссылается куда ссылается куда ссылается a) станет %0 := *%a; %1 := *%0; %2 := *%1 У меня переменные байткода не как в LLVM. В LLVM там адреса и к ним приравниваются значения, а чтение через инструкцию load, а у меня чтение и присваивание происходит с одними и теми же переменными. Но я реализовал lenof и индексацию: u8 @0 'a' := 0x21 func(u8,[u32 %0,f32e8 %1]) @1 'main' := { .0: %2 := alloca u8[6]; %3 := lenof %2; %2[0x2] := %3; %4 := @0 + 0x39; return %4; } Я видел одного анона, который жаловался, что в питоне for не как в си и считал это идиотизмом. Дурак, для него же как лучше сделали! Вот в момё ЯП у циклов есть postins, это то, что выполняется после каждой итерации, в т. ч. и continue. Благодаря этому сишный for (int i := 0; i < n; i++) {ins} у меня будет s32 i := 0; while (i < n): i++ {ins};