Cursus Raku / Reguliere expressies en grammatica’s / Grammatica’s / Grammatica’s maken / Exercises / Parse een hashtag
Oplossing: Parse een hashtag
Hier is een mogelijke oplossing voor de taak.
Code
grammar Hashtag {
token TOP { '#' <tag> }
token tag { \w+ }
}
say Hashtag.parse('#raku')<tag>;🦋 Je kunt de broncode vinden in het bestand parse-hashtag.raku.
Uitvoer
「raku」Opmerkingen
TOPschrijft de vaste#uit, gevolgd door het token<tag>..parseeist dat de hele string matcht, en de tag is daarna als de capture<tag>beschikbaar.
Een alternatief
Je kunt in plaats daarvan tag de hele hashtag laten
matchen — de # samen met het woord — en het woord via een
geneste regel word bereiken:
grammar Hashtag {
token TOP { <tag> }
token tag { '#' <word> }
token word { \w+ }
}
say Hashtag.parse('#raku')<tag><word>;Dit drukt dezelfde 「raku」 af. Nu captureert
<tag> de hele #raku, terwijl het woord
daarbinnen als <tag><word> bereikt wordt. De
grammatica leest iets meer als het ding dat ze beschrijft — een hashtag
is een # gevolgd door een woord, en het woord is
op zichzelf een benoemd onderdeel.