Курс по Raku / Приложение 🆕 / Типове и текстови машини / Регулярни изрази и граматики / Exercises / Граматика за пълни имена

Решение: Граматика за пълни имена

Ето едно възможно решение на задачата.

Код

grammar FullName {
    token TOP   { <first> \s+ <last> }
    token first { \w+ }
    token last  { \w+ }
}

my $match = FullName.parse('Grace Hopper');

say ~$match<first>;
say ~$match<last>;

🦋 Намерете програмата във файла grammar-fullname.raku.

Изход

Grace
Hopper

Коментари

  1. Токенът TOP е мястото, откъдето започва разборът; той се позовава на другите токени по име с <first> и <last>, които стават ключове върху съвпадението.

  2. $match<first> е обект на съвпадението; префиксният ~ го превръща в обикновения съвпаднал текст.

Навигация в курса

Граматика за пълни имена   |   Граматика, която събира