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

Гайс, если я правильно понимаю, ленивый режим сопоставления реализовывается на

основе lookahead (в основном). Т.е. текущий шаблон(шаблон1) жрет строку, пока текущий символ не удовлетворит следующий шаблон(шаблон2).

Получается, что когда шаблон1 будет сопоставлен, мы можем быть уверены, что шаблон2 тоже сапоставлен и повторно его проверять не нужно, достаточно "сдвинуть строку".


Правильно ли понимаю это и используется ли подобный подход?

23 ответов

18 просмотров

Кажется, в PEG такое есть

Это какой из комбинаторов-то?

И не строку, а инпут, в приличных домах токенайзеры ставят перед парсером

Роман-Соловьев Автор вопроса

Что ты имеешь в виду? Такие штуки я так понимаю это частная реализация. Но хочу понять делают ли вообще так и какие подводные камни

Роман Соловьев
Что ты имеешь в виду? Такие штуки я так понимаю эт...

Тогда давай подробнее - что ты имеешь ввиду под "ленивым режимом сопоставления"?

Роман Соловьев
Вот такую ситуацию

Это ж просто deterministic FSM, ему lookahead не нужен. 🤷‍♀️

Роман-Соловьев Автор вопроса
Alexander Chichigin
Это ж просто deterministic FSM, ему lookahead не н...

Нуу lookahead тоже является FSM в целом? Чекаешь текущий символ и следующий

Роман Соловьев
Нуу lookahead тоже является FSM в целом? Чекаешь т...

Тут не нужно смотреть следующий — только текущий.

Роман-Соловьев Автор вопроса

В данном случае это не важно. Как мы без lookahead узнаем, что это последний ';'

Да, всё классно. 👍

Роман Соловьев
В данном случае это не важно. Как мы без lookahead...

А нам без разницы, последний он или нет. Имеет смысл подробнее изучить, какие FSM строятся по регулярным выражениям и как они работают.

Alexander Chichigin
А нам без разницы, последний он или нет. Имеет смы...

Когда в регулярных выражениях появляются группы, и надо сохранять позиции их начала и конца, построение FSM сильно усложняется

Роман-Соловьев Автор вопроса

Если мы чтобы распарсить выражение return 125;;; по анагалогии с регексом return (.*); убедились, что ; после группы есть можем не парсить эту ; повторно

Роман Соловьев
Вот такую ситуацию

Рекомендую от регулярок отказаться, взять парсер языка, над которым проводятся операции и работать с его AST

Роман-Соловьев Автор вопроса
TOV_MULTIMASSO
Рекомендую от регулярок отказаться, взять парсер я...

регулярки не юзаю, онли парсер комбинаторы

Роман Соловьев
Вот такую ситуацию

Ещё раз - за что ты себя так не любишь, что гоняешь регулярки по исходному коду, который по определению является CFG а не регулярной грамматикой?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
15
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта