Снова всем привет. В прошлом посту я писал о том что пишу компилятор C (на Python).
Вчера я добавил функции, вот пример программы вычисления факториала с функциями:
void fac(n) { int f = 1; while (n > 1) { f = f * n; n = n - 1; } } void main() { fac(5); }
Что можно заметить нового и чего нету:
Функция main стала обязательной
Не обрабатывается тип данных у аргументов (не везде)
Все переменные и параметры - глобальные
Оператора return не существует
Функции объявляются только с помощью void
Вот как компилятор создаёт функции:
Добавляет в словарь self.funcs данные о функции
Когда видит вызов функции то компилирует код функции но перед компиляцией создаёт переменные со значениями аргументов
Получается мы не заставляем виртуальную машину работать с функциями ВООБЩЕ.
Но и в этом есть свой минус: return сделать будет невозможно.
Самым сложным это сделать нормальный парсер для этого чуда.
Из-за этого я испортил код парсера. Главное работает 😅.
Всем пока.
