Size: a a a

2021 November 19

SZ

Sergey Zhmylove in Modern::Perl
Нет
источник

SZ

Sergey Zhmylove in Modern::Perl
cacactus !
источник

SZ

Sergey Zhmylove in Modern::Perl
Начало строки: 1
c : 1->2
a : 2->3
c : 3->4
a : ?? Из 4го состояния есть только переход по 't'
источник

OP

Oleg Pronin in Modern::Perl
Потому что ваня неправильно вбил данные
источник

OP

Oleg Pronin in Modern::Perl
Бектрекинга там не будет
источник

OP

Oleg Pronin in Modern::Perl
Лучший способ увидеть то что ты хочешь это написать
(ca)+cactus
тогда будет переход назад, но стейтов ты пройдешь максимум ровно столько сколько символов в строке. Почитай теорию конечных автоматов
источник

OP

Oleg Pronin in Modern::Perl
Это детали, зависит от того как реализовать.
Есть множество алгоритмов, начиная от 256*2 байт на стейт и заканчивая mixed switch goto, который почти ничего не жрет по памяти
источник

SZ

Sergey Zhmylove in Modern::Perl
Я хочу увидеть, какому автомату соответствует эта регулярка https://t.me/modernperl/199658 и увидеть список стейтов, по которым он ходит при входной строке «cacactus» если утверждается, что он сматчит ее без бэктрекинга
источник

OP

Oleg Pronin in Modern::Perl
Щас не могу, компа нет под рукой
источник

SZ

Sergey Zhmylove in Modern::Perl
Mixed switch goto это че? Дафдевайс? Так он в общем случае жрет ровно столько, сколько я написал
источник

OP

Oleg Pronin in Modern::Perl
Бектрекинга в ДКА впринципе нет, если спецально не постараться
источник

OP

Oleg Pronin in Modern::Perl
Это switch case с предварительной проверкой диапазона и последующим goto на блок с новым стейтом. Специфика такова что почти на всех транзишенах он работает быстрее чем таблица, причем заметно, но не занимает памяти. Но подходит только для jit / compile
источник

SZ

Sergey Zhmylove in Modern::Perl
Ничего не понятно :) можешь перевести в термины gnu assembly (ну или сделать objdump -d если у тебя есть скомпиленный код)? Тогда станет гораздо яснее
источник

OP

Oleg Pronin in Modern::Perl
Открой в uri::router clib/src/panda/uri/router/RegexpParse.cc увидишь сгенеренный парсер для регэкспов по этому типу
источник

OP

Oleg Pronin in Modern::Perl
регэкспы выполняет он не этим кодом, это только парсер регэкспов шаг 1 перед составлением dfa
источник

b

basiliscos in Modern::Perl
не матчит "cacatus", такого паттерна нет
источник

OP

Oleg Pronin in Modern::Perl
источник

SZ

Sergey Zhmylove in Modern::Perl
@PerlBanjoBot echo cacactus |grep ctus && echo MATCH
источник

P

PerlBanjoBot in Modern::Perl
Bareword "ctus" not allowed while "strict subs" in use at script.pl line 9.
Execution of script.pl aborted due to compilation errors.
https://PerlBanjo.com/41ca120eba
источник

SZ

Sergey Zhmylove in Modern::Perl
Да, я уже открыл
источник