Курс по Raku / Регулярни изрази и граматики / Граматики / Граматики, класове и наследяване / Exercises / Число с 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