Kurso de Raku / Regulesprimoj kaj gramatikoj / Gramatikoj / Gramatikoj, klasoj kaj heredo / Exercises / Nombro per proto

Solvo: Nombro per proto

Jen ebla solvo de la tasko.

Kodo

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;

🦋 Vi povas trovi la fontkodon en la dosiero proto-number.raku.

Eligo

True

Komentoj

  1. La proto-ĵetono number havas du variantojn, dec kaj hex.

  2. Por 0xff, la varianto dec kongruas nur kun la komenca 0, kio lasus xff restanta; la varianto hex kongruas kun la tutaĵo. Kongruigo laŭ plej longa ĵetono do elektas hex, kaj la ĉeno analiziĝas. La sama gramatiko ankoraŭ akceptas simplan dekumon kiel 42.

Kursa navigado

Nombro per proto   |   Buleo per proto