Corso di Raku / Espressioni regolari e grammatiche / Grammatiche / Creare grammatiche / Exercises / Analizzate un orario
Soluzione: Analizzate un orario
Ecco una possibile soluzione del compito.
Codice
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>;🦋 Trova il programma nel file parse-a-time.raku.
Output
「45」Commenti
TOPdescrive tutto l’orario come tre token separati da due punti. Ogni parte è\d ** 2— esattamente due cifre — invece di un\d+senza limite, così un valore malformato come09:30:456viene rifiutato. (Se una parte può non essere riempita di zeri, come l’ora in9:30:45, scrivi\d ** 1..2per ammettere una o due cifre.)Dopo l’analisi ogni token è una cattura con nome, quindi i secondi si leggono come
<second>sulla corrispondenza. Aggiungere una terza parte è solo un token in più e un altro segno di due punti — la grammatica scala con naturalezza.