Курс языка программирования Raku / Регулярные выражения и грамматики / Грамматики / Дерево разбора, make и made / Exercises / Извлеките число

Решение: Извлеките число

Вот один из возможных вариантов решения задачи.

Код

grammar Weight {
    token TOP    { <number> 'kg' { make $<number>.Int } }
    token number { \d+ }
}

say Weight.parse('5kg').made;

🦋 Исходный код можно найти в файле extract-the-number.raku.

Вывод

5

Комментарии

  1. Шаблон сопоставляет цифры и буквальное kg, но встроенный блок сохраняет только $<number>.Int — целое число, без единицы.

  2. made читает это значение обратно: настоящую 5, готовую для вычислений, а не текст 5kg. В этом и состоит обычная работа make — превратить совпадение в то чистое значение, которое вам действительно нужно.

Навигация по курсу

Извлеките число   |   Перемножьте пару