Corso di Raku / Espressioni regolari e grammatiche / Grammatiche / Token e regole
regex, token e rule
Le tre parole chiave si costruiscono l’una sull’altra:
regex— torna sui propri passi, come gli schemi in/ … /token— non torna sui propri passirule— cometoken, ma gli spazi nello schema sono significativi
Tornare sui propri passi (backtracking) significa che,
quando una parte successiva dello schema fallisce, il motore torna
indietro e prova una corrispondenza più corta per una parte precedente.
Un regex fa così:
my regex r { \w+ 'b' }
say so 'aaab' ~~ / <r> /; # True\w+ afferra dapprima tutto aaab, poi deve
restituire l’ultima b perché la b letterale
possa corrispondere. Un token rifiuta di restituire
alcunché:
my token t { \w+ 'b' }
say so 'aaab' ~~ / <t> /; # FalseQui \w+ prende tutto aaab, la
b letterale non trova più nulla e il token fallisce
semplicemente invece di tornare sui propri passi.
Sembra una limitazione, ma per le grammatiche è esattamente ciò che
vuoi: ogni token dovrebbe riconoscere una cosa netta e impegnarsi su
quella. Questo rende l’analisi più veloce e il risultato prevedibile.
Usa token come scelta predefinita; ricorri
a regex solo nelle rare occasioni in cui il backtracking ti
serve davvero.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Token e regole | Quiz — Backtracking →
💪 Oppure vai direttamente agli esercizi di questa
sezione.