Курс по Raku / Регулярни изрази и граматики / Граматики / Създаване на граматики / Exercises / Разберете хаштаг
Решение: Разберете хаштаг
Ето едно възможно решение на задачата.
Код
grammar Hashtag {
token TOP { '#' <tag> }
token tag { \w+ }
}
say Hashtag.parse('#raku')<tag>;🦋 Намерете програмата във файла parse-hashtag.raku.
Изход
「raku」Коментари
TOPизписва фиксираното#, следвано от токена<tag>..parseизисква целият низ да съвпадне, а след това тагът е достъпен като прихващането<tag>.
Друг вариант
Вместо това можете да оставите tag да съпостави целия
хаштаг — # заедно с думата — и да стигнете до думата през
вложено правило word:
grammar Hashtag {
token TOP { <tag> }
token tag { '#' <word> }
token word { \w+ }
}
say Hashtag.parse('#raku')<tag><word>;Това отпечатва същото 「raku」. Сега
<tag> прихваща целия #raku, а до думата
вътре в него се стига като <tag><word>.
Граматиката се чете малко повече като нещото, което описва — хаштагът
е #, следван от дума, а думата е самостоятелна
именувана част.