Cursus Raku / Reguliere expressies en grammatica’s / Grammatica’s / De parseboom, make en made
De matchboom
Een grammaticamatch is een boom. De bovenste match heeft een benoemd
item voor elk token dat TOP gebruikte, en die items zijn
zelf matchobjecten met hun eigen captures. Je navigeert door de boom met
dezelfde <naam>-syntaxis die je voor benoemde
captures gebruikt:
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」Elke tak is een volledig matchobject, dus je kunt hem om zijn
.Str, zijn positie of een omzetting vragen. Hier is de
waarde een reeks cijfers, dus er een echt getal van maken is slechts een
methodeaanroep:
say $m<value>.Int; # 5Bij diepere grammatica’s heeft de boom meer niveaus —
$m<a><b> bereikt een token b dat
binnen een token a gebruikt is. Zo door de boom lopen
werkt, maar voor meer dan een paar velden wordt het onhandig. Het
volgende onderwerp laat een nettere manier zien om aan elke match de
waarde te hangen die je werkelijk wilt.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← De parseboom, make en made | Quiz — De matchboom →
💪 Of ga direct naar de oefeningen in deze
sectie.