Corso di Raku / Espressioni regolari e grammatiche / Grammatiche / L’albero di analisi, make e made
L’albero delle corrispondenze
Una corrispondenza di grammatica è un albero. La corrispondenza in
cima ha una voce con nome per ogni token usato da TOP, e
quelle voci sono a loro volta oggetti match con le proprie catture.
Percorri l’albero con la stessa sintassi <nome> che
usi per le catture con nome:
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」Ogni ramo è un oggetto match completo, quindi puoi chiedergli il suo
.Str, la sua posizione o convertirlo. Qui il valore è fatto
di cifre, quindi trasformarlo in un numero vero è solo una chiamata di
metodo:
say $m<value>.Int; # 5Per grammatiche più profonde l’albero ha più livelli —
$m<a><b> raggiunge un token b
usato dentro un token a. Percorrere l’albero così funziona,
ma per qualunque cosa oltre un paio di campi diventa scomodo.
L’argomento successivo mostra un modo più pulito di attaccare a ogni
corrispondenza il valore che vuoi davvero.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← L’albero di analisi, make e made | Quiz — L’albero delle corrispondenze →
💪 Oppure vai direttamente agli esercizi di questa
sezione.