Curso de Raku / Expresiones regulares y gramáticas / Gramáticas / Tokens y reglas / Exercises / Una asignación con espacios
Solución: Una asignación con espacios
Aquí tienes una posible solución para la tarea.
Código
grammar Assign {
rule TOP { <key> '=' <value> }
token key { \w+ }
token value { \w+ }
}
say Assign.parse('x = 5').defined;🦋 Puedes encontrar el código fuente en el archivo spaced-assignment.raku.
Salida
TrueComentarios
Como
TOPes unarule, los espacios del patrón permiten espacio en blanco alrededor del=en la entrada.Así que
'x = 5'se analiza. Con untokenparaTOPsolo emparejaría'x=5'.
El espacio en blanco que una rule admite es
opcional, no obligatorio: el espacio significativo
empareja cero espacios con la misma naturalidad que uno, así
que la forma sin espacios también se analiza:
say Assign.parse('x=5').defined; # TrueLa rule acepta por tanto igualmente
'x = 5', 'x=5' e incluso 'x =5':
flexibilidad sin tener que detallar dónde puede o no haber un
espacio.
Navegación del curso
← Una asignación con espacios | Gramáticas, clases y herencia →