Курс Raku / Регулярні вирази та граматики / Граматики / Класи дій
Написання класу дій
Клас дій — це звичайний клас з одним методом на кожен токен
граматики. Кожен метод отримує збіг для свого токена як $/
і викликає make, щоб прикріпити значення, — рівно те саме,
що робив вбудований блок, але окремо від шаблону:
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 }
}Тепер граматика містить лише шаблон; уся семантика живе в
SumActions. Зверніть увагу, як методи співпрацюють:
a та b створюють кожен своє ціле число, а
TOP читає їх через $<a>.made та
$<b>.made і створює їхню суму.
Щоб скористатися класом дій, передайте його примірник у
.parse через іменований аргумент actions, а
потім прочитайте верхній результат через .made:
say Sum.parse('2+3', actions => SumActions.new).made; # 5Поки граматика розбирає текст, метод кожного токена виконується
автоматично й будує значення знизу вгору. Результат на верхньому збігу і
є потрібним вам значенням — тут це число 5.
Практика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← Класи дій | Тест — make →
💪 Або перейдіть одразу до вправ цього
розділу.