Curso de Raku / Expresiones regulares y gramáticas / Gramáticas / Clases de acción
Escribir una clase de acción
Una clase de acciones es una clase ordinaria con un método por cada
token de la gramática. Cada método recibe la coincidencia de ese token
como $/ y llama a make para adjuntar un valor:
exactamente lo que hacía el bloque en línea, pero mantenido aparte del
patrón:
grammar Sum {
token TOP { <a> '+' <b> }
token a { \d+ }
token b { \d+ }
}
class SumActions {
method TOP($/) { make $<a>.made + $<b>.made }
method a($/) { make $/.Int }
method b($/) { make $/.Int }
}La gramática contiene ahora solo el patrón; todo el significado vive
en SumActions. Fíjate en cómo cooperan los métodos:
a y b producen cada uno un entero, y
TOP los lee con $<a>.made y
$<b>.made y produce su suma.
Para usar la clase de acciones, pasa una instancia a
.parse con el argumento con nombre actions y
lee después el resultado de arriba con .made:
say Sum.parse('2+3', actions => SumActions.new).made; # 5Mientras la gramática analiza, el método de cada token se ejecuta
automáticamente y construye el valor de abajo arriba. El resultado de la
coincidencia de arriba es el valor que quieres: aquí, el número
5.
Práctica
Resuelve 1 cuestionario sobre el contenido de este tema.
Navegación del curso
← Clases de acción | Quiz — make →
💪 O ve directamente a los ejercicios de esta
sección.