Курс Raku / Регулярні вирази та граматики / Граматики / Граматики, класи та успадкування / Вправи / Булеве значення з proto
Розв’язання: Булеве значення з proto
Ось одне з можливих розв’язань задачі.
Код
grammar Bool {
token TOP { <bool> }
proto token bool {*}
token bool:sym<true> { 'true' }
token bool:sym<false> { 'false' }
}
say Bool.parse('true').defined;
say Bool.parse('false').defined;
say Bool.parse('unknown').defined;🦋 Знайдіть програму у файлі proto-bool.raku.
Вивід
True
True
FalseКоментарі
Прототокен
boolмає два іменовані варіанти:trueтаfalse.Кожен розбір обирає відповідний варіант, тож і
'true', і'false'успішні. Прототокен — це охайний граматичний спосіб сказати «одна з цих іменованих альтернатив».'unknown'не збігається з жодним варіантом, тож прототокенові немає куди диспетчеризувати, і розбір зазнає невдачі —False. Прото приймає рівно ті альтернативи, які ви перелічили, і нічого більше.