Kurso de Raku / Regulesprimoj kaj gramatikoj / Gramatikoj / Gramatikoj, klasoj kaj heredo / Exercises / Buleo per proto
Solvo: Buleo per proto
Jen ebla solvo de la tasko.
Kodo
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;🦋 Vi povas trovi la fontkodon en la dosiero proto-bool.raku.
Eligo
True
True
FalseKomentoj
La proto-ĵetono
boolhavas du nomitajn variantojn,truekajfalse.Ĉiu analizo elektas la kongruan varianton, do kaj
'true'kaj'false'sukcesas. Proto-ĵetono estas la bonorda maniero de la gramatiko diri «unu el ĉi tiuj nomitaj alternativoj».'unknown'kongruas kun neniu varianto, do estas nenio, al kio la proto-ĵetono povus disdoni, kaj la analizo malsukcesas —False. La proto akceptas ekzakte la alternativojn, kiujn vi listigas, kaj nenion alian.