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
False

Opmerkingen

  1. Het prototoken bool heeft twee benoemde varianten, true en false.

  2. 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”.

  3. '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.

Cursusnavigatie

Een boolean met proto   |   De parseboom, make en made