Курс 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 тест за змістом цієї теми.

Навігація курсом

Тест — Іменовані регулярні вирази   |   Тест — Що таке граматика


💪 Або перейдіть одразу до вправ цього розділу.