Kurso de Raku / Regulesprimoj kaj gramatikoj / Gramatikoj / Krei gramatikojn / Exercises / Analizu horon
Solvo: Analizu horon
Jen ebla solvo de la tasko.
Kodo
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>;🦋 Vi povas trovi la fontkodon en la dosiero parse-a-time.raku.
Eligo
「45」Komentoj
TOPpriskribas la tutan horon kiel tri ĵetonojn apartigitajn per dupunktoj. Ĉiu parto estas\d ** 2— ekzakte du ciferoj — anstataŭ senlima\d+, do misformita valoro kiel09:30:456estas malakceptata. (Se parto povas esti sen antaŭa nulo, kiel la horo en9:30:45, skribu\d ** 1..2por permesi unu aŭ du ciferojn.)Post la analizo, ĉiu ĵetono estas nomita kapto, do la sekundo estas legata kiel
<second>sur la kongruo. Aldoni trian parton estas nur unu plia ĵetono kaj unu plia dupunkto — la gramatiko skaliĝas nature.