Курс по Raku / Регулярни изрази и граматики / Граматики / Токени и правила
regex, token и rule
Трите ключови думи се надграждат една върху друга:
regex— връща се назад, като шаблоните в/ … /token— не се връща назадrule— катоtoken, но интервалите в шаблона са значещи
Връщането назад означава, че когато по-късна част от шаблона
се провали, машината се връща и опитва по-късо съвпадение за по-ранна
част. regex прави точно това:
my regex r { \w+ 'b' }
say so 'aaab' ~~ / <r> /; # True\w+ първо грабва цялото aaab, а после
трябва да върне последното b, за да може буквалното
b да съвпадне. token отказва да върне каквото
и да било:
my token t { \w+ 'b' }
say so 'aaab' ~~ / <t> /; # FalseТук \w+ взема цялото aaab, за буквалното
b не остава нищо и токенът просто се проваля, вместо да се
върне назад.
Това звучи като ограничение, но за граматиките е точно каквото
трябва: всеки токен трябва да съпостави едно чисто нещо и да се придържа
към него. Това прави разбора по-бърз, а резултата — предвидим.
По подразбиране използвайте token;
посягайте към regex само в редките случаи, когато наистина
се нуждаете от връщане назад.
Практика
Направете 1 тест върху съдържанието на тази тема.
Навигация в курса
← Токени и правила | Тест — Връщане назад →
💪 Или преминете направо към упражненията в този
раздел.