Curso de Raku / Apéndice 🆕 / Tipos y máquinas de texto / Expresiones regulares y gramáticas / Exercises / Una gramática para nombres completos

Solución: Una gramática para nombres completos

Aquí tienes una posible solución para la tarea.

Código

grammar FullName {
    token TOP   { <first> \s+ <last> }
    token first { \w+ }
    token last  { \w+ }
}

my $match = FullName.parse('Grace Hopper');

say ~$match<first>;
say ~$match<last>;

🦋 Puedes encontrar el código fuente en el archivo grammar-fullname.raku.

Salida

Grace
Hopper

Comentarios

  1. El token TOP es donde empieza el análisis; se refiere a los otros tokens por nombre con <first> y <last>, que pasan a ser claves de la coincidencia.

  2. $match<first> es un objeto de coincidencia; el ~ prefijo lo convierte en la cadena de texto simple que coincidió.

Una gramática para nombres completos   |   Una gramática que suma