Raku-Kurs / Reguläre Ausdrücke und Grammatiken / Grammatiken / Grammatiken erstellen / Exercises / Parsen Sie eine Uhrzeit
Lösung: Parsen Sie eine Uhrzeit
Hier ist eine mögliche Lösung der Aufgabe.
Code
grammar Time {
token TOP { <hour> ':' <minute> ':' <second> }
token hour { \d ** 2 }
token minute { \d ** 2 }
token second { \d ** 2 }
}
say Time.parse('09:30:45')<second>;🦋 Du findest den Quellcode in der Datei parse-a-time.raku.
Ausgabe
「45」Kommentare
TOPbeschreibt die ganze Uhrzeit als drei durch Doppelpunkte getrennte Tokens. Jeder Teil ist\d ** 2— genau zwei Ziffern — statt eines offenen\d+, sodass ein fehlerhafter Wert wie09:30:456abgelehnt wird. (Darf ein Teil ohne führende Null stehen, etwa die Stunde in9:30:45, schreiben Sie\d ** 1..2, um eine oder zwei Ziffern zuzulassen.)Nach dem Zerlegen ist jedes Token ein benanntes Capture, die Sekunde wird also als
<second>vom Treffer gelesen. Einen dritten Teil hinzuzufügen heißt nur, ein Token und einen Doppelpunkt mehr zu schreiben — die Grammatik wächst von selbst mit.