Curso de Raku / Expresiones regulares y gramáticas / Gramáticas / Gramáticas, clases y herencia / Exercises / Un booleano con proto

Solución: Un booleano con proto

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

Código

grammar Bool {
    token TOP { <bool> }

    proto token bool {*}
    token bool:sym<true>  { 'true' }
    token bool:sym<false> { 'false' }
}

say Bool.parse('true').defined;
say Bool.parse('false').defined;
say Bool.parse('unknown').defined;

🦋 Puedes encontrar el código fuente en el archivo proto-bool.raku.

Salida

True
True
False

Comentarios

  1. El proto token bool tiene dos variantes con nombre, true y false.

  2. Cada análisis elige la variante que coincide, así que funcionan tanto 'true' como 'false'. Un proto token es la manera ordenada que tiene una gramática de decir «una de estas alternativas con nombre».

  3. 'unknown' no coincide con ninguna variante, así que el proto token no tiene a quién delegar y el análisis falla: False. El proto acepta exactamente las alternativas que enumeras, y ninguna más.

Un booleano con proto   |   El árbol de análisis, make y made