Size: a a a

Compiler Development

2021 April 04

M

MrSmith in Compiler Development
Kir
Апрель, 2021 год!

Все давно уже AST делают!
Новички же приходят
источник

K

Kir in Compiler Development
MrSmith
Новички же приходят
Вооот, а ты им какие-то C API пытаешься впарить
источник

M

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

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

VCS
Editor
Profiler
AOT Compiler

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

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

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

M

MrSmith in Compiler Development
Kir
Вооот, а ты им какие-то C API пытаешься впарить
Где?
источник

M

MrSmith in Compiler Development
Ничего я не впаривал
источник

K

Kir in Compiler Development
Когда советовал хранить результаты peek()
источник

M

MrSmith in Compiler Development
Это не про хранение, это для лукапа на 1 символ
источник

M

MrSmith in Compiler Development
Я наоборот сказал, зачем результат лексера хранить вот next() вот peek(), берём LR(1)
источник

M

MrSmith in Compiler Development
Поехали
источник

K

Kir in Compiler Development
Аааааа
источник

K

Kir in Compiler Development
Тогда сорян
источник

M

MrSmith in Compiler Development
Нет, ну я не знаю у меня так ехало, бектрейс сдвигом курсора
источник

M

MrSmith in Compiler Development
Зачем хранить в массиве лексемы я хз
источник

M

MrSmith in Compiler Development
Разве что он упорный и делает что то вроде owl
источник

M

MrSmith in Compiler Development
Антон Пилипчук
ну да)
Для отката обычно делают так, делаешь у парсера поле в которое сохраняешь позицию файла, потом если неверно пошло, устанавливаешь позицию лексера в него и идёшь по другой ветке
источник

M

MrSmith in Compiler Development
Видимо ты пытаешься буферизировать лексер
источник

M

MrSmith in Compiler Development
Покрайне мере хочешь, но для этого размер буфера должен быть не больше длинны самой длинной ambiguous в языке
источник

M

MrSmith in Compiler Development
Мой тебе совет, сделай сначало просто, отладь, а потом делай не просто. Ну или возьми кофе бумажку и порисуй не много.
источник

а

а это кто in Compiler Development
smthidk
у меня такой довольно нубский вопрос:
есть тестовое задание, в нем нужно ручками написать парсер языка по заданной грамматике
грамматика эта леворекурсивная, поэтому не хочется выдумывать костыли и писать для нее рекурсивный спуск, но при этом писать LR - еще хуже
скажите по своему опыту (возможно, по опыту проверки тестовых заданий): будет ли ок, если я видоизменю изначальную грамматику так, чтобы в ней не было левой рекурсии? или корректнее работать с тем, что дали изначально?
shift-reduce парсер легко обрабатывает леворекурсивные грамматики
источник

s

smthidk in Compiler Development
а это кто
shift-reduce парсер легко обрабатывает леворекурсивные грамматики
там разве не нужно точно так же руками строить таблицу?
источник