Corso di Raku / Espressioni regolari e grammatiche / Grammatiche / Grammatiche, classi ed ereditarietà / Exercises / Un numero con proto

Soluzione: Un numero con proto

Ecco una possibile soluzione del compito.

Codice

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;

🦋 Trova il programma nel file proto-number.raku.

Output

True

Commenti

  1. Il proto token number ha due varianti, dec e hex.

  2. Per 0xff la variante dec riconosce solo lo 0 iniziale, il che lascerebbe fuori xff; la variante hex riconosce tutto. Il riconoscimento del token più lungo sceglie perciò hex, e la stringa viene analizzata. La stessa grammatica accetta comunque un semplice decimale come 42.

Un numero con proto   |   Un booleano con proto