Михаил
ну тогда я погнал
Михаил
я чую это будет сложно потому что луажит изначально не поддерживает любые выражения типа
a + b;
вне присваивания
Михаил
да и сам луа тоже
Михаил
я это сделал (первую часть)
Михаил
Михаил
пока что не целиком фичу с операторами, но a + b уже можно писать
Михаил
[luar]
local foo = 78;
local bar = foo;
bar + foo + 78;
bar * foo;
bar < foo;
foo + 2 * bar;
bar == 2;
-- no errors
print(12) -- output: 12
Михаил
первым токеном не может быть число, ну и не надо
Михаил
теперь я могу не дублировать код для случаев вида
local a = foo **=^*= bar;
и для случаев вида (теперь исправленного)
foo **=^*= bar;
Михаил
**=^*= допустим наш кастомный оператор
Domka
О прикольна это можно будит сделать ++ наконец то
Domka
Инкременты и декременты
Domka
Я настолька глупый что решил для ясности картины визуализировать таблицы из Lua на листке бумаги в виде таблиц ирл
Domka
Чуть попозже кину если получится нормально симулировать на бумажке весь процесс
Domka
Ура ура
У меня получилось реализовать что я хотел сделать
Domka
Снова изобрел вилосипед, и сделал простой алгоритм поиска пути
Domka
Правда для него нужна карта, и заполнение клеток хоть где то чтобы заново их не сканировать
Domka
Сергей
Domka
Незнаю
Domka
Я это заливкой называю
Domka
Я просто как всегда велосипед изобретаю
Сергей
путь выглядит как дфсный
Сергей
ну, догадки
Сергей
может опять с ловкой поиграться.. Давно не тыкал
Anton
Ого, на смартфоне кодишь.
Сергей
Михаил
олимпиадное программирование :(
сидел со мной рядом чел на олимпиаде и решил подсчет делителей на питоне за 1 сек, а у меня 15 мин на луажите выполнялось, оказалось что он просто алгосы знает и вместо всего промежутка можно проверить все числа в промежутке до квадратного корня
Сергей
ну так да
Михаил
Сергей
можно ещё быстрее бтв
Михаил
??
Сергей
??
https://ru.wikipedia.org/wiki/%D0%A0%D0%BE-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9F%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%B4%D0%B0
Сергей
За корень четвертой степени
Сергей
корень корня
Сергей
це ваще жесть
Сергей
там на рандомах вроде всё основано
Михаил
не, лучше стабильность, знаю я вашиш эти рандомы и трассировку лучей
Сергей
Сергей
стабильность in question:
Сергей
я сегодня проснулся и увидел что у меня отказал бот, который год работал штатно
Сергей
вот просто взял и перестал работать
Сергей
на какую стабильность в этом мире вообще можно рассчитывать
Михаил
только сегодня узнал, что в луа самые мощные комментарии
Михаил
казалось бы, зачем --[[=====[[ghjgkhbgkjbgjjj]]=====]]
Сергей
Сергей
мультистроки я имею ввиду в которых переносы строк есть
Михаил
да, это же и есть мультистрока только которая выкидывается
Михаил
в общем теперь должны быть такие комменты
// ...
[/=...=[ text... ]/=...=]
Михаил
а строки неизменные
Михаил
Михаил
ооо я сделаю это как раз строками, а комментарии такими
[[//=...=[ ... ]//=...=]
Михаил
потому что такие структуры
[[...
могут пригодиться в качестве массивов
Михаил
их даже уже в сишарп добавили
Михаил
[1, 2, {"foo"}, "bar"]
Михаил
[[1, 2], 5, 9, 7]
Михаил
я хочу сделать удобный и красивый язык
Михаил
роль си весьма неплохо переводится на луашку: если что-то надо - сам пиши. Но написать можно не всё
Михаил
я хочу, по крайней мере, дать возможность дописать гораздо больше
Михаил
по фичам оно-то вряд ли переплюнет луа, рантайм тот же (а это значит, что на классическом луа можно будет писать операторы для LUAR), и лезть в VM пока не хочется, но переделывать парсер можно до и после того момента, когда вместо простых ветвлений в коде придется выделить его в отдельный lj_parser2.c
Михаил
а теперь еще и лексер
Михаил
еще думаю убрать взаимодействие с глобальными переменными без явного указания global
Михаил
инициализация, присванвание - пофиг, если указано foo = 12 и ее нету в локальных, то получи ошибку
Михаил
но брать в качестве Rvalue будет можно
Михаил
и еще одна фича - собираюсь переименовать local в var, а уже локальными сделать такие переменные, как в с/с++ (не си шарп), которые будут деструктурироваться при выходе из области видимости
Михаил
метаметодом кароч, __del или что-то вроде того, который будет вызываться в конце тела функции или другой штуки
Михаил
или local оставить, а эти переменные назвать object. думаю так будет лучше
Михаил
если что предлагайте, я не просто так пишу для себя
Михаил
и узнал вчера про Infix операторы в питоне, уже после того как додумался до подобного в луа, только в пихтоне для их вызова нужно сделать
myoper = Infix(...)
a |myoper| b
или
a <<myoper>> b
Михаил
а я думаю можно без никаких скобочек обойтись и будет гораздо удобнее
Михаил
очевидно что конструкция вида
foo something bar
раньше никакого смысла в луа не имела
Михаил
ну или expr().getval[index] something other[12]
Михаил
function something(left, right)
return left * right
end
чем не кайф
Михаил
но это еще предел мечтаний и наверно придется много повоевать с этим парсером, может через месяц сделаю то что щас написал
Snusmumriken
Я это делал на 2 курсе универа, когда только сел за ловку. Было куском курсовой ))
Но заливка очень много жрёт памяти.
OzMan
Snusmumriken
Ну да, производится заливка с увеличением/уменьшением значения на каждый шаг