Курс Raku / Регулярні вирази та граматики / Граматики / Токени та правила
regex, token і rule
Ці три ключові слова надбудовуються одне над одним:
regex— відкочується назад, як шаблони в/ … /token— не відкочуєтьсяrule— якtoken, але пробіли в шаблоні є значущими
Відкочування (backtracking) означає, що коли пізніша частина
шаблону зазнає невдачі, рушій повертається назад і пробує коротший збіг
для попередньої частини. 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 тест за змістом цієї теми.
Навігація курсом
← Токени та правила | Тест — Повернення →
💪 Або перейдіть одразу до вправ цього
розділу.