SZ
c(at|andy|andybar)|carton|counter-strike|cactus|ctuspokSize: a a a
SZ
c(at|andy|andybar)|carton|counter-strike|cactus|ctuspokSZ
a и [abc] будет одно время кушать, потому что там не будет сравнений. Но тогда на каждый символ нужно будет хранить по sizeof(void*)*sizeof(символ)*число_возможных_значений_символа, что на 64бит и работе по char составит 2кб только переходов на один символ.b
b
b
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
SZ
AG
b
SZ
b
SZ
b
SZ
b
b
SZ
SZ
b