Raku kurss / Regulārās izteiksmes un gramatikas / Gramatikas / Gramatiku veidošana / Exercises / Parsējiet tēmturi

Risinājums: Parsējiet tēmturi

Šeit ir iespējams risinājums uzdevumam.

Kods

grammar Hashtag {
    token TOP { '#' <tag> }
    token tag { \w+ }
}

say Hashtag.parse('#raku')<tag>;

🦋 Atrodiet programmu failā parse-hashtag.raku.

Izvade

「raku」

Komentāri

  1. TOP izraksta fiksēto #, kam seko marķieris <tag>.

  2. .parse pieprasa, lai sakristu visa virkne, un birka tad ir pieejama kā tvērums <tag>.

Cits variants

Tā vietā var ļaut tag sakrist ar visu tēmturi — # kopā ar vārdu — un vārdu sasniegt caur ligzdotu likumu word:

grammar Hashtag {
    token TOP  { <tag> }
    token tag  { '#' <word> }
    token word { \w+ }
}

say Hashtag.parse('#raku')<tag><word>;

Tas izdrukā to pašu 「raku」. Tagad <tag> satver visu #raku, bet vārds tā iekšienē ir sasniedzams kā <tag><word>. Gramatika lasās mazliet vairāk kā tā lieta, ko apraksta — tēmturis ir #, kam seko vārds, un vārds ir savs nosaukts gabals.

Kursa navigācija

Parsējiet tēmturi   |   Parsējiet laiku