Курс 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

Коментарі

  1. Прототокен bool має два іменовані варіанти: true та false.

  2. Кожен розбір обирає відповідний варіант, тож і 'true', і 'false' успішні. Прототокен — це охайний граматичний спосіб сказати «одна з цих іменованих альтернатив».

  3. 'unknown' не збігається з жодним варіантом, тож прототокенові немає куди диспетчеризувати, і розбір зазнає невдачі — False. Прото приймає рівно ті альтернативи, які ви перелічили, і нічого більше.

Навігація курсом

Булеве значення з proto   |   Дерево розбору, make і made