Курс по 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Коментари
Токенът
TOPе мястото, откъдето започва разборът; той се позовава на другите токени по име с<first>и<last>, които стават ключове върху съвпадението.$match<first>е обект на съвпадението; префиксният~го превръща в обикновения съвпаднал текст.