What the cron parser does
- Tokenize — split the string into fields by whitespace, detect 5/6/7-field shapes, and split each field into atoms (literals, ranges, lists, steps, modifiers).
- Validate — check each atom against the field range (minute 0-59, hour 0-23, etc.). Surface the offending field if anything is off.
- Compute next matches — given a start time (now, by default), compute the next N timestamps the expression fires. This is the bit a parser alone can't do — you need the matcher too.