Raku kurss / Regulārās izteiksmes un gramatikas / Gramatikas / Gramatikas, klases un mantošana / Exercises / Būla vērtība ar proto
Risinājums: Būla vērtība ar proto
Šeit ir iespējams risinājums uzdevumam.
Kods
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;🦋 Atrodiet programmu failā proto-bool.raku.
Izvade
True
True
FalseKomentāri
Proto marķierim
boolir divi nosaukti varianti —trueunfalse.Katra parsēšana izvēlas atbilstošo variantu, tāpēc izdodas gan
'true', gan'false'. Proto marķieris ir gramatikas kārtīgais veids, kā pateikt «viens no šiem nosauktajiem variantiem».'unknown'neatbilst nevienam variantam, tāpēc proto marķierim nav kam nodot vadību un parsēšana neizdodas —False. Proto pieņem tieši tos variantus, ko uzskaitāt, un neko citu.