Курс языка программирования Raku / Регулярные выражения и грамматики / Грамматики / Что такое грамматика

Ключевое слово grammar

Грамматика объединяет именованные регулярные выражения под одним именем — во многом так же, как класс объединяет методы. Объявляют её ключевым словом grammar:

grammar Greeting {
    token TOP  { 'Hello, ' <name> '!' }
    token name { \w+ }
}

Внутри грамматики каждый именованный шаблон записывается через token (разновидность регулярного выражения, которую вы вскоре изучите подробно). Один токен, по соглашению называемый TOP, служит точкой входа — он описывает вещь целиком. Здесь TOP говорит: «текст — это Hello,, затем имя, затем !», а name описывает, как выглядит имя.

Токены могут ссылаться друг на друга по имени, точно как именованные регулярные выражения из предыдущей темы. TOP использует <name>, и грамматика остаётся удобочитаемой: у каждого правила одна ясная работа.

Чтобы применить грамматику к строке, вызовите её метод .parse:

my $m = Greeting.parse('Hello, Anna!');
say $m<name>; # 「Anna」

Следующий раздел рассматривает TOP и .parse подробнее. Пока же вывод прост: грамматика — это именованное собрание именованных регулярных выражений, которые вместе описывают целый кусок структурированного текста.

Практика

Пройдите 1 тест по содержанию этой темы.

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

Тест — Именованные регулярные выражения   |   Тест — Что такое грамматика


💪 Или перейдите сразу к упражнениям этого раздела.