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
TrueCommenti
Il proto token
numberha due varianti,decehex.Per
0xffla variantedecriconosce solo lo0iniziale, il che lascerebbe fuorixff; la variantehexriconosce tutto. Il riconoscimento del token più lungo sceglie perciòhex, e la stringa viene analizzata. La stessa grammatica accetta comunque un semplice decimale come42.