Flower — строго типизированный язык процедурного программирования. Языком поддерживается многопоточность, указатели заменены на концепт "общей" (или "разделяемой") переменной, есть 4 простых типа и один составной. Продвинутая работа со структурами: над ними можно проводить арифметические операции.
В репозитории ведётся разработка:
-
Оптимизирующего байт-код компилятора (flc),
-
Виртуальной стековой машины (flvm),
-
Отладчика виртуальной машины (fldbg).
- Скомпилировать написанную программу
source.fl
:
./flc source.fl
- Запустить бинарный файл на виртуальной машине:
./flvm out.bin
- В случае ошибок или иных проблем отладить:
./fldbg out.bin
- Если вносятся изменения в код проекта, все изменения можно автоматически протестировать с помощью команды:
./fltest [-O] [-m] [-r] ./test/A-unit/*.fl ./test/B-unit/*.fl
Скоро будет доступна в разделе wiki, планируется работа с doxygen.
def factorial(int n): int {
if (n > 1)
return factorial(n - 1) * n;
else
return 1;
}
program {
int a;
read(a);
write(factorial(a));
}
def iterate(shared int a): shared int {
for (int i = 1; i <= 5; i = i + 1) {
/* write("Итерация #", i, ": a = ", a); */
a = a / 2;
}
return a;
}
program {
shared int x, y;
read(x);
read(y);
thread:1 { x = iterate(x); }
thread:2 { y = iterate(y); }
fork(1, 2);
lock();
write(x, " ", y);
}
Множество других примеров Вы можете найти в папке 'test'.