Курс Raku / Регулярні вирази та граматики / Граматики / Граматики, класи та успадкування / Вправи / Число з proto

Розв’язання: Число з proto

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

Код

grammar Number {
    token TOP { <number> }

    proto token number {*}
    token number:sym<dec> { \d+ }
    token number:sym<hex> { '0x' <[0..9a..f]>+ }
}

say Number.parse('0xff').defined;

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

Вивід

True

Коментарі

  1. Прототокен number має два варіанти: dec та hex.

  2. Для 0xff варіант dec зіставляється лише з початковим 0, після чого залишилося б xff; варіант hex зіставляється з усім рядком. Тому за правилом найдовшого токена обирається hex, і рядок розбирається. Та сама граматика й далі приймає звичайне десяткове число на кшталт 42.

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

Число з proto   |   Булеве значення з proto