Курс по Raku / Регулярни изрази и граматики / Граматики / Граматики, класове и наследяване / Exercises / Булева стойност с 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