Anonymous 01/15/2021 (Fri) 15:36:54 No.8936 del
(48.62 KB 740x864 a.png)
(39.60 KB 507x524 b.png)
Добавил пару поддержек в компилер, в особенности перегрузку функций и посыл аргументов в перемешанном порядке. Но я особо не проверял и работоспособность очень частичная.
Знаете, перегрузка функций и темпелйты это такая фигня! Ведь когда мы хотим вызвать функцию в си-подобном языке, мы на самом деле вызываем адрес. А название функции это просто константная переменная, которая содержит адрес самой функции/процедуры. А когда мы хотим вызвать несуществующую функцию, то есть либо создать её динамически (темплейт) или найти её настоящее название используя мнимное + аргументы, это уже что-то совершенно иное.
Из-за этого часть кода Иколайси сейчас в хаосе.
Но перегрузка функций необходима, чтобы, например, работала функция print. Ведь она будет вызывать функцию repr, которая перегружена для некоторых переменных некоторых библиотек, если автор библиотеки захочет.

Пока с max и min из liblaisi не разобрался. Чтобы начать нормально парсить, мне надо перевести Иколайси с pyparsing на прототип библиотеки dapa на питоне. Он уже более-менее готов, некоторые правила работают, но я всё ещё раздумываю какая архитектура там должна быть. Просто моя библиотека парсинга будет немало отличаться от pyparsing.
Тогда я смогу парсить препроцессинг не императивно, а декларативно, а вместе с ним разобраться со всякими эллипсисами.

Ещё я немного порезал стандарт Лайси, чтобы побыстрее выпустить первую работоспособную версию Иколайси и не заниматься неважными фичами.
Но что самое страшное, мне придётся в первой же работспособной версии научиться исполнять Лайси-код во время компиляции. Ну типа 5 равно 5 или не равно. Это нужно для некоторых типов. Например, в библиотеке math будет тип vec!N!, а у него настроен @assert, что если N == 0 (размер равен нулю), то будет ошибка.



>>8669
Слышь, это для тебя компилятора нет, одна нога тут, другая там, сердце слоями валяется, а череп по швам распадается.