Cursus Raku / Reguliere expressies en grammatica’s / Grammatica’s / Grammatica’s, klassen en overerving / Exercises / Een getal met proto
Oplossing: Een getal met proto
Hier is een mogelijke oplossing voor de taak.
Code
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;🦋 Je kunt de broncode vinden in het bestand proto-number.raku.
Uitvoer
TrueOpmerkingen
Het prototoken
numberheeft twee varianten,decenhex.Voor
0xffmatcht de variantdecalleen de voorafgaande0, waarnaxffzou overblijven; de varianthexmatcht het geheel. Longest-token matching kiest daaromhex, en de string wordt ontleed. Dezelfde grammatica aanvaardt nog steeds een gewoon decimaal getal als42.