Курс Raku / Регулярні вирази та граматики / Граматики / Дерево розбору, make і made
Дерево збігу
Збіг граматики — це дерево. Верхній збіг має іменований запис для
кожного токена, використаного в TOP, а ці записи самі є
об’єктами збігу з власними захопленнями. Деревом ви пересуваєтеся тим
самим синтаксисом <name>, що й для іменованих
захоплень:
grammar Pair {
token TOP { <key> '=' <value> }
token key { \w+ }
token value { \d+ }
}
my $m = Pair.parse('x=5');
say $m<key>; # 「x」
say $m<value>; # 「5」Кожна гілка є повноцінним об’єктом збігу, тож у неї можна запитати
.Str, її позицію або перетворити її. Тут значення
складається з цифр, тож перетворення на справжнє число — це просто
виклик методу:
say $m<value>.Int; # 5У глибших граматиках дерево має більше рівнів —
$m<a><b> дістає токен b,
використаний усередині токена a. Такий обхід дерева працює,
але для чогось складнішого за пару полів стає незграбним. Наступна тема
показує чистіший спосіб прикріпити до кожного збігу саме те значення,
яке вам потрібне.
Практика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← Дерево розбору, make і made | Тест — Дерево збігу →
💪 Або перейдіть одразу до вправ цього
розділу.