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

Разбор с помощью parse

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

grammar Pair {
    token TOP   { <key> '=' <value> }
    token key   { \w+ }
    token value { \w+ }
}

my $m = Pair.parse('x=5');
say $m<key>;   # 「x」
say $m<value>; # 「5」

.parse возвращает объект совпадения, когда грамматика сопоставляется со всей строкой, и Nil, когда нет. Поскольку весь ввод обязан совпасть, якоря ^ и $ не нужны — .parse добавляет это требование за вас:

say Pair.parse('x=5').defined; # True
say Pair.parse('x=').defined;  # False

Объект совпадения работает точно так же, как те, с которыми вы встречались раньше. Каждый использованный в грамматике токен становится именованным захватом, поэтому $m<key> и $m<value> дают совпавшие части. Токены вкладываются друг в друга, поэтому грамматика строит небольшое дерево совпадений — ему посвящён один из следующих разделов.

Практика

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

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

Правило TOP   |   Тест — Создание грамматик


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