Курс по 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 | Тест — Дървото на съвпадението →
💪 Или преминете направо към упражненията в този
раздел.