Курс по 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— да превърне съвпадението в чистата стойност, която всъщност искате.