Size: a a a

2021 November 19

SZ

Sergey Zhmylove in Modern::Perl
А можешь, плиз, ещё одну картинку нарисовать? c(at|andy|andybar)|carton|counter-strike|cactus|ctuspok
источник

SZ

Sergey Zhmylove in Modern::Perl
Я знаю только один способ сделать их «максимально быстрыми» и тогда матч a и [abc] будет одно время кушать, потому что там не будет сравнений. Но тогда на каждый символ нужно будет хранить по sizeof(void*)*sizeof(символ)*число_возможных_значений_символа, что на 64бит и работе по char составит 2кб только переходов на один символ.
Но это будет работать медленнее кастомного энжина всё же, хехе. И это легко доказать
источник

b

basiliscos in Modern::Perl
источник

b

basiliscos in Modern::Perl
держи
источник

b

basiliscos in Modern::Perl
Можешь сам их рисовать, с помощью рагеля (обычно есть в дистрах, но на всякий http://www.colm.net/open-source/ragel/ )
источник

b

basiliscos in Modern::Perl
cat my.rl 
%%{
   machine parser;
   m := "c" ("at"|"andy"|"andybar")| "carton" |"counter-strike" |"cactus"|"ctuspok";
}%%

ragel -p -V my.rl | dot -Tpng -o /tmp/my.png
источник

YK

Yegor K in Modern::Perl
была идея сделать роутер на https://metacpan.org/pod/Inline::Filters::Ragel, но забил/отложил пока роутинг не bottleneck
источник

SZ

Sergey Zhmylove in Modern::Perl
Так, а если входная строка «cacactus» он ее сматчит?
источник

AG

Anatolia Gr in Modern::Perl
Зато у ДКА есть возможность в сложных случаях сжирать всю возможную память и уходить в свап, а потом о работе можно вообще забыть. Это кстати вполне реальный кейс знакомых мне людей.
источник

b

basiliscos in Modern::Perl
да
источник

SZ

Sergey Zhmylove in Modern::Perl
Эхх, бэктрэкать придется, а это медленно
источник

b

basiliscos in Modern::Perl
нич6 там не бэктрекается, померяйте скорости
источник

SZ

Sergey Zhmylove in Modern::Perl
Причем тут скорости? Если ты считаешь, что он сматчит то что я написал без бэктрека, тогда напиши последовательность переходов
источник

b

basiliscos in Modern::Perl
при том, что если бы был бэктрекинг, оно бы тормозило бы, а т.к.  не тормозит и работает в один проход, как уже говорилось
источник

SZ

Sergey Zhmylove in Modern::Perl
Перечень состояний для входной строки "cacactus" и этого автомата?
источник

b

basiliscos in Modern::Perl
работает просто - ходит по входящей строке в соответствующие состояния
источник

b

basiliscos in Modern::Perl
номер на графе и есть состояние
источник

SZ

Sergey Zhmylove in Modern::Perl
Перечисли мне состояния все от 1 до двойного кружочка
источник

SZ

Sergey Zhmylove in Modern::Perl
1,2,3,4, дальше куда?
источник

b

basiliscos in Modern::Perl
5, 6, 31
источник