Size: a a a

Compiler Development

2021 April 03

M

MrSmith in Compiler Development
Да не за что, всякое бывает
источник

АП

Антон Пилипчук... in Compiler Development
MrSmith
Да не за что, всякое бывает
блин, а если мне нужно вернуться на один токен назад? откуда мне его взять? откуда мне знать где его начало хотя бы?

я чего то не догоняю
источник

K

Kir in Compiler Development
MrSmith
peek() next() как правило лексер не идексирует ничего
Апрель, 2021 год!

Все давно уже AST делают!
источник

KR

K R in Compiler Development
Alexander Tchitchigin
В общем-то, согласен по обоим пунктам, но мне кажется, это аргумент за то, чтобы работать в этом направлении, а не бросать как есть.
Да, надо, но это сложная инженерная задача, затрагивающая всю систему разработки целиком.

То есть, при настройке диалога человека и компилятора по оптимизации неизбежно затрагиваются:

VCS
Editor
Profiler
AOT Compiler

Скорее всего сюда добавятся Debugger, JIT.

Если это делать на mainstream языках, то придётся думать об эволюции окружающих программных систем. А этого, кмк, делают не только лишь все, мало кто это делает.

Соответственно, этот диалог нужно делать не на С/С++, а на "модельных" языках.
источник

АП

Антон Пилипчук... in Compiler Development
Kir
Апрель, 2021 год!

Все давно уже AST делают!
но для того чтобы сделать аст нужно токены считать
источник

K

Kir in Compiler Development
Антон Пилипчук
но для того чтобы сделать аст нужно токены считать
Ну так считайте
источник

K

Kir in Compiler Development
Если вам выкатят модуль на 1 млн строк - бейте по рукам, нельзя так в 21 веке программировать
источник

АП

Антон Пилипчук... in Compiler Development
не понимаю, если список токенов нигде не хранится, как мне узнать какой предыдущий токен
источник

K

Kir in Compiler Development
Антон Пилипчук
не понимаю, если список токенов нигде не хранится, как мне узнать какой предыдущий токен
Никак, храните список, не слушайте использующих peek()
источник

K

Kir in Compiler Development
А лучше массив
источник

АП

Антон Пилипчук... in Compiler Development
Kir
А лучше массив
я сейчас в массиве храню
источник

K

Kir in Compiler Development
Антон Пилипчук
я сейчас в массиве храню
А, кстати, после построения AST оно уже и не нужно будет
источник

АП

Антон Пилипчук... in Compiler Development
Kir
А, кстати, после построения AST оно уже и не нужно будет
ну да)
источник

K

Kir in Compiler Development
А если вы LR(1)-парсер используете, так у него бектрека нет вообще в принципе
источник

АП

Антон Пилипчук... in Compiler Development
Kir
А если вы LR(1)-парсер используете, так у него бектрека нет вообще в принципе
у меня помесь PEGа и рекурсивного спуска
источник

K

Kir in Compiler Development
Антон Пилипчук
у меня помесь PEGа и рекурсивного спуска
Рекомендую LR, с приоритетами правил
источник

АП

Антон Пилипчук... in Compiler Development
Kir
Рекомендую LR, с приоритетами правил
у меня вместо этого есть переключение между разными наборами лексических, грамматических и семантических правил.

любой токен может дать указание лексеру/парсеру сменить действующий набор правил
источник

АП

Антон Пилипчук... in Compiler Development
Антон Пилипчук
у меня вместо этого есть переключение между разными наборами лексических, грамматических и семантических правил.

любой токен может дать указание лексеру/парсеру сменить действующий набор правил
а эти наборы можно комбинировать подобно операциям над множествами
источник

ДК

Дмитрий К in Compiler Development
Kir
> new ...Lens

Как правило, эти два слова в одной строке кода означают, что нас ожидает жесть типа оптики в ramda. Не видел я ещё нормальных линз не на хаскелле
А что не так с рамдой?
источник

K

Kir in Compiler Development
Дмитрий К
А что не так с рамдой?
Ещё полностью передрали с хаскелля, но оптимизатор из хаскелля не передрали, и мне всё время кажется, что в рамде получилось медленно и overengineered. В хаскелле оно норм.
источник