185 похожих чатов

Здесь упомянули про популярные заблуждения, я вот признаюсь тоже хоть

и знал про жадность лексера, но реально думал, что, ну это просто такая штука, которая откусывает цепочки символов и превращает их в токены, чтобы парсеру проще было. Связывал с тем фактом, что в 70е или когда эта теория и, главное, реальные компиляторы на ее основе активно разрабатывались памяти было мало и оперировать токенами (тройками "начало", "конец" или "длина" и "тип") требует гораздо меньшего объема памяти чем каждым символом. О таком потрясающем влиянии жадности на теоретические аспекты CFG/не-CFG как-то не задумывался. Интересно, это наблюдение про "чудо" превращения не-CFG грамматики в CFG под влиянием лексера сделано самостоятельно или что-то можно почитать?

1 ответов

23 просмотра

IMNSHO — это совершенно очевидный вывод (и следствия из него широко используются на практике, как раз когда "обычные" parser generators (или parsers), использующие "слабые" методы разбора (вроде LR(1) или даже LL(1)), применяются для parsing ЯП, которые, будучи определёнными "на уровне символов", нередко являются контекстно-зависимыми (а то относятся к unrestricted grammars, как, кажется, perl). См. сообщение выше. ;)

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта