Спасибо за советы) Синонимы для оператора РАВНО я добавил в ЯП - действительно очень удобно. Осталось сделать для остальных, но механизм там универсальный я сделал, можно быстро добавить.
Касательно синонимов для переменных - да, наверное так лучше, но я наверное разделю их на две конструкции:
Было: ЗАДАТЬ человек (ОН ЖЕ человеку) = Человек() Стало: ЗАДАТЬ человек = Человек() человек ОН ЖЕ ( человеку люди )
Точку с запятой я очень зря как-то в начале добавил и теперь на неё многое завязано. Уже раза два пытался убрать её. Но, увы, пока не совладал со своим же кодом :))) Однако, когда-нибудь я точно её уберу
Как я рад получить комментарий с обратной связью) Это ценно!
Касательно псевдонимов для ключевых слов я очень много думал сделать это, но мне казалось, что это какая-то плохая идея. Не знаю почему) Но раз не только мне это в голову пришло, вполне себе можно доработать ЯП чтобы он воспринимал такого рода псевдонимы.
Псевдонимы для переменных - идея классная, но не уверен, что стоит её реализовывать. Но блин, зацепила меня она) Если делать, то я бы что-то типа такого сделал:
ЗАДАТЬ человек = Человек();
СИНОНИМЫ ДЛЯ человек (
человека;
человеку;
люди;
)
И последнее. Мне самому неприятно работать с такими цепочками вызовов “изменить_в_массиве(массив, индекс, значение)”, но дело в том, что FFI интеграция позволяет собирать для LawScript из Python только процедуры. Я думал о том, чтобы дать возможность писать на питоне классы для LawScript, но принял более простое решение, я просто делаю нативные классы на LawScript и в них прячу вызовы процедур на Python. Например, так я сделал класс "Список", чтобы обернуть массивы эти ужасные.
Вот укороченный пример, как я сделал такой класс:
ОПРЕДЕЛИТЬ КЛАСС Список (
ОПРЕДЕЛИТЬ КОНСТРУКТОР (ссылка)(мас=массив()) (
ссылка:_массив = мас;
)
ОПРЕДЕЛИТЬ МЕТОД (ссылка) удалить(индекс) (
ВЕРНУТЬ удалить_из_массива(ссылка:_массив, индекс);
)
ОПРЕДЕЛИТЬ МЕТОД (ссылка) добавить(элемент) (
ВЕРНУТЬ добавить_в_массив(ссылка:_массив, элемент);
)
)
Вот так им можно пользоваться:
ЗАДАТЬ список = Список();
список:добавить(1);
список:добавить(2);
список:добавить(3);
список:длина(); ! 3
список:в_массив(); ! Каст в страшный массив :)
Вот кстати на счет форматирования надо подумать, но тогда придется переписывать все тесты, а мне так не хочется это делать))) Но я прекрасно понимаю, что подход с % реально лучше звучит
Короче говоря, однозначно надо делать синонимы. Пока писал и для переменных тоже захотелось добавить их :)
По адскому синтаксису массивов - вроде бы решение это использовать класс "Список"
А вот про % надо думать, самому не удобно постоянно переключаться, но надо тестовые скрипты переписать :(
Спасибо за советы) Синонимы для оператора РАВНО я добавил в ЯП - действительно очень удобно. Осталось сделать для остальных, но механизм там универсальный я сделал, можно быстро добавить.
Касательно синонимов для переменных - да, наверное так лучше, но я наверное разделю их на две конструкции:
Было: ЗАДАТЬ человек (ОН ЖЕ человеку) = Человек()
Стало: ЗАДАТЬ человек = Человек()
человек ОН ЖЕ (
человеку
люди
)
Точку с запятой я очень зря как-то в начале добавил и теперь на неё многое завязано. Уже раза два пытался убрать её. Но, увы, пока не совладал со своим же кодом :))) Однако, когда-нибудь я точно её уберу
Как я рад получить комментарий с обратной связью) Это ценно!
Касательно псевдонимов для ключевых слов я очень много думал сделать это, но мне казалось, что это какая-то плохая идея. Не знаю почему) Но раз не только мне это в голову пришло, вполне себе можно доработать ЯП чтобы он воспринимал такого рода псевдонимы.
Псевдонимы для переменных - идея классная, но не уверен, что стоит её реализовывать. Но блин, зацепила меня она) Если делать, то я бы что-то типа такого сделал:
И последнее. Мне самому неприятно работать с такими цепочками вызовов “изменить_в_массиве(массив, индекс, значение)”, но дело в том, что FFI интеграция позволяет собирать для LawScript из Python только процедуры. Я думал о том, чтобы дать возможность писать на питоне классы для LawScript, но принял более простое решение, я просто делаю нативные классы на LawScript и в них прячу вызовы процедур на Python. Например, так я сделал класс "Список", чтобы обернуть массивы эти ужасные.
Вот укороченный пример, как я сделал такой класс:
Вот так им можно пользоваться:
Вот кстати на счет форматирования надо подумать, но тогда придется переписывать все тесты, а мне так не хочется это делать))) Но я прекрасно понимаю, что подход с % реально лучше звучит
Короче говоря, однозначно надо делать синонимы. Пока писал и для переменных тоже захотелось добавить их :)
По адскому синтаксису массивов - вроде бы решение это использовать класс "Список"
А вот про % надо думать, самому не удобно постоянно переключаться, но надо тестовые скрипты переписать :(