Curso de Raku / Expresiones regulares y gramáticas / Gramáticas / Gramáticas, clases y herencia / Exercises / Un número con proto
Solución: Un número con proto
Aquí tienes una posible solución para la tarea.
Código
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;🦋 Puedes encontrar el código fuente en el archivo proto-number.raku.
Salida
TrueComentarios
El proto token
numbertiene dos variantes,decyhex.Para
0xff, la variantedecempareja solo el0inicial, lo que dejaría fueraxff; la variantehexempareja el conjunto. El emparejamiento del token más largo elige por tantohexy la cadena se analiza. La misma gramática sigue aceptando un decimal simple como42.