Raku-Kurs / Reguläre Ausdrücke und Grammatiken / Grammatiken / Token und Regeln
regex, token und rule
Die drei Schlüsselwörter bauen aufeinander auf:
regex— weicht zurück, wie die Muster in/ … /token— weicht nicht zurückrule— wietoken, aber Leerzeichen im Muster sind bedeutsam
Zurückweichen (Backtracking) bedeutet, dass die Maschine,
wenn ein späterer Teil des Musters scheitert, zurückgeht und für einen
früheren Teil einen kürzeren Treffer versucht. Ein regex
tut das:
my regex r { \w+ 'b' }
say so 'aaab' ~~ / <r> /; # True\w+ greift sich zuerst das ganze aaab und
muss dann das letzte b wieder hergeben, damit das wörtliche
b treffen kann. Ein token weigert sich, etwas
herzugeben:
my token t { \w+ 'b' }
say so 'aaab' ~~ / <t> /; # FalseHier nimmt \w+ das ganze aaab, das
wörtliche b findet nichts mehr vor, und das Token scheitert
schlicht, statt zurückzuweichen.
Das klingt nach einer Einschränkung, doch für Grammatiken ist es
genau richtig: Jedes Token soll eine saubere Sache treffen und sich
darauf festlegen. Das macht das Zerlegen schneller und das Ergebnis
vorhersagbar. Nehmen Sie standardmäßig
token; greifen Sie nur zu regex, wenn
Sie das Zurückweichen wirklich brauchen — und das ist selten.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Kursnavigation
← Token und Regeln | Quiz — Backtracking →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.