Курс по 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Коментари
Прототокенът
boolима два именувани варианта —trueиfalse.Всеки разбор избира съответстващия вариант, така че и
'true', и'false'успяват. Прототокенът е подреденият граматичен начин да се каже „една от тези именувани възможности“.'unknown'не съвпада с нито един вариант, така че прототокенът няма към какво да диспечира и разборът се проваля —False. Прото приема точно онези възможности, които сте изброили, и нищо друго.
Навигация в курса
← Булева стойност с proto | Дървото на разбора, make и made →