Обновить
8K+
6

Пользователь

12
Рейтинг
1
Подписчики
Отправить сообщение

Спасибо за советы) Синонимы для оператора РАВНО я добавил в ЯП - действительно очень удобно. Осталось сделать для остальных, но механизм там универсальный я сделал, можно быстро добавить.

Касательно синонимов для переменных - да, наверное так лучше, но я наверное разделю их на две конструкции:

Было: ЗАДАТЬ человек (ОН ЖЕ человеку) = Человек()
Стало: ЗАДАТЬ человек = Человек()
человек ОН ЖЕ (
человеку
люди
)


Точку с запятой я очень зря как-то в начале добавил и теперь на неё многое завязано. Уже раза два пытался убрать её. Но, увы, пока не совладал со своим же кодом :))) Однако, когда-нибудь я точно её уберу

Как я рад получить комментарий с обратной связью) Это ценно!

Касательно псевдонимов для ключевых слов я очень много думал сделать это, но мне казалось, что это какая-то плохая идея. Не знаю почему) Но раз не только мне это в голову пришло, вполне себе можно доработать ЯП чтобы он воспринимал такого рода псевдонимы.

Псевдонимы для переменных - идея классная, но не уверен, что стоит её реализовывать. Но блин, зацепила меня она) Если делать, то я бы что-то типа такого сделал:


ЗАДАТЬ человек  = Человек();
СИНОНИМЫ ДЛЯ человек (
    человека;
    человеку;
    люди;
)




И последнее. Мне самому неприятно работать с такими цепочками вызовов “изменить_в_массиве(массив, индекс, значение)”, но дело в том, что FFI интеграция позволяет собирать для LawScript из Python только процедуры. Я думал о том, чтобы дать возможность писать на питоне классы для LawScript, но принял более простое решение, я просто делаю нативные классы на LawScript и в них прячу вызовы процедур на Python. Например, так я сделал класс "Список", чтобы обернуть массивы эти ужасные.

Вот укороченный пример, как я сделал такой класс:

ОПРЕДЕЛИТЬ КЛАСС Список (
    ОПРЕДЕЛИТЬ КОНСТРУКТОР (ссылка)(мас=массив()) (
        ссылка:_массив = мас;
    )

    ОПРЕДЕЛИТЬ МЕТОД (ссылка) удалить(индекс) (
        ВЕРНУТЬ удалить_из_массива(ссылка:_массив, индекс);
    )

    ОПРЕДЕЛИТЬ МЕТОД (ссылка) добавить(элемент) (
        ВЕРНУТЬ добавить_в_массив(ссылка:_массив, элемент);
    )


) 


Вот так им можно пользоваться:

ЗАДАТЬ список = Список();

список:добавить(1);
список:добавить(2);
список:добавить(3);

список:длина(); ! 3

список:в_массив(); ! Каст в страшный массив :)




Вот кстати на счет форматирования надо подумать, но тогда придется переписывать все тесты, а мне так не хочется это делать))) Но я прекрасно понимаю, что подход с % реально лучше звучит

Короче говоря, однозначно надо делать синонимы. Пока писал и для переменных тоже захотелось добавить их :)

По адскому синтаксису массивов - вроде бы решение это использовать класс "Список"

А вот про % надо думать, самому не удобно постоянно переключаться, но надо тестовые скрипты переписать :(

Информация

В рейтинге
653-й
Зарегистрирован
Активность