Cursus Raku / Reguliere expressies en grammatica’s / Grammatica’s / Grammatica’s, klassen en overerving / Exercises / Een boolean met proto
Oplossing: Een boolean met proto
Hier is een mogelijke oplossing voor de taak.
Code
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;🦋 Je kunt de broncode vinden in het bestand proto-bool.raku.
Uitvoer
True
True
FalseOpmerkingen
Het prototoken
boolheeft twee benoemde varianten,trueenfalse.Elke parse kiest de passende variant, dus slagen zowel
'true'als'false'. Een prototoken is de nette manier waarop een grammatica zegt “een van deze benoemde alternatieven”.'unknown'matcht geen van beide varianten, dus is er niets waar het prototoken naartoe kan verwijzen en mislukt de parse —False. De proto aanvaardt precies de alternatieven die je opsomt, en niets anders.