Cursus Raku / Reguliere expressies en grammatica’s / Grammatica’s / Tokens en regels / Exercises / Regex tegenover token
Oplossing: Regex tegenover token
Hier is een mogelijke oplossing voor de taak.
Code
my regex r { \d+ '5' }
my token t { \d+ '5' }
say so '12345' ~~ / <r> /;
say so '12345' ~~ / <t> /;🦋 Je kunt de broncode vinden in het bestand token-instead.raku.
Uitvoer
True
FalseOpmerkingen
In de
regexgrijpt\d+eerst heel12345, en krabbelt daarna terug — hij geeft de afsluitende5terug zodat de letterlijke5kan matchen. De regex slaagt dus.Het
tokenweigert iets terug te geven:\d+houdt heel12345, de letterlijke5vindt niets meer, en het token mislukt. Dit gedrag zonder terugkrabbelen is precies waaromtokende juiste standaardkeuze binnen grammatica’s is.