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

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

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

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


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

23 ответов

21 просмотр

Кажется, в 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
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта