Курс языка программирования 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Комментарии
Шаблон сопоставляет цифры и буквальное
kg, но встроенный блок сохраняет только$<number>.Int— целое число, без единицы.madeчитает это значение обратно: настоящую5, готовую для вычислений, а не текст5kg. В этом и состоит обычная работаmake— превратить совпадение в то чистое значение, которое вам действительно нужно.