Курс по 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   |   Тест — Създаване на граматики


💪 Или преминете направо към упражненията в този раздел.