Курс Raku / Регулярні вирази та граматики / Граматики / Токени та правила / Вправи / regex проти token

Розв’язання: regex проти token

Ось одне з можливих розв’язань задачі.

Код

my regex r { \d+ '5' }
my token t { \d+ '5' }

say so '12345' ~~ / <r> /;
say so '12345' ~~ / <t> /;

🦋 Знайдіть програму у файлі token-instead.raku.

Вивід

True
False

Коментарі

  1. У regex \d+ спершу захоплює все 12345, а потім відкочується — віддає останню 5, щоб літеральна 5 могла зіставитися. Тож регекс спрацьовує.

  2. token відмовляється щось віддавати: \d+ залишає собі все 12345, літеральній 5 не залишається нічого, і токен зазнає невдачі. Саме ця поведінка без відкочування й робить token правильним типовим вибором усередині граматик.

Навігація курсом

regex проти token   |   Правило з пробілами