python compilate.py fib
- переводит код в бинарник fib.bin
python exec.py fib.bin n
- выполняет программу. Рекурсивно находит n-ое число Фибоначчи
Максимальное n
= 13, так как пока-что поддерживается только int8
. Может быть потом доработаю
Программа состоит из функций. Функции объявляются с помощью :functionName
на отдельной строке (больше на этой строке ничего не должно быть).
Главной функцией (которая будет вызвана при старте программы) явяется та, чье имя совпадает с названием файла программы. Либо если такой нет, главной назначается первая функция.
У каждйо строки в функции есть "собственный стек значений", который я буду называть просто строкой. (Новая строка удаляет стек предыдущей)
Поддерживаемые команды:
x
- добавляет в конец строки числоx
+, -, <, >, =__
- операторы. Оператор берет два последних числа в строке, выполняет над ними соответсвующую операцию, результат записывает в конец строки.func
- выполняет функциюfunc
, записывает результат в стек. Значения стека строки передается функции как аргументы;
выходит из функции возвращая последнее значение из строки в которой был вызван. В главной фунции завершает программу.x
- добавляет в стек аргумент функци под номеромx
. Номер считатся в обратном порядке от функции. Пусть напрмиер есть строка10 20 func
. Внутриfunc
20 доступно по.0
, а 10 по.1
.a b ^
- если первоеa != 0
, то пропускаетb
следующих строк (a, b
- последние значения в стеке)( ... )
- скобки создают подстроку из которой возвращают последнее число