Kurso de Raku / Regulesprimoj kaj gramatikoj / Gramatikoj / Krei gramatikojn / Exercises / Analizu kradvorton

Solvo: Analizu kradvorton

Jen ebla solvo de la tasko.

Kodo

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

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

🦋 Vi povas trovi la fontkodon en la dosiero parse-hashtag.raku.

Eligo

「raku」

Komentoj

  1. TOP literumas la fiksitan # sekvatan de la ĵetono <tag>.

  2. .parse postulas, ke la tuta ĉeno kongruu, kaj la etikedo tiam disponeblas kiel la kapto <tag>.

Alternativo

Vi povas anstataŭe lasi tag kongrui kun la tuta kradvorto — la # kune kun la vorto — kaj atingi la vorton tra nestita regulo word:

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

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

Ĉi tio presas la saman 「raku」. Nun <tag> kaptas la tutan #raku, dum la vorto ene de ĝi estas atingata kiel <tag><word>. La gramatiko legiĝas iom pli kiel la aĵo, kiun ĝi priskribas — kradvorto estas # sekvata de vorto, kaj la vorto estas nomita peco propranome.

Kursa navigado

Analizu kradvorton   |   Analizu horon